From ec1a1dda74ae96c2cfefbd46728348731a49b785 Mon Sep 17 00:00:00 2001 From: dekken Date: Wed, 28 Feb 2024 17:49:59 +0100 Subject: [PATCH] Ini --- .github/workflows/build_nix.yml | 20 + .github/workflows/build_osx.yml | 20 + .github/workflows/build_win.yml | 27 + .gitignore | 3 + .sublime-project | 17 + .sublime-project.sublime-workspace | 2776 ++++++++++++++++++++++++++++ mkn.yaml | 29 + mod.cpp | 8 + py.py | 2 + 9 files changed, 2902 insertions(+) create mode 100644 .github/workflows/build_nix.yml create mode 100644 .github/workflows/build_osx.yml create mode 100644 .github/workflows/build_win.yml create mode 100644 .gitignore create mode 100644 .sublime-project create mode 100644 .sublime-project.sublime-workspace create mode 100644 mkn.yaml create mode 100644 mod.cpp create mode 100644 py.py diff --git a/.github/workflows/build_nix.yml b/.github/workflows/build_nix.yml new file mode 100644 index 0000000..dd4cb04 --- /dev/null +++ b/.github/workflows/build_nix.yml @@ -0,0 +1,20 @@ +name: ubuntu-latest + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: "Build/Test" # contains slash so use quotes otherwise UB + run: | + curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_nix + chmod +x mkn + KLOG=3 ./mkn + python3 py.py diff --git a/.github/workflows/build_osx.yml b/.github/workflows/build_osx.yml new file mode 100644 index 0000000..86130e1 --- /dev/null +++ b/.github/workflows/build_osx.yml @@ -0,0 +1,20 @@ +name: macos-latest + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + + - name: "Build/Test" # contains slash so use quotes otherwise UB + run: | + curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_osx + chmod +x mkn + KLOG=3 ./mkn + python3 py.py diff --git a/.github/workflows/build_win.yml b/.github/workflows/build_win.yml new file mode 100644 index 0000000..3083831 --- /dev/null +++ b/.github/workflows/build_win.yml @@ -0,0 +1,27 @@ +name: windows-latest + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + + - uses: ilammy/msvc-dev-cmd@v1 + with: + arch: amd64 + + - name: "Build/Test" # contains slash so use quotes otherwise UB + shell: cmd + env: + MKN_CL_PREFERRED: 1 + run: | # /bin/link interferes with cl/link.exe + bash -c "rm /bin/link" + bash -c "curl -Lo mkn.exe https://github.com/mkn/mkn/releases/download/latest/mkn.exe" + bash -c "KLOG=3 ./mkn" + bash -c "python3 py.py" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ab8592 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +b +bin +share diff --git a/.sublime-project b/.sublime-project new file mode 100644 index 0000000..aaf0487 --- /dev/null +++ b/.sublime-project @@ -0,0 +1,17 @@ +{ + "folders" : + [ + { + "path" : "." + } + ], + "settings" : + { + "ClangFormat" : + { + "binary" : "clang-format", + "format_on_save" : true, + "style" : "file" + } + } +} \ No newline at end of file diff --git a/.sublime-project.sublime-workspace b/.sublime-project.sublime-workspace new file mode 100644 index 0000000..b43706b --- /dev/null +++ b/.sublime-project.sublime-workspace @@ -0,0 +1,2776 @@ +{ + "auto_complete": + { + "selected_items": + [ + [ + "srs", + "srcs" + ], + [ + "com", + "components_" + ], + [ + "fie", + "field_names" + ], + [ + "Fiel", + "UserField_t" + ], + [ + "P", + "ParticleArray_t" + ], + [ + "py", + "python_version_from" + ], + [ + "p", + "python_version_from" + ], + [ + "chec", + "check_build_config_is_runtime_compatible" + ], + [ + "bui", + "build_config" + ], + [ + "electrons_", + "electrons_N" + ], + [ + "ele", + "electromag" + ], + [ + "Ion", + "IonUpdater_t" + ], + [ + "V", + "View_t" + ], + [ + "Fara", + "FaradayTransformer" + ], + [ + "par", + "particles_" + ], + [ + "Par", + "Particle_t" + ], + [ + "dec", + "decltype" + ], + [ + "em", + "emplace_back" + ], + [ + "path", + "path_key" + ], + [ + "cma", + "cmake_version_from" + ], + [ + "densit", + "densityName" + ], + [ + "addModel", + "addModelView_" + ], + [ + "add", + "addModel_" + ], + [ + "elec", + "electromag" + ], + [ + "i", + "ions_" + ], + [ + "e", + "electrons" + ], + [ + "PHARE", + "PHARE_LOG_LINE_STR" + ], + [ + "VecF", + "VecFieldND" + ], + [ + "stati", + "static_assert" + ], + [ + "Da", + "DataWrangler" + ], + [ + "n", + "n_parts" + ], + [ + "Ty", + "Type" + ], + [ + "cons", + "constexpr" + ], + [ + "H", + "HybridModelView" + ], + [ + "model_", + "model_views_" + ], + [ + "AMR", + "AMR_Types" + ], + [ + "make_", + "make_shared" + ], + [ + "ph", + "physical_models" + ], + [ + "co", + "conditional_t" + ], + [ + "Particle", + "Particle_t" + ], + [ + "Elec", + "Electromag" + ], + [ + "Pat", + "PatchView_t" + ], + [ + "Hybrid", + "HybridModel_t" + ], + [ + "de", + "density" + ], + [ + "ABO", + "ABORT_IF_NOT" + ], + [ + "PH", + "PHARE_LOG_LINE_STR" + ], + [ + "EX", + "EXPECT_EQ" + ], + [ + "do", + "domain" + ], + [ + "er", + "erase_outside" + ], + [ + "PartI", + "PartIterator" + ], + [ + "PHA", + "PHARE_LOG_LINE_STR" + ], + [ + "is", + "is_in" + ], + [ + "dom", + "domainBox" + ], + [ + "tm", + "tmp_" + ], + [ + "ABORT", + "ABORT_IF_NOT" + ], + [ + "AB", + "ABORT_IF_NOT" + ], + [ + "const_", + "const_iterator" + ], + [ + "PHARE_L", + "PHARE_LOG_LINE_STR" + ], + [ + "dim", + "dimension" + ], + [ + "Con", + "ConstArray" + ], + [ + "PHARE_LOG_", + "PHARE_LOG_LINE_STR" + ], + [ + "his", + "histogram" + ], + [ + "gr", + "grow_for_ghost_box" + ], + [ + "Pa", + "Particle_t" + ], + [ + "ParticleA", + "ParticleArraySorterOperator" + ], + [ + "getCompo", + "getComponentName" + ], + [ + "set", + "setBuffer" + ], + [ + "Part", + "Particle_t" + ], + [ + "AM", + "AMRBox" + ], + [ + "El", + "Electromag" + ], + [ + "deca", + "decay_t" + ], + [ + "upda", + "update_from" + ], + [ + "Box", + "Box1D" + ], + [ + "l", + "load_balancer_name" + ], + [ + "build", + "build_elb_arn" + ], + [ + "ow", + "owner_id" + ], + [ + "wa", + "waf_client" + ], + [ + "re", + "region_name" + ], + [ + "res", + "resource_arn" + ], + [ + "web_", + "web_acl" + ], + [ + "reso", + "resource_id" + ], + [ + "assertGr", + "assertGreaterEqual" + ], + [ + "va", + "valid_keys" + ], + [ + "le", + "levels" + ], + [ + "Nd", + "NdArrayView" + ], + [ + "u", + "unique_ptr" + ], + [ + "time", + "timeStepNbr_" + ], + [ + "Gr", + "GridLayout" + ], + [ + "con", + "constexpr" + ], + [ + "Io", + "IonUpdater" + ], + [ + "make", + "make_unique" + ], + [ + "crea", + "create_data_set_per_mpi" + ], + [ + "for", + "forward_as_tuple" + ], + [ + "apl", + "b_amplitudes" + ], + [ + "test", + "test_dispersion" + ], + [ + "exi", + "exit_code" + ], + [ + "a", + "assertEqual" + ], + [ + "time_s", + "time_step_nbr" + ], + [ + "iC", + "iCell_" + ], + [ + "in", + "initializer" + ], + [ + "forw", + "forward_as_tuple" + ], + [ + "ce", + "cell_map_t" + ], + [ + "c", + "curr_pos" + ], + [ + "ParV", + "ParticleView_const" + ], + [ + "ParticleView", + "ParticleViewBase" + ], + [ + "at", + "atomic_ops" + ], + [ + "inter", + "interpOrder" + ], + [ + "Index", + "IndexWeights" + ], + [ + "flu", + "flux" + ], + [ + "paticles", + "particles" + ], + [ + "Cont", + "ContiguousParticles" + ], + [ + "Vec", + "Vector" + ], + [ + "cu", + "curr_pos" + ], + [ + "outer_", + "outer_type" + ], + [ + "C", + "ContiguousParticles" + ], + [ + "cur", + "curr_pos" + ], + [ + "abort", + "abort_if" + ], + [ + "iter", + "iterator" + ], + [ + "is_", + "is_same_v" + ], + [ + "A", + "AMRBox" + ], + [ + "th", + "thread_ranges_per_pop" + ], + [ + "view", + "views_per_patch" + ], + [ + "G", + "GridLayout" + ], + [ + "Grid", + "GridLayout" + ], + [ + "Ele", + "Electromag" + ], + [ + "n_", + "n_threads" + ], + [ + "S", + "SimulatorFixture" + ], + [ + "Const", + "ConstArray" + ] + ] + }, + "buffers": + [ + { + "file": "m/clang/llvm-mca/master/mod.cpp", + "settings": + { + "buffer_size": 3232, + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 774, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAA1wwAAAAAAADXDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICAvLyBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIC8vIG1rbjo6a3VsOjpGaWxlIHNzc3t0aGlzLT5tYWluXy5uYW1lKCl9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IGhhY2stPmhhY2tfbGluaygpOwogICAgS0xPRyhEQkcpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIQIAAAAAAAAhAgAAAAAAAAAAAAAAADwvw" + ], + [ + 778, + 1, + "toggle_comment", + { + "block": false + }, + "AgAAADULAAAAAAAANQsAAAAAAAADAAAALy8gBgsAAAAAAAAGCwAAAAAAAAMAAAAvLyA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEALAAAAAAAAEQsAAAAAAAAAAAAAAABeQA" + ], + [ + 794, + 1, + "paste", + null, + "AgAAAEULAAAAAAAAVgsAAAAAAAAAAAAAVgsAAAAAAABWCwAAAAAAABIAAAB0aGlzLT5tYWluXy5uYW1lKCk", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEULAAAAAAAAVwsAAAAAAAAAAAAAAADwvw" + ], + [ + 795, + 1, + "insert", + { + "characters": "," + }, + "AQAAAFYLAAAAAAAAVwsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYLAAAAAAAAVgsAAAAAAAAAAAAAAADwvw" + ], + [ + 796, + 1, + "insert", + { + "characters": " tmo" + }, + "BAAAAFcLAAAAAAAAWAsAAAAAAAAAAAAAWAsAAAAAAABZCwAAAAAAAAAAAABZCwAAAAAAAFoLAAAAAAAAAAAAAFoLAAAAAAAAWwsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFcLAAAAAAAAVwsAAAAAAAAAAAAAAADwvw" + ], + [ + 797, + 1, + "left_delete", + null, + "AQAAAFoLAAAAAAAAWgsAAAAAAAABAAAAbw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFsLAAAAAAAAWwsAAAAAAAAAAAAAAADwvw" + ], + [ + 798, + 1, + "insert", + { + "characters": "p" + }, + "AQAAAFoLAAAAAAAAWwsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoLAAAAAAAAWgsAAAAAAAAAAAAAAADwvw" + ], + [ + 814, + 1, + "insert", + { + "characters": "sss.mini()" + }, + "CwAAALQLAAAAAAAAtQsAAAAAAAAAAAAAtQsAAAAAAAC1CwAAAAAAABEAAABoYWNrLT5oYWNrX2xpbmsoKbULAAAAAAAAtgsAAAAAAAAAAAAAtgsAAAAAAAC3CwAAAAAAAAAAAAC3CwAAAAAAALgLAAAAAAAAAAAAALgLAAAAAAAAuQsAAAAAAAAAAAAAuQsAAAAAAAC6CwAAAAAAAAAAAAC6CwAAAAAAALsLAAAAAAAAAAAAALsLAAAAAAAAvAsAAAAAAAAAAAAAvAsAAAAAAAC9CwAAAAAAAAAAAAC9CwAAAAAAAL4LAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQLAAAAAAAAxQsAAAAAAAAAAAAAAADwvw" + ], + [ + 816, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAzgwAAAAAAADODAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIG1rbjo6a3VsOjpGaWxlIHNzc3toYWNrLT5oYWNrX2xpbmsoKSwgdG1wfTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgcCA8PCBzc3MubWluaSgpOwogICAgS0xPRyhEQkcpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL4LAAAAAAAAvgsAAAAAAAAAAAAAAADwvw" + ], + [ + 821, + 1, + "insert", + { + "characters": "\nL:" + }, + "BQAAAA8KAAAAAAAAEAoAAAAAAAAAAAAAEAoAAAAAAAAWCgAAAAAAAAAAAAAWCgAAAAAAABgKAAAAAAAAAAAAABgKAAAAAAAAGQoAAAAAAAAAAAAAGQoAAAAAAAAaCgAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA8KAAAAAAAADwoAAAAAAAD////////vfw" + ], + [ + 822, + 2, + "left_delete", + null, + "AgAAABkKAAAAAAAAGQoAAAAAAAABAAAAOhgKAAAAAAAAGAoAAAAAAAABAAAATA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABoKAAAAAAAAGgoAAAAAAAAAAAAAAADwvw" + ], + [ + 823, + 1, + "insert", + { + "characters": "KLOG)" + }, + "BQAAABgKAAAAAAAAGQoAAAAAAAAAAAAAGQoAAAAAAAAaCgAAAAAAAAAAAAAaCgAAAAAAABsKAAAAAAAAAAAAABsKAAAAAAAAHAoAAAAAAAAAAAAAHAoAAAAAAAAdCgAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABgKAAAAAAAAGAoAAAAAAAAAAAAAAADwvw" + ], + [ + 824, + 1, + "left_delete", + null, + "AQAAABwKAAAAAAAAHAoAAAAAAAABAAAAKQ", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAB0KAAAAAAAAHQoAAAAAAAAAAAAAAADwvw" + ], + [ + 825, + 1, + "insert", + { + "characters": ")INF" + }, + "BAAAABwKAAAAAAAAHQoAAAAAAAAAAAAAHQoAAAAAAAAeCgAAAAAAAAAAAAAeCgAAAAAAAB8KAAAAAAAAAAAAAB8KAAAAAAAAIAoAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABwKAAAAAAAAHAoAAAAAAAAAAAAAAADwvw" + ], + [ + 826, + 4, + "left_delete", + null, + "BAAAAB8KAAAAAAAAHwoAAAAAAAABAAAARh4KAAAAAAAAHgoAAAAAAAABAAAATh0KAAAAAAAAHQoAAAAAAAABAAAASRwKAAAAAAAAHAoAAAAAAAABAAAAKQ", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACAKAAAAAAAAIAoAAAAAAAAAAAAAAADwvw" + ], + [ + 827, + 1, + "insert", + { + "characters": "(INF);" + }, + "BgAAABwKAAAAAAAAHQoAAAAAAAAAAAAAHQoAAAAAAAAeCgAAAAAAAAAAAAAeCgAAAAAAAB8KAAAAAAAAAAAAAB8KAAAAAAAAIAoAAAAAAAAAAAAAIAoAAAAAAAAhCgAAAAAAAAAAAAAhCgAAAAAAACIKAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABwKAAAAAAAAHAoAAAAAAAAAAAAAAADwvw" + ], + [ + 829, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAA3QwAAAAAAADhDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgICAgIEtMT0coSU5GKTsKICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSktPmhhY2soKTsKICB9CgogIHZvaWQgbGluayhtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIEFwcEhhY2sgKmhhY2sgPSByZWludGVycHJldF9jYXN0PEFwcEhhY2sgKj4oJmEpOwogICAgaWYgKCFoYWNrLT52YWxpZCgpKQogICAgICByZXR1cm47CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coREJHKSA8PCBwOwogICAgcC5zdGFydCgpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACIKAAAAAAAAIgoAAAAAAAAAAAAAAADwvw" + ], + [ + 834, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAALQKAAAAAAAAtQoAAAAAAAAAAAAAtQoAAAAAAAC7CgAAAAAAAAAAAAC7CgAAAAAAAL0KAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQKAAAAAAAAtAoAAAAAAAD////////vfw" + ], + [ + 835, + 1, + "paste", + null, + "AQAAAL0KAAAAAAAAxwoAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL0KAAAAAAAAvQoAAAAAAAAAAAAAAADwvw" + ], + [ + 837, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAA7AwAAAAAAADwDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgICAgIEtMT0coSU5GKTsKICAgIEFwcEhhY2sgKmhhY2sgPSByZWludGVycHJldF9jYXN0PEFwcEhhY2sgKj4oJmEpOwogICAgaWYgKCFoYWNrLT52YWxpZCgpKQogICAgICByZXR1cm47CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coREJHKSA8PCBwOwogICAgcC5zdGFydCgpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMcKAAAAAAAAxwoAAAAAAAAAAAAAAADwvw" + ], + [ + 840, + 1, + "toggle_comment", + { + "block": false + }, + "BQAAAKYJAAAAAAAAqQkAAAAAAAAAAAAAcwkAAAAAAAB2CQAAAAAAAAAAAABZCQAAAAAAAFwJAAAAAAAAAAAAADEJAAAAAAAANAkAAAAAAAAAAAAA9QgAAAAAAAD4CAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKcJAAAAAAAAAQkAAAAAAAAAAAAAAABcQA" + ], + [ + 842, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAA+wwAAAAAAAD7DAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIG1rbjo6a3VsOjpGaWxlIHNzc3toYWNrLT5oYWNrX2xpbmsoKSwgdG1wfTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgcCA8PCBzc3MubWluaSgpOwogICAgS0xPRyhEQkcpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYJAAAAAAAABAkAAAAAAAAAAAAAAADwvw" + ], + [ + 847, + 1, + "swap_line_down", + null, + "AgAAAAgLAAAAAAAAFwsAAAAAAAAAAAAAxAoAAAAAAADECgAAAAAAAA8AAAAgICAgS0xPRyhJTkYpOwo", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANIKAAAAAAAA0goAAAAAAAAAAAAAAABcQA" + ], + [ + 860, + 1, + "insert", + { + "characters": " <<" + }, + "AwAAAAYLAAAAAAAABwsAAAAAAAAAAAAABwsAAAAAAAAICwAAAAAAAAAAAAAICwAAAAAAAAkLAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAYLAAAAAAAABgsAAAAAAAAAAAAAAADwvw" + ], + [ + 861, + 1, + "insert", + { + "characters": " " + }, + "AQAAAAkLAAAAAAAACgsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAkLAAAAAAAACQsAAAAAAAAAAAAAAADwvw" + ], + [ + 862, + 1, + "paste", + null, + "AQAAAAoLAAAAAAAAFwsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAoLAAAAAAAACgsAAAAAAAAAAAAAAADwvw" + ], + [ + 864, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAADA0AAAAAAAAMDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKERCRykgPDwgcDsKICAgIHAuc3RhcnQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABcLAAAAAAAAFwsAAAAAAAAAAAAAAADwvw" + ], + [ + 871, + 1, + "reindent", + null, + "AQAAAD8LAAAAAAAAQwsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD8LAAAAAAAAPwsAAAAAAAAAAAAAAABvQA" + ], + [ + 872, + 1, + "paste", + null, + "AQAAAEMLAAAAAAAAXgsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEMLAAAAAAAAQwsAAAAAAAAAAAAAAADwvw" + ], + [ + 874, + 1, + "insert", + { + "characters": "\n" + }, + "BAAAAD4LAAAAAAAAPwsAAAAAAAAAAAAAPwsAAAAAAABFCwAAAAAAAAAAAAA/CwAAAAAAAD8LAAAAAAAABgAAACAgICAgID8LAAAAAAAAQwsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD4LAAAAAAAAPgsAAAAAAAAAAAAAAABvQA" + ], + [ + 877, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAAGMLAAAAAAAAZAsAAAAAAAAAAAAAZAsAAAAAAABoCwAAAAAAAAAAAAA/CwAAAAAAAD8LAAAAAAAABAAAACAgICA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGMLAAAAAAAAYwsAAAAAAAD////////vfw" + ], + [ + 878, + 1, + "trim_trailing_white_space", + null, + "AQAAAGALAAAAAAAAYAsAAAAAAAAEAAAAICAgIA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGQLAAAAAAAAZAsAAAAAAAAAAAAAAADwvw" + ], + [ + 879, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAALQ0AAAAAAAAtDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKERCRykgPDwgcDsKICAgIHAuc3RhcnQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGALAAAAAAAAYAsAAAAAAAAAAAAAAADwvw" + ], + [ + 886, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAIwLAAAAAAAAjQsAAAAAAAAAAAAAjQsAAAAAAACRCwAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwLAAAAAAAAjAsAAAAAAAD////////vfw" + ], + [ + 887, + 1, + "paste", + null, + "AQAAAJELAAAAAAAArAsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJELAAAAAAAAkQsAAAAAAAAAAAAAAADwvw" + ], + [ + 890, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAANwLAAAAAAAA3QsAAAAAAAAAAAAA3QsAAAAAAADhCwAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANwLAAAAAAAA3AsAAAAAAAD////////vfw" + ], + [ + 891, + 1, + "paste", + null, + "AQAAAOELAAAAAAAA/AsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOELAAAAAAAA4QsAAAAAAAAAAAAAAADwvw" + ], + [ + 894, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAACUMAAAAAAAAJgwAAAAAAAAAAAAAJgwAAAAAAAAqDAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACUMAAAAAAAAJQwAAAAAAAD////////vfw" + ], + [ + 895, + 1, + "paste", + null, + "AQAAACoMAAAAAAAARQwAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACoMAAAAAAAAKgwAAAAAAAAAAAAAAADwvw" + ], + [ + 898, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAGkMAAAAAAAAagwAAAAAAAAAAAAAagwAAAAAAABuDAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGkMAAAAAAAAaQwAAAAAAAD////////vfw" + ], + [ + 899, + 1, + "paste", + null, + "AQAAAG4MAAAAAAAAiQwAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG4MAAAAAAAAbgwAAAAAAAAAAAAAAADwvw" + ], + [ + 905, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAMEMAAAAAAAAwgwAAAAAAAAAAAAAwgwAAAAAAADGDAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMEMAAAAAAAAwQwAAAAAAAD////////vfw" + ], + [ + 906, + 1, + "paste", + null, + "AQAAAMYMAAAAAAAA4QwAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMYMAAAAAAAAxgwAAAAAAAAAAAAAAADwvw" + ], + [ + 908, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAzQ0AAAAAAADNDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coREJHKSA8PCBwOwogICAgcC5zdGFydCgpOwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOEMAAAAAAAA4QwAAAAAAAAAAAAAAADwvw" + ], + [ + 916, + 1, + "paste", + null, + "AgAAAKgMAAAAAAAAqwwAAAAAAAAAAAAAqwwAAAAAAACrDAAAAAAAAAMAAABEQkc", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKgMAAAAAAAAqwwAAAAAAAAAAAAAAADwvw" + ], + [ + 918, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAzQ0AAAAAAADNDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coSU5GKSA8PCBwOwogICAgcC5zdGFydCgpOwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKsMAAAAAAAAqwwAAAAAAAAAAAAAAADwvw" + ], + [ + 928, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAF8LAAAAAAAAYAsAAAAAAAAAAAAAYAsAAAAAAABkCwAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8LAAAAAAAAXwsAAAAAAAD////////vfw" + ], + [ + 929, + 1, + "paste", + null, + "AQAAAGQLAAAAAAAAiwsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGQLAAAAAAAAZAsAAAAAAAAAAAAAAADwvw" + ], + [ + 934, + 1, + "insert", + { + "characters": "res" + }, + "BAAAAHILAAAAAAAAcwsAAAAAAAAAAAAAcwsAAAAAAABzCwAAAAAAAAMAAAB0bXBzCwAAAAAAAHQLAAAAAAAAAAAAAHQLAAAAAAAAdQsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHILAAAAAAAAdQsAAAAAAAAAAAAAAADwvw" + ], + [ + 937, + 1, + "insert", + { + "characters": "res" + }, + "BAAAAHcLAAAAAAAAeAsAAAAAAAAAAAAAeAsAAAAAAAB4CwAAAAAAAAMAAAB0bXB4CwAAAAAAAHkLAAAAAAAAAAAAAHkLAAAAAAAAegsAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHcLAAAAAAAAegsAAAAAAAAAAAAAAADwvw" + ], + [ + 939, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAA+Q0AAAAAAAD5DQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIG1rbjo6a3VsOjpGaWxlIHNzc3toYWNrLT5oYWNrX2xpbmsoKSwgdG1wfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgcCA8PCBzc3MubWluaSgpOwogICAgS0xPRyhJTkYpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHoLAAAAAAAAegsAAAAAAAAAAAAAAADwvw" + ], + [ + 941, + 1, + "insert", + { + "characters": "\nres.mk();" + }, + "CwAAAIsLAAAAAAAAjAsAAAAAAAAAAAAAjAsAAAAAAACQCwAAAAAAAAAAAACQCwAAAAAAAJELAAAAAAAAAAAAAJELAAAAAAAAkgsAAAAAAAAAAAAAkgsAAAAAAACTCwAAAAAAAAAAAACTCwAAAAAAAJQLAAAAAAAAAAAAAJQLAAAAAAAAlQsAAAAAAAAAAAAAlQsAAAAAAACWCwAAAAAAAAAAAACWCwAAAAAAAJcLAAAAAAAAAAAAAJcLAAAAAAAAmAsAAAAAAAAAAAAAmAsAAAAAAACZCwAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsLAAAAAAAAiwsAAAAAAAD////////vfw" + ], + [ + 944, + 1, + "insert", + { + "characters": "\n\nmkn" + }, + "CAAAABsNAAAAAAAAHA0AAAAAAAAAAAAAHA0AAAAAAAAgDQAAAAAAAAAAAAAgDQAAAAAAACENAAAAAAAAAAAAACENAAAAAAAAJQ0AAAAAAAAAAAAAHA0AAAAAAAAcDQAAAAAAAAQAAAAgICAgIQ0AAAAAAAAiDQAAAAAAAAAAAAAiDQAAAAAAACMNAAAAAAAAAAAAACMNAAAAAAAAJA0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABsNAAAAAAAAGw0AAAAAAAAAAAAAAADwvw" + ], + [ + 945, + 1, + "insert", + { + "characters": "::kuLL" + }, + "BgAAACQNAAAAAAAAJQ0AAAAAAAAAAAAAJQ0AAAAAAAAmDQAAAAAAAAAAAAAmDQAAAAAAACcNAAAAAAAAAAAAACcNAAAAAAAAKA0AAAAAAAAAAAAAKA0AAAAAAAApDQAAAAAAAAAAAAApDQAAAAAAACoNAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACQNAAAAAAAAJA0AAAAAAAAAAAAAAADwvw" + ], + [ + 946, + 2, + "left_delete", + null, + "AgAAACkNAAAAAAAAKQ0AAAAAAAABAAAATCgNAAAAAAAAKA0AAAAAAAABAAAATA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACoNAAAAAAAAKg0AAAAAAAAAAAAAAADwvw" + ], + [ + 947, + 1, + "insert", + { + "characters": "l::io::Writ" + }, + "CwAAACgNAAAAAAAAKQ0AAAAAAAAAAAAAKQ0AAAAAAAAqDQAAAAAAAAAAAAAqDQAAAAAAACsNAAAAAAAAAAAAACsNAAAAAAAALA0AAAAAAAAAAAAALA0AAAAAAAAtDQAAAAAAAAAAAAAtDQAAAAAAAC4NAAAAAAAAAAAAAC4NAAAAAAAALw0AAAAAAAAAAAAALw0AAAAAAAAwDQAAAAAAAAAAAAAwDQAAAAAAADENAAAAAAAAAAAAADENAAAAAAAAMg0AAAAAAAAAAAAAMg0AAAAAAAAzDQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACgNAAAAAAAAKA0AAAAAAAAAAAAAAADwvw" + ], + [ + 948, + 1, + "insert", + { + "characters": "er()" + }, + "BAAAADMNAAAAAAAANA0AAAAAAAAAAAAANA0AAAAAAAA1DQAAAAAAAAAAAAA1DQAAAAAAADYNAAAAAAAAAAAAADYNAAAAAAAANw0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADMNAAAAAAAAMw0AAAAAAAAAAAAAAADwvw" + ], + [ + 951, + 1, + "reindent", + null, + "AQAAABwNAAAAAAAAIA0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABwNAAAAAAAAHA0AAAAAAAAAAAAAAABpQA" + ], + [ + 952, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAACANAAAAAAAAIQ0AAAAAAAAAAAAAIQ0AAAAAAAAlDQAAAAAAAAAAAAAcDQAAAAAAABwNAAAAAAAABAAAACAgICA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACANAAAAAAAAIA0AAAAAAAAAAAAAAADwvw" + ], + [ + 960, + 1, + "paste", + null, + "AQAAACENAAAAAAAAQA0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACENAAAAAAAAIQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 962, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAARg4AAAAAAABHDgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVyKCkKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEANAAAAAAAAQA0AAAAAAAAAAAAAAADwvw" + ], + [ + 967, + 1, + "insert", + { + "characters": "outfile" + }, + "CAAAADANAAAAAAAAMQ0AAAAAAAAAAAAAMQ0AAAAAAAAxDQAAAAAAAAQAAABmaWxlMQ0AAAAAAAAyDQAAAAAAAAAAAAAyDQAAAAAAADMNAAAAAAAAAAAAADMNAAAAAAAANA0AAAAAAAAAAAAANA0AAAAAAAA1DQAAAAAAAAAAAAA1DQAAAAAAADYNAAAAAAAAAAAAADYNAAAAAAAANw0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADANAAAAAAAANA0AAAAAAAAAAAAAAADwvw" + ], + [ + 987, + 1, + "insert", + { + "characters": "!\"" + }, + "AwAAADgNAAAAAAAAOQ0AAAAAAAAAAAAAOQ0AAAAAAAA5DQAAAAAAAAgAAABmaWxlbmFtZTkNAAAAAAAAOg0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADgNAAAAAAAAQA0AAAAAAAAAAAAAAADwvw" + ], + [ + 989, + 1, + "right_delete", + null, + "AQAAADgNAAAAAAAAOA0AAAAAAAABAAAAIQ", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADgNAAAAAAAAOA0AAAAAAAAAAAAAAADwvw" + ], + [ + 991, + 1, + "paste", + null, + "AQAAADkNAAAAAAAAQQ0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADkNAAAAAAAAOQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 992, + 1, + "insert", + { + "characters": "\"" + }, + "AQAAAEENAAAAAAAAQg0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEENAAAAAAAAQQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 994, + 1, + "insert", + { + "characters": ".txt\"" + }, + "BQAAAEENAAAAAAAAQg0AAAAAAAAAAAAAQg0AAAAAAABDDQAAAAAAAAAAAABDDQAAAAAAAEQNAAAAAAAAAAAAAEQNAAAAAAAARQ0AAAAAAAAAAAAARQ0AAAAAAABGDQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEENAAAAAAAAQQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 995, + 1, + "left_delete", + null, + "AQAAAEUNAAAAAAAARQ0AAAAAAAABAAAAIg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEYNAAAAAAAARg0AAAAAAAAAAAAAAADwvw" + ], + [ + 997, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAATw4AAAAAAABPDgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCJ9OwogICAgbWtuOjprdWw6OmlvOjpXcml0ZXIoKQogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEUNAAAAAAAARQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 1002, + 1, + "insert", + { + "characters": "," + }, + "AQAAAEYNAAAAAAAARw0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEYNAAAAAAAARg0AAAAAAAAAAAAAAADwvw" + ], + [ + 1003, + 1, + "insert", + { + "characters": " res" + }, + "BAAAAEcNAAAAAAAASA0AAAAAAAAAAAAASA0AAAAAAABJDQAAAAAAAAAAAABJDQAAAAAAAEoNAAAAAAAAAAAAAEoNAAAAAAAASw0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEcNAAAAAAAARw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1008, + 1, + "insert", + { + "characters": " writer" + }, + "BwAAAGYNAAAAAAAAZw0AAAAAAAAAAAAAZw0AAAAAAABoDQAAAAAAAAAAAABoDQAAAAAAAGkNAAAAAAAAAAAAAGkNAAAAAAAAag0AAAAAAAAAAAAAag0AAAAAAABrDQAAAAAAAAAAAABrDQAAAAAAAGwNAAAAAAAAAAAAAGwNAAAAAAAAbQ0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYNAAAAAAAAZg0AAAAAAAAAAAAAAADwvw" + ], + [ + 1010, + 1, + "insert", + { + "characters": "ot" + }, + "AgAAAG4NAAAAAAAAbw0AAAAAAAAAAAAAbw0AAAAAAABwDQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG4NAAAAAAAAbg0AAAAAAAAAAAAAAADwvw" + ], + [ + 1011, + 1, + "left_delete", + null, + "AQAAAG8NAAAAAAAAbw0AAAAAAAABAAAAdA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHANAAAAAAAAcA0AAAAAAAAAAAAAAADwvw" + ], + [ + 1012, + 1, + "insert", + { + "characters": "utfile" + }, + "BgAAAG8NAAAAAAAAcA0AAAAAAAAAAAAAcA0AAAAAAABxDQAAAAAAAAAAAABxDQAAAAAAAHINAAAAAAAAAAAAAHINAAAAAAAAcw0AAAAAAAAAAAAAcw0AAAAAAAB0DQAAAAAAAAAAAAB0DQAAAAAAAHUNAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8NAAAAAAAAbw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1014, + 1, + "insert", + { + "characters": ";" + }, + "AQAAAHYNAAAAAAAAdw0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHYNAAAAAAAAdg0AAAAAAAD////////vfw" + ], + [ + 1015, + 1, + "insert", + { + "characters": "\nwriter" + }, + "CAAAAHcNAAAAAAAAeA0AAAAAAAAAAAAAeA0AAAAAAAB8DQAAAAAAAAAAAAB8DQAAAAAAAH0NAAAAAAAAAAAAAH0NAAAAAAAAfg0AAAAAAAAAAAAAfg0AAAAAAAB/DQAAAAAAAAAAAAB/DQAAAAAAAIANAAAAAAAAAAAAAIANAAAAAAAAgQ0AAAAAAAAAAAAAgQ0AAAAAAACCDQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHcNAAAAAAAAdw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1016, + 1, + "insert", + { + "characters": " <<" + }, + "AwAAAIINAAAAAAAAgw0AAAAAAAAAAAAAgw0AAAAAAACEDQAAAAAAAAAAAACEDQAAAAAAAIUNAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIINAAAAAAAAgg0AAAAAAAAAAAAAAADwvw" + ], + [ + 1017, + 1, + "insert", + { + "characters": " ;" + }, + "AgAAAIUNAAAAAAAAhg0AAAAAAAAAAAAAhg0AAAAAAACHDQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUNAAAAAAAAhQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 1019, + 1, + "insert", + { + "characters": "p.out()_" + }, + "CAAAAIYNAAAAAAAAhw0AAAAAAAAAAAAAhw0AAAAAAACIDQAAAAAAAAAAAACIDQAAAAAAAIkNAAAAAAAAAAAAAIkNAAAAAAAAig0AAAAAAAAAAAAAig0AAAAAAACLDQAAAAAAAAAAAACLDQAAAAAAAIwNAAAAAAAAAAAAAIwNAAAAAAAAjQ0AAAAAAAAAAAAAjQ0AAAAAAACODQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIYNAAAAAAAAhg0AAAAAAAAAAAAAAADwvw" + ], + [ + 1020, + 1, + "left_delete", + null, + "AQAAAI0NAAAAAAAAjQ0AAAAAAAABAAAAXw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI4NAAAAAAAAjg0AAAAAAAAAAAAAAADwvw" + ], + [ + 1022, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAeg4AAAAAAAB6DgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCIsIHJlc307CiAgICBta246Omt1bDo6aW86OldyaXRlciB3cml0ZXIob3V0ZmlsZSk7CiAgICB3cml0ZXIgPDwgcC5vdXQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0NAAAAAAAAjQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 1025, + 1, + "insert", + { + "characters": "c" + }, + "AQAAAIcNAAAAAAAAiA0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcNAAAAAAAAhw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1027, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAew4AAAAAAAB7DgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCIsIHJlc307CiAgICBta246Omt1bDo6aW86OldyaXRlciB3cml0ZXIob3V0ZmlsZSk7CiAgICB3cml0ZXIgPDwgcGMub3V0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIgNAAAAAAAAiA0AAAAAAAAAAAAAAADwvw" + ], + [ + 1029, + 1, + "insert", + { + "characters": "s" + }, + "AQAAAIwNAAAAAAAAjQ0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwNAAAAAAAAjA0AAAAAAAAAAAAAAADwvw" + ], + [ + 1031, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAfA4AAAAAAAB8DgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCIsIHJlc307CiAgICBta246Omt1bDo6aW86OldyaXRlciB3cml0ZXIob3V0ZmlsZSk7CiAgICB3cml0ZXIgPDwgcGMub3V0cygpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0NAAAAAAAAjQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 1036, + 1, + "right_delete", + null, + "AQAAAGYNAAAAAAAAZg0AAAAAAAAHAAAAIHdyaXRlcg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYNAAAAAAAAbQ0AAAAAAAAAAAAAAADwvw" + ], + [ + 1038, + 1, + "insert", + { + "characters": "{}" + }, + "AwAAAGYNAAAAAAAAZw0AAAAAAAAAAAAAZw0AAAAAAABnDQAAAAAAAAEAAAAoZw0AAAAAAABoDQAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYNAAAAAAAAZw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1040, + 1, + "cut", + null, + "AQAAAGgNAAAAAAAAaA0AAAAAAAAHAAAAb3V0ZmlsZQ", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGgNAAAAAAAAbw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1041, + 1, + "right_delete", + null, + "AQAAAGgNAAAAAAAAaA0AAAAAAAABAAAAKQ", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGgNAAAAAAAAaA0AAAAAAAAAAAAAAADwvw" + ], + [ + 1043, + 1, + "paste", + null, + "AQAAAGcNAAAAAAAAbg0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGcNAAAAAAAAZw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1050, + 1, + "cut", + null, + "AQAAAHwNAAAAAAAAfA0AAAAAAAAMAAAAPDwgcGMub3V0cygp", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHwNAAAAAAAAiA0AAAAAAAAAAAAAAADwvw" + ], + [ + 1053, + 1, + "left_delete", + null, + "AQAAAG8NAAAAAAAAbw0AAAAAAAABAAAAOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHANAAAAAAAAcA0AAAAAAAD////////vfw" + ], + [ + 1054, + 1, + "insert", + { + "characters": " " + }, + "AQAAAG8NAAAAAAAAcA0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8NAAAAAAAAbw0AAAAAAAAAAAAAAADwvw" + ], + [ + 1055, + 1, + "paste", + null, + "AQAAAHANAAAAAAAAfA0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHANAAAAAAAAcA0AAAAAAAAAAAAAAADwvw" + ], + [ + 1059, + 1, + "insert", + { + "characters": ";" + }, + "AQAAAHwNAAAAAAAAfQ0AAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHwNAAAAAAAAfA0AAAAAAAD////////vfw" + ], + [ + 1062, + 2, + "right_delete", + null, + "AgAAAH4NAAAAAAAAfg0AAAAAAAAMAAAAICAgIHdyaXRlciA7fg0AAAAAAAB+DQAAAAAAAAEAAAAK", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIoNAAAAAAAAfg0AAAAAAAAAAAAAAAAAAA" + ], + [ + 1065, + 1, + "cut", + null, + "AQAAAPwMAAAAAAAA/AwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPwMAAAAAAAAGw0AAAAAAAD////////vfw" + ], + [ + 1066, + 1, + "right_delete", + null, + "AQAAAPwMAAAAAAAA/AwAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPwMAAAAAAAA/AwAAAAAAAAAAAAAAADwvw" + ], + [ + 1069, + 1, + "cut", + null, + "AQAAANkMAAAAAAAA2QwAAAAAAAATAAAAICAgIEtMT0coSU5GKSA8PCBwOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANkMAAAAAAAA7AwAAAAAAAD////////vfw" + ], + [ + 1070, + 1, + "right_delete", + null, + "AQAAANkMAAAAAAAA2QwAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANkMAAAAAAAA2QwAAAAAAAAAAAAAAADwvw" + ], + [ + 1073, + 1, + "cut", + null, + "AQAAAKQMAAAAAAAApAwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKQMAAAAAAAAwwwAAAAAAAD////////vfw" + ], + [ + 1074, + 1, + "right_delete", + null, + "AQAAAKQMAAAAAAAApAwAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKQMAAAAAAAApAwAAAAAAAAAAAAAAADwvw" + ], + [ + 1078, + 2, + "right_delete", + null, + "AgAAAGAMAAAAAAAAYAwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpO2AMAAAAAAAAYAwAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGAMAAAAAAAAfwwAAAAAAAD////////vfw" + ], + [ + 1081, + 1, + "cut", + null, + "AQAAABcMAAAAAAAAFwwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABcMAAAAAAAANgwAAAAAAAD////////vfw" + ], + [ + 1082, + 1, + "right_delete", + null, + "AQAAABcMAAAAAAAAFwwAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABcMAAAAAAAAFwwAAAAAAAAAAAAAAADwvw" + ], + [ + 1085, + 1, + "cut", + null, + "AQAAAMcLAAAAAAAAxwsAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMcLAAAAAAAA5gsAAAAAAAD////////vfw" + ], + [ + 1086, + 1, + "right_delete", + null, + "AQAAAMcLAAAAAAAAxwsAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMcLAAAAAAAAxwsAAAAAAAAAAAAAAADwvw" + ], + [ + 1089, + 1, + "cut", + null, + "AQAAAEALAAAAAAAAQAsAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEALAAAAAAAAXwsAAAAAAAD////////vfw" + ], + [ + 1090, + 1, + "right_delete", + null, + "AQAAAEALAAAAAAAAQAsAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEALAAAAAAAAQAsAAAAAAAAAAAAAAADwvw" + ], + [ + 1093, + 1, + "cut", + null, + "AQAAAPkKAAAAAAAA+QoAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPkKAAAAAAAAGAsAAAAAAAD////////vfw" + ], + [ + 1094, + 1, + "right_delete", + null, + "AQAAAPkKAAAAAAAA+QoAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPkKAAAAAAAA+QoAAAAAAAAAAAAAAADwvw" + ], + [ + 1096, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAdQ0AAAAAAAB1DQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPkKAAAAAAAA+QoAAAAAAAAAAAAAAADwvw" + ], + [ + 1099, + 1, + "cut", + null, + "AQAAAPMIAAAAAAAA8wgAAAAAAADDAAAAICAvLyB2b2lkIGluaXQobWFpa2VuOjpBcHBsaWNhdGlvbiAmYSwgWUFNTDo6Tm9kZSBjb25zdCAmbm9kZSkKICAvLyAgICAgS1RIUk9XKHN0ZDo6ZXhjZXB0aW9uKSBvdmVycmlkZSB7CiAgLy8gICAvLyBhLmJ1aWxkRGlyKCkubWsoKTsKICAvLyAgIC8vIC8vIG1rbjo6a3VsOjpEaXJ7InJlcyIsIGEuYnVpbGREaXIoKX0ubWsoKTsKICAvLyB9", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYJAAAAAAAA8wgAAAAAAAAAAAAAAADwvw" + ], + [ + 1101, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAsAwAAAAAAACyDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgoKCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPMIAAAAAAAA8wgAAAAAAAAAAAAAAADwvw" + ], + [ + 1103, + 1, + "right_delete", + null, + "AQAAAOoIAAAAAAAA6ggAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAABIQA" + ], + [ + 1105, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAArwwAAAAAAACvDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAADwvw" + ], + [ + 1106, + 1, + "insert", + { + "characters": "\n\n" + }, + "AgAAAOoIAAAAAAAA6wgAAAAAAAAAAAAA6wgAAAAAAADsCAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAADwvw" + ], + [ + 1108, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAsAwAAAAAAACxDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKCnB1YmxpYzoKICB2b2lkIGNvbXBpbGUobWFpa2VuOjpBcHBsaWNhdGlvbiAmYSwgWUFNTDo6Tm9kZSBjb25zdCAmbm9kZSkKICAgICAgS1RIUk9XKHN0ZDo6ZXhjZXB0aW9uKSBvdmVycmlkZSB7CiAgICBLTE9HKElORik7CiAgICByZWludGVycHJldF9jYXN0PEFwcEhhY2sgKj4oJmEpLT5oYWNrKCk7CiAgfQoKICB2b2lkIGxpbmsobWFpa2VuOjpBcHBsaWNhdGlvbiAmYSwgWUFNTDo6Tm9kZSBjb25zdCAmbm9kZSkKICAgICAgS1RIUk9XKHN0ZDo6ZXhjZXB0aW9uKSBvdmVycmlkZSB7CiAgICBBcHBIYWNrICpoYWNrID0gcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIG1rbjo6a3VsOjpEaXIgcmVzeyJyZXMiLCBhLmJ1aWxkRGlyKCl9OwogICAgcmVzLm1rKCk7CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIHAuc3RhcnQoKTsKCiAgICBta246Omt1bDo6RmlsZSBvdXRmaWxleyJsbHZtLW1jYS50eHQiLCByZXN9OwogICAgbWtuOjprdWw6OmlvOjpXcml0ZXJ7b3V0ZmlsZX0gPDwgcGMub3V0cygpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOwIAAAAAAAA7AgAAAAAAAAAAAAAAADwvw" + ], + [ + 1110, + 1, + "right_delete", + null, + "AQAAAOoIAAAAAAAA6ggAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAAAAAA" + ], + [ + 1112, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAArwwAAAAAAACvDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAADwvw" + ], + [ + 1117, + 1, + "cut", + null, + "AQAAAFkJAAAAAAAAWQkAAAAAAAAOAAAAICAgIEtMT0coSU5GKTs", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGcJAAAAAAAAWQkAAAAAAAAAAAAAAAAAAA" + ], + [ + 1118, + 1, + "right_delete", + null, + "AQAAAFkJAAAAAAAAWQkAAAAAAAABAAAACg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkJAAAAAAAAWQkAAAAAAAAAAAAAAADwvw" + ], + [ + 1120, + 1, + "clang_format", + { + "whole_buffer": true + }, + "AQAAAAAAAAAAAAAAoAwAAAAAAACgDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkJAAAAAAAAWQkAAAAAAAAAAAAAAADwvw" + ], + [ + 1129, + 1, + "revert", + null, + "BAAAAAAAAAAAAAAAAAAAAAAAAACgDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9CgAAAAAAAAAAoAwAAAAAAAAAAAAAAAAAAAAAAACgDAAAAAAAAAAAAAAAAAAAAAAAAKAMAAAAAAAAAAAAAA", + "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF0KAAAAAAAAYAoAAAAAAAAAAAAAAADwvw" + ] + ] + }, + { + "contents": "#!/usr/bin/env python3\n\nimport pyphare.pharein as ph\nfrom pyphare.simulator.simulator import Simulator, startMPI\n\nimport numpy as np\n\nimport matplotlib as mpl\n\nmpl.use(\"Agg\")\n\nfrom pyphare.cpp import cpp_lib\n\ncpp = cpp_lib()\nstartMPI()\n\ntimestamps = np.arange(10, 160, 10)\n\ndef config():\n L = 0.5\n sim = ph.Simulation(\n time_step=0.005,\n final_time=150.0,\n # boundary_types=\"periodic\",\n cells=(800, 800),\n dl=(0.40, 0.40),\n refinement=\"tagging\",\n max_nbr_levels=3,\n nesting_buffer=1,\n clustering=\"tile\",\n tag_buffer=\"10\",\n hyper_resistivity=0.002,\n resistivity=0.001,\n diag_options={\n \"format\": \"phareh5\",\n \"options\": {\"dir\": \"diags/harris_rebal\", \"mode\": \"overwrite\"},\n },\n restart_options={\n \"dir\": \"checkpoints\",\n \"mode\": \"overwrite\",\n \"timestamps\": timestamps,\n # \"restart_time\": 60.0,\n },\n advanced={\n \"integrator/rebalance_coarsest\": 1,\n \"integrator/rebalance_coarsest_every\": 5000,\n \"integrator/rebalance_coarsest_on_init\": 0,\n \"integrator/flexible_load_tolerance\": 0.05,\n },\n )\n\n def density(x, y):\n Ly = sim.simulation_domain()[1]\n return (\n 0.4\n + 1.0 / np.cosh((y - Ly * 0.3) / L) ** 2\n + 1.0 / np.cosh((y - Ly * 0.7) / L) ** 2\n )\n\n def S(y, y0, l):\n return 0.5 * (1.0 + np.tanh((y - y0) / l))\n\n def by(x, y):\n Lx = sim.simulation_domain()[0]\n Ly = sim.simulation_domain()[1]\n sigma = 1.0\n dB = 0.1\n\n x0 = x - 0.5 * Lx\n y1 = y - 0.3 * Ly\n y2 = y - 0.7 * Ly\n\n dBy1 = 2 * dB * x0 * np.exp(-(x0**2 + y1**2) / (sigma) ** 2)\n dBy2 = -2 * dB * x0 * np.exp(-(x0**2 + y2**2) / (sigma) ** 2)\n\n return dBy1 + dBy2\n\n def bx(x, y):\n Lx = sim.simulation_domain()[0]\n Ly = sim.simulation_domain()[1]\n sigma = 1.0\n dB = 0.1\n\n x0 = x - 0.5 * Lx\n y1 = y - 0.3 * Ly\n y2 = y - 0.7 * Ly\n\n dBx1 = -2 * dB * y1 * np.exp(-(x0**2 + y1**2) / (sigma) ** 2)\n dBx2 = 2 * dB * y2 * np.exp(-(x0**2 + y2**2) / (sigma) ** 2)\n\n v1 = -1\n v2 = 1.0\n return v1 + (v2 - v1) * (S(y, Ly * 0.3, L) - S(y, Ly * 0.7, L)) + dBx1 + dBx2\n\n def bz(x, y):\n return 0.0\n\n def b2(x, y):\n return bx(x, y) ** 2 + by(x, y) ** 2 + bz(x, y) ** 2\n\n def T(x, y):\n K = 0.7\n temp = 1.0 / density(x, y) * (K - b2(x, y) * 0.5)\n assert np.all(temp > 0)\n return temp\n\n def vx(x, y):\n return 0.0\n\n def vy(x, y):\n return 0.0\n\n def vz(x, y):\n return 0.0\n\n def vthx(x, y):\n return np.sqrt(T(x, y))\n\n def vthy(x, y):\n return np.sqrt(T(x, y))\n\n def vthz(x, y):\n return np.sqrt(T(x, y))\n\n vvv = {\n \"vbulkx\": vx,\n \"vbulky\": vy,\n \"vbulkz\": vz,\n \"vthx\": vthx,\n \"vthy\": vthy,\n \"vthz\": vthz,\n \"nbr_part_per_cell\": 100,\n }\n\n ph.MaxwellianFluidModel(\n bx=bx,\n by=by,\n bz=bz,\n protons={\n \"charge\": 1,\n \"density\": density,\n **vvv,\n }, # , \"init\":{\"seed\":cpp.mpi_rank()+int(sys.argv[1])}}\n )\n\n ph.ElectronModel(closure=\"isothermal\", Te=0.0)\n \n #sim = ph.global_vars.sim\n #dt = 100.0 * sim.time_step\n #start_time = 0.0\n #nt = (sim.final_time - start_time) / dt + 1\n #timestamps = start_time + dt * np.arange(nt)\n print(timestamps)\n\n for quantity in [\"E\", \"B\"]:\n ph.ElectromagDiagnostics(\n quantity=quantity,\n write_timestamps=timestamps,\n compute_timestamps=timestamps,\n )\n\n for quantity in [\"density\", \"bulkVelocity\"]:\n ph.FluidDiagnostics(\n quantity=quantity,\n write_timestamps=timestamps,\n compute_timestamps=timestamps,\n )\n\n return sim\n\n\ndef main():\n Simulator(config()).run()\n\n\nif __name__ == \"__main__\":\n main()\n", + "settings": + { + "buffer_size": 4093, + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 2, + 1, + "", + null, + "AQAAAAAAAAAAAAAAzwQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 4, + 1, + "", + null, + "AQAAAM8EAAAAAAAAaAkAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADPBAAAAAAAAM8EAAAAAAAAAAAAAAAA8L8" + ], + [ + 8, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAAM4EAAAAAAAAzwQAAAAAAAAAAAAAzwQAAAAAAADTBAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADOBAAAAAAAAM4EAAAAAAAAAAAAAAAATEA" + ], + [ + 11, + 1, + "insert", + { + "characters": "\t" + }, + "AgAAANQEAAAAAAAA2AQAAAAAAAAAAAAAzwQAAAAAAADPBAAAAAAAAAQAAAAgICAg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADUBAAAAAAAANQEAAAAAAAAAAAAAAAAAAA" + ], + [ + 14, + 1, + "reindent", + null, + "AQAAAG0JAAAAAAAAdQkAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABtCQAAAAAAAG0JAAAAAAAAAAAAAAAA8L8" + ], + [ + 15, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAAHUJAAAAAAAAdgkAAAAAAAAAAAAAdgkAAAAAAAB+CQAAAAAAAAAAAABtCQAAAAAAAG0JAAAAAAAACAAAACAgICAgICAg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB1CQAAAAAAAHUJAAAAAAAAAAAAAAAA8L8" + ], + [ + 16, + 1, + "left_delete", + null, + "AQAAAHIJAAAAAAAAcgkAAAAAAAAEAAAAICAgIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB2CQAAAAAAAHYJAAAAAAAAAAAAAAAA8L8" + ], + [ + 18, + 1, + "", + null, + "AQAAAHIJAAAAAAAAOw0AAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByCQAAAAAAAHIJAAAAAAAAAAAAAAAA8L8" + ], + [ + 19, + 1, + "reindent", + null, + "AQAAADsNAAAAAAAAPw0AAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA7DQAAAAAAADsNAAAAAAAAAAAAAAAA8L8" + ], + [ + 21, + 1, + "", + null, + "AQAAAD8NAAAAAAAA+A8AAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA/DQAAAAAAAD8NAAAAAAAAAAAAAAAA8L8" + ], + [ + 24, + 1, + "insert", + { + "characters": "\n" + }, + "AgAAADoNAAAAAAAAOw0AAAAAAAAAAAAAOw0AAAAAAAA/DQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA6DQAAAAAAADoNAAAAAAAAAAAAAAAA8L8" + ] + ] + }, + { + "file": "m/clang/llvm-mca/master/bin/test/res/llvm-mca.txt", + "settings": + { + "buffer_size": 1458003, + "line_ending": "Unix" + } + }, + { + "file": "r/mkn/kul/master/inc/mkn/kul/os.hpp", + "settings": + { + "buffer_size": 11092, + "line_ending": "Unix" + } + } + ], + "build_system": "", + "build_system_choices": + [ + ], + "build_varint": "", + "command_palette": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + [ + "remove", + "Package Control: Remove Package" + ], + [ + "inst", + "Package Control: Install Package" + ], + [ + "Package Control: li", + "Package Control: List Packages" + ], + [ + "Package Control: inst", + "Package Control: Install Package" + ], + [ + "Package Control: isntall", + "Package Control: Install Package" + ], + [ + "Package Control: instal", + "Package Control: Install Package" + ], + [ + "Package Control: install", + "Package Control: Install Package" + ] + ], + "width": 0.0 + }, + "console": + { + "height": 413.0, + "history": + [ + ] + }, + "distraction_free": + { + "menu_visible": true, + "show_minimap": false, + "show_open_files": false, + "show_tabs": false, + "side_bar_visible": false, + "status_bar_visible": false + }, + "expanded_folders": + [ + "/mkn", + "/mkn/m", + "/mkn/m/clang", + "/mkn/m/clang/llvm-mca", + "/mkn/m/clang/llvm-mca/master", + "/mkn/m/clang/llvm-mca/master/bin", + "/mkn/m/clang/llvm-mca/master/bin/test", + "/mkn/m/clang/llvm-mca/master/bin/test/res", + "/mkn/m/clang/llvm-mca/master/bin/test/tmp", + "/mkn/m/clang/llvm-optrec", + "/mkn/m/clang/llvm-optrec/master", + "/mkn/m/clang/llvm-optrec/master/.github", + "/mkn/m/clang/llvm-optrec/master/.github/workflows", + "/mkn/m/lang", + "/mkn/m/lang/pybind11", + "/mkn/m/lang/pybind11/master", + "/mkn/m/lang/python3", + "/mkn/m/lang/python3/master", + "/mkn/m/lang/swig", + "/mkn/m/lang/swig/master" + ], + "file_history": + [ + "/mkn/r/mkn/kul/master/inc/mkn/kul/proc.hpp", + "/mkn/m/clang/llvm-mca/master/bin/build/obj/mod.s", + "/mkn/m/clang/llvm-mca/master/bin/test/res/180b2d7fa83bda1f_test.cpp.s", + "/mkn/m/clang/llvm-mca/master/test.cpp", + "/mkn/m/clang/llvm-optrec/master/test.cpp", + "/mkn/m/clang/llvm-optrec/master/.github/workflows/build_nix.yml", + "/mkn/m/clang/llvm-optrec/master/.gitignore", + "/mkn/m/clang/llvm-mca/master/mkn.yml", + "/mkn/m/clang/llvm-optrec/master/mkn.yml", + "/mkn/m/clang/llvm-optrec/master/mod.cpp", + "/mkn/r/mkn/kul/master/inc/mkn/kul/os.hpp", + "/mkn/m/clang/llvm-mca/master/test.s.txt", + "/mkn/m/lang/pybind11/master/test.cpp", + "/mkn/m/clang/llvm-mca/master/mod.cpp", + "/mkn/m/clang/llvm-optrec/test.cpp", + "/home/p/git/phare/master/tools/bench/core/numerics/pusher/CMakeLists.txt", + "/home/p/git/phare/master/tools/bench/core/numerics/pusher/pusher.cpp", + "/home/p/git/phare/master/src/core/def/phare_mpi.hpp", + "/home/p/git/phare/master/src/core/utilities/cellmap.hpp", + "/home/p/git/phare/master/tools/bench/core/numerics/pusher/push_raw_use.cpp", + "/home/p/git/phare/master/tools/bench/core/numerics/pusher/push_raw_gen.cpp", + "/home/p/git/phare/master/tools/mkn/bench.sh", + "/home/p/git/phare/master/tools/cmake.sh", + "/home/p/git/phare/master/src/simulator/simulator.hpp", + "/home/p/git/phare/master/src/core/utilities/types.hpp", + "/home/p/git/phare/master/src/hdf5/detail/h5/h5_file.hpp", + "/home/p/git/phare/master/src/diagnostic/detail/h5typewriter.hpp", + "/home/p/git/phare/master/src/core/utilities/mpi_utils.hpp", + "/home/p/git/phare/master/subprojects/cppdict/include/dict.hpp", + "/home/p/git/phare/master/src/core/numerics/interpolator/interpolator.hpp", + "/home/p/git/phare/master/src/amr/resources_manager/resources_manager.hpp", + "/home/p/git/phare/master/build/tests/diagnostic/job_1d.py", + "/home/p/git/phare/master/tests/amr/messengers/test_messengers.cpp", + "/home/p/git/phare/master/src/amr/physical_models/physical_model.hpp", + "/home/p/git/phare/master/src/amr/level_initializer/hybrid_level_initializer.hpp", + "/home/p/git/phare/master/src/amr/physical_models/mhd_model.hpp", + "/home/p/git/phare/master/src/phare_core.hpp", + "/home/p/git/phare/master/src/phare_solver.hpp", + "/home/p/git/phare/master/src/amr/messengers/mhd_hybrid_messenger_strategy.hpp", + "/home/p/git/phare/master/src/core/numerics/faraday/faraday.hpp", + "/home/p/git/phare/master/src/core/numerics/ohm/ohm.hpp", + "/home/p/git/phare/master/src/core/numerics/ampere/ampere.hpp", + "/home/p/git/phare/master/src/core/data/grid/grid.hpp", + "/home/p/git/phare/master/src/core/data/ndarray/ndarray_vector.hpp", + "/home/p/git/phare/master/src/amr/solvers/solver_ppc_model_view.hpp", + "/home/p/git/phare/master/src/amr/messengers/mhd_messenger.hpp", + "/home/p/git/phare/master/src/amr/solvers/solver_ppc.hpp", + "/home/p/git/phare/master/src/amr/solvers/solver_mhd.hpp", + "/home/p/git/phare/master/src/amr/physical_models/hybrid_model.hpp", + "/home/p/git/phare/master/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp", + "/home/p/git/phare/master/src/amr/resources_manager/particle_resource.hpp", + "/home/p/git/phare/master/src/amr/resources_manager/field_resource.hpp", + "/home/p/git/phare/master/src/amr/tagging/hybrid_tagger.hpp", + "/home/p/git/phare/master/.cmake.sh.out", + "/home/p/git/phare/master/src/core/data/electrons/electrons.hpp", + "/home/p/git/phare/master/src/core/data/field/field.hpp", + "/home/p/git/phare/master/src/core/data/vecfield/vecfield.hpp", + "/home/p/git/phare/master/tests/core/data/vecfield/test_main.cpp", + "/home/p/git/phare/master/src/amr/level_initializer/level_initializer.hpp", + "/home/p/git/phare/master/tests/core/data/ions/test_ions.cpp", + "/home/p/git/phare/master/tests/core/numerics/faraday/test_main.cpp", + "/home/p/git/phare/master/tests/core/data/electrons/test_electrons.cpp", + "/home/p/git/phare/master/tests/amr/data/field/time_interpolate/test_field_data_time_interpolate.cpp", + "/home/p/git/phare/master/tests/core/data/field/test_field.hpp", + "/home/p/git/phare/master/tests/core/numerics/interpolator/test_main.cpp", + "/home/p/git/phare/master/res/cmake/options.cmake", + "/home/p/git/phare/master/tests/amr/resources_manager/test_resources_manager.hpp", + "/home/p/git/phare/master/.phlop/build/tests/core/data/vecfield.stdout", + "/home/p/git/phare/master/tests/amr/models/test_models.cpp", + "/home/p/git/phare/master/tests/amr/resources_manager/test_resources_manager.cpp", + "/home/p/git/phare/master/src/amr/data/field/time_interpolate/field_linear_time_interpolate.hpp", + "/home/p/git/phare/master/src/core/data/ions/ions.hpp", + "/home/p/git/phare/master/tests/core/numerics/ion_updater/test_updater.cpp", + "/home/p/git/phare/master/tests/core/numerics/ampere/test_main.cpp", + "/home/p/git/phare/master/tests/core/numerics/ohm/test_main.cpp", + "/home/p/git/phare/master/src/core/data/ions/ion_population/ion_population.hpp", + "/home/p/git/phare/master/.coderabbit.yaml", + "/home/p/git/phare/master/src/amr/data/field/field_data.hpp", + "/home/p/git/phare/master/src/amr/data/particles/particles_variable.hpp", + "/home/p/git/phare/master/src/core/data/particles/particle_array.hpp", + "/home/p/git/phare/master/src/diagnostic/detail/types/particle.hpp", + "/home/p/.conkyrc", + "/home/p/git/phare/master/src/core/data/particles/particle.hpp", + "/home/p/git/phare/master/res/cmake_pgo_go.sh", + "/home/p/git/phare/master/tests/simulator/config.py", + "/home/p/git/phare/master/tools/bench/core/bench.hpp", + "/home/p/git/phare/master/res/cmake/def.cmake", + "/home/p/git/phare/master/tests/functional/harris/harris_2d_2.py", + "/home/p/git/phare/master/pyphare/pyphare/pharein/maxwellian_fluid_model.py", + "/home/p/git/phare/master/pyphare/pyphare/core/phare_utilities.py", + "/home/p/git/phare/master/tests/functional/harris/harris_2d_2_small.py", + "/home/p/git/phare/master/tests/functional/harris/harris_2d_2.py.no", + "/media/p/2TB/sort/cake.txt", + "/media/p/2TB/sort/rocm.gpg.key", + "/home/p/.cache/.fr-Y80SF2/aptoide/aptoide.py", + "/media/p/2TB/sort/aa29d2065d955a75d198e83fedf52b7ec4664e09_build.log", + "/media/p/2TB/sort/dekken_play_32.log", + "/media/p/2TB/sort/CMakeLists.txt", + "/media/p/2TB/sort/message.txt", + "/media/p/2TB/sort/glog", + "/media/p/2TB/sort/py3_diagnostics", + "/media/p/2TB/sort/recovery-key.txt", + "/media/p/2TB/sort/test-shock", + "/media/p/2TB/sort/uptime-source-ips.txt", + "/media/p/2TB/sort/PhilipDeegan_scoring (1).txt", + "/home/p/git/phare/master/.github/workflows/codeql.yml", + "/home/p/git/phare/master/tools/bench/core/numerics/pusher/push_bench.hpp", + "/home/p/git/phare/master/src/core/CMakeLists.txt", + "/home/p/git/phare/master/.github/workflows/cmake_ubuntu.yml", + "/home/p/git/phare/master/CMakeLists.txt", + "/home/p/git/phare/master/tools/bench/core/numerics/ion_updater/CMakeLists.txt", + "/home/p/git/phare/master/tools/bench/core/numerics/interpolator/CMakeLists.txt", + "/home/p/git/phare/master/tools/bench/hi5/write_particles.cpp", + "/home/p/git/phare/master/src/core/utilities/point/point.hpp", + "/home/p/git/phare/master/src/amr/utilities/box/amr_box.hpp", + "/home/p/git/phare/master/tools/bench/amr/data/particles/copy_data.cpp", + "/home/p/git/phare/master/tools/bench/core/data/particles/interop.cpp", + "/home/p/git/phare/master/res/cmake/dep/highfive.cmake", + "/home/p/git/phare/master/res/cmake/dep.cmake", + "/home/p/git/phare/master/res/cmake/dep/samrai.cmake", + "/home/p/git/phare/master/res/cmake/bench.cmake", + "/home/p/git/phare/master/src/simulator/CMakeLists.txt", + "/home/p/git/phare/master/src/core/utilities/box/box.hpp", + "/home/p/git/phare/master/tools/bench/core/numerics/pusher/pusher_instructions.cpp", + "/home/p/git/phare/master/build/CMakeCache.txt", + "/home/p/git/phare/master/src/hdf5/detail/hdf5_utils.hpp", + "/home/p/git/phare/master/tools/bench/core/numerics/interpolator/bench_main.cpp", + "/home/p/git/phare/master/tools/bench/core/numerics/ion_updater/bench_ion_updater.cpp" + ], + "find": + { + "height": 28.0 + }, + "find_in_files": + { + "height": 104.0, + "where_history": + [ + ] + }, + "find_state": + { + "case_sensitive": true, + "find_history": + [ + "LLVM_OptRec_Module", + "run" + ], + "highlight": true, + "in_selection": false, + "preserve_case": false, + "regex": false, + "replace_history": + [ + "LLVM_MCA_Module" + ], + "reverse": false, + "scrollbar_highlights": true, + "show_context": false, + "use_buffer2": true, + "use_gitignore": false, + "whole_word": false, + "wrap": true + }, + "groups": + [ + { + "sheets": + [ + { + "buffer": 0, + "file": "m/clang/llvm-mca/master/mod.cpp", + "semi_transient": false, + "settings": + { + "buffer_size": 3232, + "regions": + { + }, + "selection": + [ + [ + 2653, + 2656 + ] + ], + "settings": + { + "syntax": "Packages/C++/C++.sublime-syntax", + "tab_size": 2, + "tabs_extra_last_activated": 1707127740.01, + "tabs_extra_last_activated_sheet_index": 0, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 531.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 1, + "selected": true, + "semi_transient": false, + "settings": + { + "buffer_size": 4093, + "regions": + { + }, + "selection": + [ + [ + 0, + 4093 + ] + ], + "settings": + { + "syntax": "Packages/Python/Python.sublime-syntax", + "tab_size": 4, + "tabs_extra_last_activated": 1707128158.41, + "tabs_extra_last_activated_sheet_index": 1, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 2, + "file": "m/clang/llvm-mca/master/bin/test/res/llvm-mca.txt", + "semi_transient": true, + "settings": + { + "buffer_size": 1458003, + "regions": + { + }, + "selection": + [ + [ + 0, + 0 + ] + ], + "settings": + { + "syntax": "Packages/Text/Plain text.tmLanguage", + "tabs_extra_last_activated": 1707078432.53, + "tabs_extra_last_activated_sheet_index": 1 + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 2, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 3, + "file": "r/mkn/kul/master/inc/mkn/kul/os.hpp", + "semi_transient": false, + "settings": + { + "buffer_size": 11092, + "regions": + { + }, + "selection": + [ + [ + 10207, + 10207 + ] + ], + "settings": + { + "syntax": "Packages/C++/C++.sublime-syntax", + "tab_size": 2, + "tabs_extra_last_activated": 1707076371.39, + "tabs_extra_last_activated_sheet_index": 1, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 5538.0, + "zoom_level": 1.0 + }, + "stack_index": 3, + "stack_multiselect": false, + "type": "text" + } + ] + } + ], + "incremental_find": + { + "height": 28.0 + }, + "input": + { + "height": 40.0 + }, + "layout": + { + "cells": + [ + [ + 0, + 0, + 1, + 1 + ] + ], + "cols": + [ + 0.0, + 1.0 + ], + "rows": + [ + 0.0, + 1.0 + ] + }, + "menu_visible": true, + "output.find_results": + { + "height": 0.0 + }, + "pinned_build_system": "", + "project": ".sublime-project", + "replace": + { + "height": 52.0 + }, + "save_all_on_build": true, + "select_file": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + [ + "proc.hpp", + "r/mkn/kul/master/inc/mkn/kul/proc.hpp" + ], + [ + "os.hpp", + "r/mkn/kul/master/inc/mkn/kul/os.hpp" + ], + [ + "tools/bench/core/numerics/pusher", + "master/tools/bench/core/numerics/pusher/CMakeLists.txt" + ], + [ + "src/hdf5/detail/h5/h5_file.hpp", + "master/src/hdf5/detail/h5/h5_file.hpp" + ], + [ + "sim", + "master/src/simulator/simulator.hpp" + ], + [ + "src/diagnostic/detail/h5typewriter.hpp", + "master/src/diagnostic/detail/h5typewriter.hpp" + ], + [ + "src/core/utilities/mpi_utils.hpp", + "master/src/core/utilities/mpi_utils.hpp" + ], + [ + "dict.h", + "master/subprojects/cppdict/include/dict.hpp" + ], + [ + "cma", + "master/tools/cmake.sh" + ], + [ + "inter", + "master/src/core/numerics/interpolator/interpolator.hpp" + ], + [ + "ele", + "master/src/core/data/electrons/electrons.hpp" + ], + [ + "src/core/numerics/ampere/ampere.hpp", + "master/src/core/numerics/ampere/ampere.hpp" + ], + [ + "grid", + "master/src/core/data/grid/grid.hpp" + ], + [ + "src/core/data/ndarray/ndarray_vector.hpp", + "master/src/core/data/ndarray/ndarray_vector.hpp" + ], + [ + "src/amr/solvers/solver_ppc_model_view.hpp", + "master/src/amr/solvers/solver_ppc_model_view.hpp" + ], + [ + "hybmo", + "master/src/amr/physical_models/hybrid_model.hpp" + ], + [ + "cmake.s", + "master/tools/cmake.sh" + ], + [ + "cmake", + "master/tools/cmake.sh" + ], + [ + "solvermo", + "master/src/amr/solvers/solver_ppc_model_view.hpp" + ], + [ + "hymo", + "master/src/amr/physical_models/hybrid_model.hpp" + ], + [ + "field", + "master/src/core/data/field/field.hpp" + ], + [ + "ve", + "master/src/core/data/vecfield/vecfield.hpp" + ], + [ + "core/data/vecfield/te", + "master/tests/core/data/vecfield/test_main.cpp" + ], + [ + "core/data/vecfield", + "master/.phlop/build/tests/core/data/vecfield.stdout" + ], + [ + "vec", + "master/src/core/data/vecfield/vecfield.hpp" + ], + [ + "res", + "master/src/amr/resources_manager/resources_manager.hpp" + ], + [ + "options.c", + "master/res/cmake/options.cmake" + ], + [ + "vecf", + "master/src/core/data/vecfield/vecfield.hpp" + ], + [ + "interpolator/test_main.cpp", + "master/tests/core/numerics/interpolator/test_main.cpp" + ], + [ + "test_field_data_time_interpolate.cpp", + "master/tests/amr/data/field/time_interpolate/test_field_data_time_interpolate.cpp" + ], + [ + "ions/test_ions.cpp", + "master/tests/core/data/ions/test_ions.cpp" + ], + [ + "ndar", + "master/src/core/data/ndarray/ndarray_vector.hpp" + ], + [ + "field_re", + "master/src/amr/resources_manager/field_resource.hpp" + ], + [ + "field.", + "master/src/core/data/field/field.hpp" + ], + [ + "field.hp", + "master/src/core/data/field/field.hpp" + ], + [ + "fied", + "master/src/amr/data/field/field_data.hpp" + ], + [ + "vecfield/test_main.cpp", + "master/tests/core/data/vecfield/test_main.cpp" + ], + [ + "grid.hpp", + "master/src/core/data/grid/grid.hpp" + ], + [ + "electrons", + "master/src/core/data/electrons/electrons.hpp" + ], + [ + "resou", + "master/src/amr/resources_manager/resources_manager.hpp" + ], + [ + "types", + "master/src/core/utilities/types.hpp" + ], + [ + "ion_", + "master/src/core/data/ions/ion_population/ion_population.hpp" + ], + [ + "field_data", + "master/src/amr/data/field/field_data.hpp" + ], + [ + "particles_variable", + "master/src/amr/data/particles/particles_variable.hpp" + ], + [ + "reso", + "master/src/amr/resources_manager/resources_manager.hpp" + ], + [ + "par_ar", + "master/src/core/data/particles/particle_array.hpp" + ], + [ + "par.hpp", + "master/src/diagnostic/detail/types/particle.hpp" + ], + [ + "phare_utilities", + "master/pyphare/pyphare/core/phare_utilities.py" + ], + [ + "max", + "master/pyphare/pyphare/pharein/maxwellian_fluid_model.py" + ], + [ + "def.c", + "master/res/cmake/def.cmake" + ], + [ + "bench.hpp", + "master/tools/bench/core/bench.hpp" + ], + [ + "bench.cma", + "master/res/cmake/bench.cmake" + ], + [ + "tools/bench/core/numerics/pusher/CMakeLists.txt", + "master/tools/bench/core/numerics/pusher/CMakeLists.txt" + ], + [ + "src/core/CMakeLists.txt", + "master/src/core/CMakeLists.txt" + ], + [ + "point", + "master/src/core/utilities/point/point.hpp" + ], + [ + "amr_box.hpp", + "master/src/amr/utilities/box/amr_box.hpp" + ], + [ + "box.hpp", + "master/src/core/utilities/box/box.hpp" + ], + [ + "parti", + "master/src/core/data/particles/particle_array.hpp" + ], + [ + "h5_file", + "master/src/hdf5/detail/h5/h5_file.hpp" + ], + [ + "hdf5/detail/hdf5_utils.hpp", + "master/src/hdf5/detail/hdf5_utils.hpp" + ], + [ + "cmake.sh", + "master/tools/cmake.sh" + ], + [ + "tests/core/numerics/interpolator/test_main.cpp", + "master/tests/core/numerics/interpolator/test_main.cpp" + ], + [ + "tools/bench/core/bench.hpp", + "master/tools/bench/core/bench.hpp" + ], + [ + "src/core/data/particles/particle_array.hpp", + "master/src/core/data/particles/particle_array.hpp" + ], + [ + "ion_ion", + "master/tests/functional/ionIonBeam/ion_ion_beam1d.py" + ], + [ + "tagged", + "master/tests/functional/tdtagged/td1dtagged.py" + ], + [ + "op", + "master/res/cmake/options.cmake" + ], + [ + "maxwellian_fluid_model.py", + "master/pyphare/pyphare/pharein/maxwellian_fluid_model.py" + ], + [ + "harris_2d_2.py", + "master/tests/functional/harris/harris_2d_2.py" + ], + [ + "phare_ut", + "master/pyphare/pyphare/core/phare_utilities.py" + ], + [ + "config", + "master/tools/config/config.py" + ], + [ + "simu", + "master/pyphare/pyphare/pharein/simulation.py" + ], + [ + "updater", + "master/src/core/numerics/ion_updater/ion_updater.hpp" + ], + [ + "index.cpp", + "master/src/core/utilities/index/index.cpp" + ], + [ + "particlarr", + "master/src/core/data/particles/particle_array.hpp" + ], + [ + "particles/particle_packer.hpp", + "master/src/core/data/particles/particle_packer.hpp" + ], + [ + "def.cma", + "master/res/cmake/def.cmake" + ], + [ + "options", + "master/res/cmake/options.cmake" + ], + [ + "def", + "master/src/core/def.hpp" + ], + [ + "updat", + "master/src/core/numerics/ion_updater/ion_updater.hpp" + ], + [ + "bori", + "master/src/core/numerics/pusher/boris.hpp" + ], + [ + "bor", + "master/src/core/numerics/pusher/boris.hpp" + ], + [ + "elec", + "master/src/core/data/electrons/electrons.hpp" + ], + [ + "ohm", + "master/src/core/numerics/ohm/ohm.hpp" + ], + [ + "amper", + "master/src/core/numerics/ampere/ampere.hpp" + ], + [ + "solver", + "master/src/amr/solvers/solver_ppc_model_view.hpp" + ], + [ + "diag", + "master/pyphare/pyphare/pharein/diagnostics.py" + ], + [ + "field_da", + "master/src/amr/data/field/field_data.hpp" + ], + [ + "cell", + "master/src/core/utilities/cellmap.hpp" + ], + [ + "boris", + "master/src/core/numerics/pusher/boris.hpp" + ], + [ + "par", + "master/src/core/data/particles/particle_array.hpp" + ], + [ + "ions", + "master/src/core/data/ions/ions.hpp" + ], + [ + "ref", + "master/src/amr/messengers/refiner.hpp" + ], + [ + "hyh", + "master/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp" + ], + [ + "fara", + "master/src/core/numerics/faraday/faraday.hpp" + ], + [ + "ion_pop", + "master/src/core/data/ions/ion_population/ion_population.hpp" + ], + [ + "solvers/solver.hpp", + "master/src/amr/solvers/solver.hpp" + ], + [ + "state", + "master/src/core/models/hybrid_state.hpp" + ], + [ + "HybridModel", + "master/src/amr/physical_models/hybrid_model.hpp" + ], + [ + "hybrmo", + "master/src/amr/physical_models/hybrid_model.hpp" + ], + [ + "modelv", + "master/src/amr/solvers/solver_ppc_model_view.hpp" + ], + [ + "tests/simulator/test_restarts.py", + "master/tests/simulator/test_restarts.py" + ], + [ + "logg", + "master/src/core/logger.hpp" + ], + [ + "mu", + "master/src/amr/multiphysics_integrator.hpp" + ], + [ + "parar", + "master/src/core/data/particles/particle_array.hpp" + ], + [ + "range", + "master/src/core/utilities/range/range.hpp" + ], + [ + "range.", + "master/src/core/utilities/range/range.hpp" + ], + [ + "phare_co", + "master/src/phare_core.hpp" + ], + [ + "ion_up", + "master/src/core/numerics/ion_updater/ion_updater.hpp" + ], + [ + "cellma", + "master/src/core/utilities/cellmap.hpp" + ], + [ + "tools/bench/core/data/particles/mapping/bench.cpp", + "master/tools/bench/core/data/particles/mapping/bench.cpp" + ], + [ + "solvvermode", + "master/src/amr/solvers/solver_ppc_model_view.hpp" + ], + [ + "gen_sys", + "master/src/core/def/_gen_sys.hpp" + ], + [ + "", + "master/pyphare/pyphare/pharein/simulation.py" + ], + [ + "high", + "master/res/cmake/dep/highfive.cmake" + ], + [ + "highfi", + "master/build/subprojects/highfive/HighFiveConfig.cmake" + ], + [ + "src/core/def", + "master/src/core/def.hpp" + ], + [ + "mult", + "master/src/amr/multiphysics_integrator.hpp" + ], + [ + "ion", + "master/src/core/numerics/ion_updater/ion_updater.hpp" + ], + [ + "solver_pp", + "master/src/amr/solvers/solver_ppc.hpp" + ], + [ + "mul", + "master/src/amr/multiphysics_integrator.hpp" + ], + [ + "def.cm", + "master/res/cmake/def.cmake" + ], + [ + "/test_grid.hpp", + "master/tests/core/data/grid/test_grid.hpp" + ], + [ + "test_e", + "master/tests/core/data/electrons/test_electrons.cpp" + ], + [ + "test_ele", + "master/tests/core/data/electrons/test_electrons.cpp" + ], + [ + "src/core/data/electrons/electrons.hpp", + "master/src/core/data/electrons/electrons.hpp" + ], + [ + "Database", + "samrai/master/include/SAMRAI/tbox/Database.h" + ], + [ + "database.h", + "samrai/master/include/SAMRAI/tbox/Database.h" + ] + ], + "width": 0.0 + }, + "select_project": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 0.0 + }, + "select_symbol": + { + "height": 344.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 592.0 + }, + "selected_group": 0, + "settings": + { + }, + "show_minimap": true, + "show_open_files": false, + "show_tabs": true, + "side_bar_visible": true, + "side_bar_width": 362.0, + "status_bar_visible": true, + "template_settings": + { + } +} diff --git a/mkn.yaml b/mkn.yaml new file mode 100644 index 0000000..91c6fae --- /dev/null +++ b/mkn.yaml @@ -0,0 +1,29 @@ +#! clean build -p mod -dO + +name: lang.nanobind +parent: lib + +profile: +- name: base + if_arg: + nix: -fPIC + +- name: lib + parent: base + inc: | + b/include + b/ext/robin_map/include, 0 + src: b/src + mod: lang.python3 + mode: static + sub: nanobind&b(https://github.com/wjakob/nanobind) + +- name: mod + parent: base + src: mod.cpp + self: lib + mode: none + mod: lang.python3 lang.pybind11 + out: my_ext + install: . + env: MKN_LIB_LINK_LIB=1 diff --git a/mod.cpp b/mod.cpp new file mode 100644 index 0000000..c3bd2a4 --- /dev/null +++ b/mod.cpp @@ -0,0 +1,8 @@ +#include + +int add(int a, int b) { return a + b; } + +NB_MODULE(my_ext, m) { + m.def("add", &add); +} + diff --git a/py.py b/py.py new file mode 100644 index 0000000..1ca4cbe --- /dev/null +++ b/py.py @@ -0,0 +1,2 @@ +import my_ext +help(my_ext)