<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>181898</bug_id>
          
          <creation_ts>2018-01-19 20:06:37 -0800</creation_ts>
          <short_desc>[WK2] [macOS] Implement a mechanism to test drag and drop</short_desc>
          <delta_ts>2018-08-13 14:08:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181294</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1391342</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-19 20:06:37 -0800</bug_when>
    <thetext>We&apos;re currently only able to write macOS drag and drop tests for WebKit1.

This means that any features that specifically target the macOS WebKit2 port, like &lt;https://bugs.webkit.org/show_bug.cgi?id=181294&gt;, or bugs that specifically affect WebKit2 macOS drag and drop, like &lt;https://bugs.webkit.org/show_bug.cgi?id=181896&gt;, can&apos;t be tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449418</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-10 17:08:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/39181698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449435</commentid>
    <comment_count>2</comment_count>
      <attachid>346946</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-10 17:54:39 -0700</bug_when>
    <thetext>Created attachment 346946
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449446</commentid>
    <comment_count>3</comment_count>
      <attachid>346951</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-10 19:07:14 -0700</bug_when>
    <thetext>Created attachment 346951
Fix macOS 10.12 and WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449448</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-10 19:10:07 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449462</commentid>
    <comment_count>5</comment_count>
      <attachid>346956</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-10 19:56:39 -0700</bug_when>
    <thetext>Created attachment 346956
Try to fix macOS 10.12 build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449464</commentid>
    <comment_count>6</comment_count>
      <attachid>346957</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-10 20:36:57 -0700</bug_when>
    <thetext>Created attachment 346957
Fix 32-bit macOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449536</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-12 07:47:14 -0700</bug_when>
    <thetext>Is it not possible to expose this functionality in WebKitTestRunner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449543</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-12 13:22:22 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #7)
&gt; Is it not possible to expose this functionality in WebKitTestRunner?

Great question! I think it&apos;s possible, but I have some concerns/comments:

- In order to enable the same cross-platform test coverage as we have in our API tests (currently, DragAndDropTestsIOS.mm) this would require us to either mirror tons of platform API in UI-script-side bindings, or have a large number of specific, one-off utility functions per test. This is because there are a myriad of ways to both write and read pasteboard data on macOS and iOS (using NSItemProviders on iOS and NSPasteboard on macOS). On iOS, one can write data by creating an NSItemProvider and manually adding NSData for a specific type identifier, or one can write data by registering an NSItemProvider with an NSObject that conforms to NSItemProviderWriting. One can also write multiple objects when dragging, and additionally influence the type precedence of data in each item provider by changing the order in which data or objects are registered. Our existing drag and drop API tests on iOS exercise all of these cases in one form or another, and providing the same flexibility in WebKitTestRunner would require plumbing a large amount of platform-specific API through UIScriptController or the test runner.

- There&apos;s also a nontrivial amount of actual WebKit API (well technically, SPI) that is currently tested via drag and drop API tests. These mainly exist in WKUIDelegatePrivate and WKWebViewPrivate, and are used heavily by Mail and Safari on iOS. WKAttachmentTests.mm contains many examples where I used DragAndDropSimulator to ensure test coverage of the WebKit attachment SPI when using drag and drop (both on the ObjC-side and JS bindings-side). As I continue working on drag and drop support on macOS WebKit2 in support of Mail compose, I&apos;ll need to add many macOS tests here as well to test how the WebKit attachment API works with drag and drop. Additionally, a large number of tests in DragAndDropSimulatorIOS also exercise Objective-C SPI that we provide to observe, intercept, and adjust the behavior of drag and drop (used mostly by Mail and Safari). If these were in WebKitTestRunner, we&apos;d have to do tons of plumbing (similar to the aforementioned case) to enable the same level of test coverage as we have in API tests.

All this being said, there are some very neat benefits to exposing this functionality in WebKitTestRunner: some of our existing drag and drop API tests really don&apos;t exercise platform API/SPI (both from WebKit and UIKit/AppKit) in ways that are interesting. For such types of API tests, we could convert them into cross-platform layout tests without running into my concerns above, which would allow us to get EWS coverage for them, which API tests (at least, currently) lack.

Ultimately, I think we should make it possible to write drag and drop tests as either API tests or layout tests (whichever one is more relevant to the scenario being tested). For tests that exercise the nooks and crannies in platform ObjC API/SPI (of which there are many), I think we need the flexibility that API tests offer; for tests that are inherently cross-platform and don&apos;t rely on specific API, layout tests seem like a better fit. Perhaps what we should do is add some way to add testing support logic that is available in both API tests and layout tests. This would be similar to the Tools/TestRunnerShared folder, which is currently used for code that is common to both DumpRenderTree and WebKitTestRunner, only this would be code that is applicable to all three test harnesses (TestWebKitAPI and both test runners, WK1 and WK2). Or, alternately, we could rename TestRunnerShared to something like TestingShared, and have it serve TestWebKitAPI/DumpRenderTree/WebKitTestRunner — then, DragAndDropSimulator could be moved there, and we&apos;d be able to write drag and drop tests that run in any of our relevant test harnesses.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449678</commentid>
    <comment_count>9</comment_count>
      <attachid>346957</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-08-13 10:48:36 -0700</bug_when>
    <thetext>Comment on attachment 346957
Fix 32-bit macOS build

View in context: https://bugs.webkit.org/attachment.cgi?id=346957&amp;action=review

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.h:26
&gt; +#pragma once

Is this file needed at all?

&gt; Tools/TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:47
&gt; +    WeakObjCPtr&lt;DragAndDropSimulator&gt; _simulator;

I don&apos;t really like just &quot;simulator&quot;: confused with iOS simulator. Maybe _dragAndDropSimulator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449681</commentid>
    <comment_count>10</comment_count>
      <attachid>346957</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-13 10:51:35 -0700</bug_when>
    <thetext>Comment on attachment 346957
Fix 32-bit macOS build

View in context: https://bugs.webkit.org/attachment.cgi?id=346957&amp;action=review

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.h:26
&gt;&gt; +#pragma once
&gt; 
&gt; Is this file needed at all?

Nope — good catch! Removed this file.

&gt;&gt; Tools/TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:47
&gt;&gt; +    WeakObjCPtr&lt;DragAndDropSimulator&gt; _simulator;
&gt; 
&gt; I don&apos;t really like just &quot;simulator&quot;: confused with iOS simulator. Maybe _dragAndDropSimulator

Sounds good — renamed to _dragAndDropSimulator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449709</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-13 11:43:47 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #8)
&gt; (In reply to Daniel Bates from comment #7)
&gt; &gt; Is it not possible to expose this functionality in WebKitTestRunner?
&gt; 
&gt; Great question! I think it&apos;s possible, but I have some concerns/comments:
&gt; 
&gt; - In order to enable the same cross-platform test coverage as we have in our
&gt; API tests (currently, DragAndDropTestsIOS.mm) this would require us to
&gt; either mirror tons of platform API in UI-script-side bindings, or have a
&gt; large number of specific, one-off utility functions per test. This is
&gt; because there are a myriad of ways to both write and read pasteboard data on
&gt; macOS and iOS (using NSItemProviders on iOS and NSPasteboard on macOS). On
&gt; iOS, one can write data by creating an NSItemProvider and manually adding
&gt; NSData for a specific type identifier, or one can write data by registering
&gt; an NSItemProvider with an NSObject that conforms to NSItemProviderWriting.
&gt; One can also write multiple objects when dragging, and additionally
&gt; influence the type precedence of data in each item provider by changing the
&gt; order in which data or objects are registered. Our existing drag and drop
&gt; API tests on iOS exercise all of these cases in one form or another, and
&gt; providing the same flexibility in WebKitTestRunner would require plumbing a
&gt; large amount of platform-specific API through UIScriptController or the test
&gt; runner.
&gt; 
&gt; - There&apos;s also a nontrivial amount of actual WebKit API (well technically,
&gt; SPI) that is currently tested via drag and drop API tests. These mainly
&gt; exist in WKUIDelegatePrivate and WKWebViewPrivate, and are used heavily by
&gt; Mail and Safari on iOS. WKAttachmentTests.mm contains many examples where I
&gt; used DragAndDropSimulator to ensure test coverage of the WebKit attachment
&gt; SPI when using drag and drop (both on the ObjC-side and JS bindings-side).
&gt; As I continue working on drag and drop support on macOS WebKit2 in support
&gt; of Mail compose, I&apos;ll need to add many macOS tests here as well to test how
&gt; the WebKit attachment API works with drag and drop. Additionally, a large
&gt; number of tests in DragAndDropSimulatorIOS also exercise Objective-C SPI
&gt; that we provide to observe, intercept, and adjust the behavior of drag and
&gt; drop (used mostly by Mail and Safari). If these were in WebKitTestRunner,
&gt; we&apos;d have to do tons of plumbing (similar to the aforementioned case) to
&gt; enable the same level of test coverage as we have in API tests.
&gt; 
&gt; All this being said, there are some very neat benefits to exposing this
&gt; functionality in WebKitTestRunner: some of our existing drag and drop API
&gt; tests really don&apos;t exercise platform API/SPI (both from WebKit and
&gt; UIKit/AppKit) in ways that are interesting. For such types of API tests, we
&gt; could convert them into cross-platform layout tests without running into my
&gt; concerns above, which would allow us to get EWS coverage for them, which API
&gt; tests (at least, currently) lack.
&gt; 
&gt; Ultimately, I think we should make it possible to write drag and drop tests
&gt; as either API tests or layout tests (whichever one is more relevant to the
&gt; scenario being tested). For tests that exercise the nooks and crannies in
&gt; platform ObjC API/SPI (of which there are many), I think we need the
&gt; flexibility that API tests offer; for tests that are inherently
&gt; cross-platform and don&apos;t rely on specific API, layout tests seem like a
&gt; better fit. Perhaps what we should do is add some way to add testing support
&gt; logic that is available in both API tests and layout tests. This would be
&gt; similar to the Tools/TestRunnerShared folder, which is currently used for
&gt; code that is common to both DumpRenderTree and WebKitTestRunner, only this
&gt; would be code that is applicable to all three test harnesses (TestWebKitAPI
&gt; and both test runners, WK1 and WK2). Or, alternately, we could rename
&gt; TestRunnerShared to something like TestingShared, and have it serve
&gt; TestWebKitAPI/DumpRenderTree/WebKitTestRunner — then, DragAndDropSimulator
&gt; could be moved there, and we&apos;d be able to write drag and drop tests that run
&gt; in any of our relevant test harnesses.
&gt; 
&gt; What do you think?

Wenson and I talked about this in person today (08/13). Wenson explained to me that it is not straightforward to expose window.eventSender-like API in UIScriptController to support writing drag-and-drop layouts test that work on both Mac and iOS. In particular, Wenson explained that iOS does not allow us to simulate low-level HID dragging and dropping. We would need to provide our own mocks to achieve comparable testing and/or expose platform-specific UIScriptController functions to setup system state to be able to make use of the systems abstractions that we do have on iOS. We will likely need a way to test drag and drop interactions with respect to SPI callbacks  and our own conformance to the AppKit/UIKit drag-and-drop API that will necessitate API unit tests. For now, it seems sufficient to continue building up own drag-and-drop unit test capabilities. Maybe one day we can expose more of this testing machinery to layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449755</commentid>
    <comment_count>12</comment_count>
      <attachid>347033</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-13 13:28:20 -0700</bug_when>
    <thetext>Created attachment 347033
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449761</commentid>
    <comment_count>13</comment_count>
      <attachid>347033</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 14:08:03 -0700</bug_when>
    <thetext>Comment on attachment 347033
Patch for landing

Clearing flags on attachment: 347033

Committed r234816: &lt;https://trac.webkit.org/changeset/234816&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346946</attachid>
            <date>2018-08-10 17:54:39 -0700</date>
            <delta_ts>2018-08-10 19:07:12 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-181898-20180810175438.patch</filename>
            <type>text/plain</type>
            <size>101207</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3OWFkODQ1MWVmNTg4YWRm
Y2UwN2Q3ZDdlMjJkOGJjZGIwZjY4MTkuLmY3M2ViZmY2NTg3MGE4ZmVjYjU1YmQ2MTA1YmIwYzFm
YzUwNGIwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTgtMDgtMTAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09TXSBJ
bXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYSBuZXcgU1BJIG1ldGhvZCwgYC1fZG9BZnRlclByb2Nlc3NpbmdB
bGxQZW5kaW5nTW91c2VFdmVudHM6YCwgdG8gV0tXZWJWaWV3LiBUaGlzIGludm9rZXMgdGhlIGdp
dmVuCisgICAgICAgIGNhbGxiYWNrIGFmdGVyIGFsbCBxdWV1ZWQgbW91c2UgZXZlbnRzIGhhdmUg
YmVlbiBoYW5kbGVkIGJ5IHRoZSB3ZWIgcHJvY2Vzcy4gU2VlIFRvb2xzL0NoYW5nZUxvZyBmb3Ig
bW9yZQorICAgICAgICBkZXRhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyUHJvY2Vzc2luZ0FsbFBl
bmRpbmdNb3VzZUV2ZW50czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpwcm9jZXNzRGlkRXhpdCk6CisKKyAgICAgICAgSW52b2tlIGFueSBv
dXRzdGFuZGluZyBjYWxsYmFja3MgZm9yIHByb2Nlc3NpbmcgcGVuZGluZyBtb3VzZSBldmVudHMg
d2hlbiB0aGUgd2ViIHByb2Nlc3MgaXMgdGVybWluYXRlZC4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6ZG9BZnRlclByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMpOgorCisg
ICAgICAgIEVpdGhlciBpbnZva2UgdGhlIGNhbGxiYWNrIGltbWVkaWF0ZWx5IGlmIHRoZXJlIGFy
ZSBubyBtb3VzZSBldmVudHMgdG8gYmUgcHJvY2Vzc2VkLCBvciBpbnNlcnQgdGhlIGNhbGxiYWNr
IGluCisgICAgICAgIGEgcXVldWUgdGhhdCB3aWxsIGJlIGZsdXNoZWQgb25jZSBhbGwgbW91c2Ug
ZXZlbnRzIGhhdmUgYmVlbiBoYW5kbGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmZsdXNoUGVuZGluZ01vdXNlRXZlbnRDYWxsYmFja3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnQ6OnBpbm5lZFN0YXRlV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6
OnBpbm5lZFN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dmlk
ZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UpOgorCisgICAgICAgIERyaXZlLWJ5IHR3ZWFrczog
cmVtb3ZlIHVubmVjZXNzYXJ5IHNlbWljb2xvbnMgYWZ0ZXIgZW1wdHkgaW1wbGVtZW50YXRpb24g
c3R1YnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQpOgorCisgICAgICAgIE5vdGlm
eSB0aGUgcGFnZSBjbGllbnQgd2hlbiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIG1vdXNlIGV2ZW50
cyBsZWZ0IGluIHRoZSBxdWV1ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91
c2VFdmVudHMpOgorCisgICAgICAgIEFkZCBzb21lIHBsdW1iaW5nIHRocm91Z2ggUGFnZUNsaWVu
dCwgc28gdGhhdCBXZWJQYWdlUHJveHkgY2FuIHRlbGwgV2ViVmlld0ltcGwgd2hlbiBpdCBpcyBm
aW5pc2hlZCBwcm9jZXNzaW5nCisgICAgICAgIGFsbCBtb3VzZSBldmVudHMuCisKIDIwMTgtMDgt
MTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB1bmRl
ciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0Rvd25sb2FkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGIxMGEwMWMwNGE3
MTgwMDEyZGU5YzY1MWQwNzQ2MWE0NDI0YmNhMTcuLjUyZjc4MTJjY2M1MzY5ZTU5OTcxMjQ3Mjgx
ZTkyOGY5OWUxYTE0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtNjMzNyw2ICs2MzM3LDExIEBAIHN0YXRpYyBXZWJDb3JlOjpVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihV
SVNlCiAgICAgX3BhZ2UtPnNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KTsK
IH0KIAorLSAodm9pZClfZG9BZnRlclByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHM6KGRp
c3BhdGNoX2Jsb2NrX3QpYWN0aW9uCit7CisgICAgX2ltcGwtPmRvQWZ0ZXJQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzKGFjdGlvbik7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMp
CiAKIC0gKHZvaWQpX3JlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm86KHZvaWQoXiko
Qk9PTCwgQk9PTCwgTlNTdHJpbmcqLCBkb3VibGUsIGRvdWJsZSwgTlNJbnRlZ2VyKSljYWxsYmFj
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggNjUyODEyYjFjYzkzN2RmMTI5OTE1NWNlYjA5ZTE3ZTMxYTNjNjc3ZC4u
NTgxYTRhNjdkMTg2ODZiNjExMjhmODY3ZmI0OTgxYTdjNmY3ZmMyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00
NDUsNiArNDQ1LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdl
KSB7CiAKIC0gKHZvaWQpX3NldEhlYWRlckJhbm5lckhlaWdodDooaW50KWhlaWdodCBXS19BUElf
QVZBSUxBQkxFKG1hY29zeCgxMC4xMi4zKSk7CiAtICh2b2lkKV9zZXRGb290ZXJCYW5uZXJIZWln
aHQ6KGludCloZWlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMykpOworLSAodm9p
ZClfZG9BZnRlclByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHM6KGRpc3BhdGNoX2Jsb2Nr
X3QpYWN0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKICNlbmRpZgog
CiAtICh2b2lkKV9yZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvOih2b2lkKF4pKEJP
T0wsIEJPT0wsIE5TU3RyaW5nKiwgZG91YmxlLCBkb3VibGUsIE5TSW50ZWdlcikpY2FsbGJhY2sg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCAyNmRiNmJkMGE1MjI5OTdj
MWRmOGI4NzQwYzkwYzUzM2M5MzE5NzJhLi40MjhhZWMzZWZhMmZkMGEyZjAyMTM3NDQ2YjQyMDcy
ZWQwZDc5NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKQEAgLTUyNiw2ICs1MjYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXRlKE5TVGV4dENoZWNraW5nUmVzdWx0ICphY2NlcHRlZENhbmRpZGF0ZSk7CiAKKyAg
ICB2b2lkIGRvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKGRpc3BhdGNoX2Js
b2NrX3QgYWN0aW9uKTsKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91
c2VFdmVudHMoKTsKKwogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIE5TVG91Y2hCYXIgKm1ha2VU
b3VjaEJhcigpOwogICAgIHZvaWQgdXBkYXRlVG91Y2hCYXIoKTsKQEAgLTYyMiw2ICs2MjUsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbWlnaHRCZWdpblNjcm9sbFdoaWxlSW5hY3RpdmUoKTsKIAog
ICAgIHZvaWQgaGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyhOU0ludGVnZXIgc2VxdWVuY2VOdW1i
ZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKmNhbmRpZGF0ZXMpOworICAgIHZv
aWQgZmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpOwogCiAgICAgV2Vha09iakNQdHI8
TlNWaWV3PFdlYlZpZXdJbXBsRGVsZWdhdGU+PiBtX3ZpZXc7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBhZ2VDbGllbnQ+IG1fcGFnZUNsaWVudDsKQEAgLTczMiw2ICs3MzYsNyBAQCBwcml2YXRlOgog
ICAgIC8vIHRoYXQgaGFzIGJlZW4gYWxyZWFkeSBzZW50IHRvIFdlYkNvcmUuCiAgICAgUmV0YWlu
UHRyPE5TRXZlbnQ+IG1fa2V5RG93bkV2ZW50QmVpbmdSZXNlbnQ7CiAgICAgVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4qIG1fY29sbGVjdGVkS2V5cHJlc3NDb21tYW5kcyB7IG51bGxw
dHIgfTsKKyAgICBWZWN0b3I8QmxvY2tQdHI8dm9pZCgpPj4gbV9jYWxsYmFja0hhbmRsZXJzQWZ0
ZXJQcm9jZXNzaW5nUGVuZGluZ01vdXNlRXZlbnRzOwogCiAgICAgU3RyaW5nIG1fbGFzdFN0cmlu
Z0ZvckNhbmRpZGF0ZVJlcXVlc3Q7CiAgICAgTlNJbnRlZ2VyIG1fbGFzdENhbmRpZGF0ZVJlcXVl
c3RTZXF1ZW5jZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KaW5kZXggMTgwOTg5ZDdiZDBkNTE5NzhjYzMzYTc3YmM3YzJjNGRkZjg5MTY0YS4u
NTZkZTIzYzM2ZTQ0ODE5YmRkOGU4YzFjMjYxMjRjOWNlYWRkYmNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzNzgsNiArMTM3OCw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnByb2Nlc3NEaWRFeGl0KCkKICAgICAgICAgc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihuaWwpOwogCiAgICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJp
bGl0eVJlZ2lzdHJhdGlvbihmYWxzZSk7CisgICAgZmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxi
YWNrcygpOwogCiAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IG51bGxwdHI7CiB9CkBAIC0zMTQ0
LDYgKzMxNDUsMjkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUo
TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmFjY2VwdGVkQ2FuZGlkYXQKICAgICBtX3BhZ2UtPmhhbmRs
ZUFjY2VwdGVkQ2FuZGlkYXRlKHRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jl
c3VsdChhY2NlcHRlZENhbmRpZGF0ZSkpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpkb0FmdGVy
UHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cyhkaXNwYXRjaF9ibG9ja190IGFjdGlvbikK
K3sKKyAgICBpZiAoIW1fcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgeworICAgICAg
ICBhY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY2FsbGJhY2tIYW5k
bGVyc0FmdGVyUHJvY2Vzc2luZ1BlbmRpbmdNb3VzZUV2ZW50cy5hcHBlbmQobWFrZUJsb2NrUHRy
KGFjdGlvbikpOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpkaWRGaW5pc2hQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzKCkKK3sKKyAgICBmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJh
Y2tzKCk7Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OmZsdXNoUGVuZGluZ01vdXNlRXZlbnRDYWxs
YmFja3MoKQoreworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX2NhbGxiYWNrSGFuZGxlcnNB
ZnRlclByb2Nlc3NpbmdQZW5kaW5nTW91c2VFdmVudHMpCisgICAgICAgIGNhbGxiYWNrKCk7CisK
KyAgICBtX2NhbGxiYWNrSGFuZGxlcnNBZnRlclByb2Nlc3NpbmdQZW5kaW5nTW91c2VFdmVudHMu
Y2xlYXIoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQog
ewogICAgIEJPT0wgbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzID0gbV9wYWdlLT5w
cmVmZXJlbmNlcygpLnBsdWdpbnNFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggN2VhODJiYWYwZDc5N2MwMmU1MzZjNDBhOTU0NTg1ZjVkZDBjMDJhNi4uZTJj
NjkxZTFjZGM1NDBjNDJjZjhkNTE1MDc4MjhiYWM1NzQwMTUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaApAQCAtMzkzLDggKzM5Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBp
c1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWlu
Z0F1ZGlvRGlkQ2hhbmdlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwaW5uZWRTdGF0ZVdpbGxD
aGFuZ2UoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIHBpbm5lZFN0YXRlRGlkQ2hhbmdlKCkgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBwaW5uZWRTdGF0ZVdpbGxDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29uc3Qg
V2ViSGl0VGVzdFJlc3VsdERhdGEmLCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIEFQSTo6
T2JqZWN0KikgPSAwOwpAQCAtNDAzLDggKzQwMyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpID0gMDsKICNlbmRpZgorICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkgeyB9Owor
ICAgIHZpcnR1YWwgdm9pZCB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpIHsgfQogCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1lZGlhU2Vzc2lvbk1h
bmFnZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA3YTZmMjc1MzJmNjAzMzkxNGQ3ODNjMDY0OTJlOWRmN2MyZWM5MWEwLi4xMzEwNWM5YWE1M2I1
YTA4MmEyNDk2ZGQxOGFhNzY3MjBlZmY4OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTU1NDMsOCArNTU0MywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCkKICAgICAg
ICAgaWYgKCFtX21vdXNlRXZlbnRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIExPRyhN
b3VzZUhhbmRsaW5nLCAiIFVJUHJvY2VzczogaGFuZGxpbmcgYSBxdWV1ZWQgbW91c2UgZXZlbnQg
ZnJvbSBkaWRSZWNlaXZlRXZlbnQiKTsKICAgICAgICAgICAgIHByb2Nlc3NOZXh0UXVldWVkTW91
c2VFdmVudCgpOwotICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0g
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKLSAgICAgICAgICAg
IGF1dG9tYXRpb25TZXNzaW9uLT5tb3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKCp0aGlzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9
IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCisgICAgICAgICAg
ICAgICAgYXV0b21hdGlvblNlc3Npb24tPm1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoKnRoaXMp
OworICAgICAgICAgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5n
TW91c2VFdmVudHMoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggYTcx
ZmQ0MjY4ODZjYTcwMjk1OTJkNzM2MThmNGZkZWViMDQ2OTQ4NC4uMWM3YWJmYzI2YzYzNmQ5NDgw
ZTNmZGRjN2M2YmVhNTEzMzJmMjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkQ2hhbmdlRGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHByZXZpb3VzQ2FyZXRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjYXJldFJl
Y3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQ
ZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIFdLQ29udGVudFZpZXcgKm1fY29u
dGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldE9iakM+IG1fdW5kb1Rh
cmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCmluZGV4IGVhZTE2MDUzMzI3OTFjODkzNGIzY2I0OGNlNmM1OTdhNWQ5ODkxMWYuLjk3
MmNhNjRmZjdjNzViY2Q4NGMxNzM5MTJjZTA2YzZiZDVmNDc1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0yMzgsNiArMjM4LDgg
QEAgcHJpdmF0ZToKICAgICBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2JqZWN0UmVn
aXN0cnkoKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgdm9pZCBkaWRGaW5pc2hQcm9jZXNzaW5n
QWxsUGVuZGluZ01vdXNlRXZlbnRzKCkgZmluYWw7CisKICAgICBOU1ZpZXcgKm1fdmlldzsKICAg
ICBXZWJWaWV3SW1wbCogbV9pbXBsIHsgbnVsbHB0ciB9OwogI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQppbmRleCA0Nzk4MjcxMTYxODUyMzE5Zjc3MGVkMDdjMDFmMmFiNjViZGFjODk1Li4z
YTU5Mzc5MzRkOGI4ZDA2NDQyM2U3NTE2NmE2NmI1OGEwNTkzNDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC04ODgsNiArODg4
LDExIEBAIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpQYWdlQ2xpZW50SW1wbDo6cmVtb3RlT2Jq
ZWN0UmVnaXN0cnkoKQogfQogI2VuZGlmCiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZpbmlz
aFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoKQoreworICAgIG1faW1wbC0+ZGlkRmlu
aXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOworfQorCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogewogICAgIG1faW1wbC0+ZGlkUmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggY2YyYTRhNTdlMjVjY2FjNDYzODZkODg3Zjk2OTZlMThjZTkzMDc2
NS4uYzViM2MyZWU1MmZhMWRkMzg1OGFhMTI0ZjVlMTcwNmY4NTJiNDc4NSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OCBAQAor
MjAxOC0wOC0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV0syXSBbbWFjT1NdIEltcGxlbWVudCBhIG1lY2hhbmlzbSB0byB0ZXN0IGRyYWcgYW5k
IGRyb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MTg5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkxODE2OTg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY3VycmVudGx5
IHN0dWJiZWQgRHJhZ0FuZERyb3BTaW11bGF0b3Igb24gbWFjT1MsIGFuZCBpbnRyb2R1Y2VzIGEg
bmV3IEFQSSB0ZXN0IGZvciByMjI3MjY2LiBTZWUKKyAgICAgICAgY29tbWVudHMgYmVsb3cgZm9y
IG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9EcmFnQW5kRHJvcFRlc3RzLmg6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5tbTogQ29waWVkIGZyb20g
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0uCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgZmlsZSBmb3IgY3Jvc3MtcGxhdGZvcm0gZHJhZyBhbmQgZHJvcCB0
ZXN0cywgY3VycmVudGx5IGZvciBpT1MgYW5kIG1hY09TLiBBZGRpdGlvbmFsbHkgYWRkIGEgdGVz
dAorICAgICAgICBmb3IgcjIyNzI2Niwgd2hpY2ggd2FzIGZpeGVkIGVhcmxpZXIgdGhpcyB5ZWFy
IGJ1dCBjb3VsZCBub3QgYmUgdGVzdGVkIGR1ZSB0byBhIGxhY2sgb2YgdGVzdGluZyBtZWNoYW5p
c20gb24KKyAgICAgICAgbWFjT1MgaW4gV2ViS2l0Mi4KKworICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9mdWxsLXBhZ2UtZHJvcHpvbmUu
aHRtbDogQWRkZWQuCisKKyAgICAgICAgTWlub3IgdHdlYWtzIHRvIHRoaXMgdGVzdCBwYWdlIHRv
IGFkZCAiZHJhZ292ZXIiIGFuZCAiZHJvcCIgZXZlbnQgaGFuZGxlcnMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0
bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9saW5rLWluLWlm
cmFtZS1hbmQtaW5wdXQuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgcGFn
ZSB0aGF0IGluY2x1ZGVzIGEgbGluayBlbWJlZGRlZCB3aXRoaW4gYW4gaWZyYW1lIGJlbG93IGEg
cGxhaW4gdGV4dCBpbnB1dC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Ry
YWdBbmREcm9wVGVzdHNNYWMubW06IEFkZGVkLgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbTogUmVuYW1l
ZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdBbmREcm9wUGFzdGVib2Fy
ZFRlc3RzLm1tLgorCisgICAgICAgIE1vdmUgb25seSBleGlzdGluZyBXZWJLaXQyIG1hY09TIGRy
YWcgYW5kIGRyb3AgdGVzdCAoRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMuTnVtYmVyT2ZWYWxp
ZEl0ZW1zRm9yRHJvcCkgb3V0CisgICAgICAgIG9mIERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3Rz
Lm1tIGFuZCBpbnRvIGEgbmV3IGZpbGUsIERyYWdBbmREcm9wVGVzdHNNYWMubW0uIEFkZGl0aW9u
YWxseSwgcmVuYW1lCisgICAgICAgIERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzIHRvIExlZ2Fj
eURyYWdBbmREcm9wVGVzdHMsIHNpbmNlIGl0IG5vdyBvbmx5IGNvbnRhaW5zIHR3byBsZWdhY3kg
V2ViVmlldyB0ZXN0cyBmb3IKKyAgICAgICAgZHJhZyBhbmQgZHJvcC4KKworICAgICAgICAoK1tG
cmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl0p
OgorICAgICAgICAoLVtGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgaW5pdFdpdGhDb21wbGV0
aW9uQmxvY2s6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciB3ZWJW
aWV3OmRpZEZpbmlzaExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRHJhZ1NvdXJjZSBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8g
aW5pdFdpdGhJbWFnZTpvZmZzZXQ6cGFzdGVib2FyZDpzb3VyY2U6ZGVzdGluYXRpb25XaW5kb3c6
XSk6CisgICAgICAgICgtW0RyYWdJbmZvIGxhc3RNb3VzZVBvc2l0aW9uXSk6CisgICAgICAgICgt
W0RyYWdJbmZvIHNldExhc3RNb3VzZVBvc2l0aW9uOl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBk
cmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93XSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza10pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnZWRJbWFnZUxvY2F0aW9uXSk6CisgICAg
ICAgICgtW0RyYWdJbmZvIGRyYWdnZWRJbWFnZV0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFn
Z2luZ1Bhc3RlYm9hcmRdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdTb3VyY2VdKToK
KyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBzbGlkZURyYWdnZWRJbWFnZVRvOl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBu
YW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOl0pOgorICAgICAgICAoLVtE
cmFnSW5mbyBkcmFnZ2luZ0Zvcm1hdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXREcmFn
Z2luZ0Zvcm1hdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gYW5pbWF0ZXNUb0Rlc3RpbmF0
aW9uXSk6CisgICAgICAgICgtW0RyYWdJbmZvIHNldEFuaW1hdGVzVG9EZXN0aW5hdGlvbjpdKToK
KyAgICAgICAgKC1bRHJhZ0luZm8gbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcF0pOgorICAgICAg
ICAoLVtEcmFnSW5mbyBzZXROdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBlbnVtZXJhdGVEcmFnZ2luZ0l0ZW1zV2l0aE9wdGlvbnM6Zm9yVmlldzpjbGFz
c2VzOnNlYXJjaE9wdGlvbnM6dXNpbmdCbG9jazpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc3By
aW5nTG9hZGluZ0hpZ2hsaWdodF0pOgorICAgICAgICAoLVtEcmFnSW5mbyByZXNldFNwcmluZ0xv
YWRpbmddKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFRlc3RJbWFnZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3QWZ0ZXJQZXJmb3JtaW5nRHJhZ09wZXJhdGlvbik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9mdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmg6CisKKyAgICAgICAgRmxlc2gg
b3V0IHNvbWUgb2YgdGhlIERyYWdBbmREcm9wU2ltdWxhdG9yIEFQSSBmb3IgbWFjT1MsIGV4cG9z
aW5nIChhbW9uZyBvdGhlciB0aGluZ3MpIHRoZSBkcmFnIHBhc3RlYm9hcmQsCisgICAgICAgIHRo
ZSBjdXJyZW50IE5TRHJhZ2dpbmdJbmZvLCB0aGUgaW5pdGlhbCBsb2NhdGlvbiBvZiB0aGUgZHJh
ZyBpbWFnZSwgYW5kIHRoZSBkcmFnIGltYWdlIGl0c2VsZi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBtb3VzZURvd25B
dFBvaW50OnNpbXVsYXRlUHJlc3N1cmU6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91
c2VVcEF0UG9pbnQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VNb3ZlVG9Qb2lu
dDp3aXRoRmxhZ3M6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc2VuZENsaWNrc0F0UG9p
bnQ6bnVtYmVyT2ZDbGlja3M6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VFbnRl
ckF0UG9pbnQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VFeGl0QXRQb2ludDpd
KToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBtb3VzZURyYWdUb1BvaW50Ol0pOgorICAgICAg
ICAoLVtUZXN0V0tXZWJWaWV3IF9tb3VzZUV2ZW50V2l0aFR5cGU6YXRMb2NhdGlvbjpdKToKKyAg
ICAgICAgKC1bVGVzdFdLV2ViVmlldyBfbW91c2VFdmVudFdpdGhUeXBlOmF0TG9jYXRpb246Zmxh
Z3M6dGltZXN0YW1wOmNsaWNrQ291bnQ6XSk6CisKKyAgICAgICAgQWRkIFRlc3RXS1dlYlZpZXcg
aGVscGVycyB0byBzZW5kIE1vdXNlTW92ZSwgTW91c2VFbnRlciBhbmQgTW91c2VEcmFnIE5TRXZl
bnRzIHRvIHRoZSB3ZWIgdmlldy4gQWRkaXRpb25hbGx5LAorICAgICAgICByZW5hbWUgcGFyYW1l
dGVyIG5hbWVzIHRvIHRoZXNlIGhlbHBlcnMgdG8gbWFrZSBpdCBtb3JlIG9idmlvdXMgdGhhdCB0
aGVzZSBsb2NhdGlvbnMgYXJlIGFsbCBpbiBOU1dpbmRvdworICAgICAgICBjb29yZGluYXRlcy4K
KworICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHR5cGVDaGFyYWN0ZXI6XSk6CisKKyAgICAgICAg
RHJpdmUtYnkgc3R5bGUgZml4OiBwdXQgdGhpcyBvcGVuaW5nIGJyYWNlIG9uIHRoZSBiZWdpbm5p
bmcgb2YgdGhlIG5leHQgbGluZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RyYWdB
bmREcm9wU2ltdWxhdG9ySU9TLm1tOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBp
bml0V2l0aFdlYlZpZXdGcmFtZTpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Ig
aW5pdFdpdGhXZWJWaWV3RnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0Fu
ZERyb3BTaW11bGF0b3Igd2ViVmlld10pOgorCisgICAgICAgIFNtYWxsIGlPUyBEcmFnQW5kRHJv
cFNpbXVsYXRvciBhZGp1c3RtZW50cyBmb3IgbmV3IERyYWdBbmREcm9wU2ltdWxhdG9yIGludGVy
ZmFjZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRv
ck1hYy5tbToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3IGluaXRXaXRoRnJh
bWU6Y29uZmlndXJhdGlvbjpzaW11bGF0b3I6XSk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgV0tX
ZWJWaWV3IHN1YmNsYXNzIGZvciB0ZXN0aW5nIGRyYWcgYW5kIGRyb3AgdGhhdCBvdmVycmlkZXMg
YC1kcmFnSW1hZ2U6YXQ6b2Zmc2V0OuKApmAsIGFuZCBpbnN0ZWFkCisgICAgICAgIGFsbG93cyBE
cmFnQW5kRHJvcFNpbXVsYXRvciB0byB0YWtlIG92ZXIgdGhlIGRyYWcuCisKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3IGRyYWdJbWFnZTphdDpvZmZzZXQ6ZXZlbnQ6cGFzdGVi
b2FyZDpzb3VyY2U6c2xpZGVCYWNrOl0pOgorCisgICAgICAgIE92ZXJyaWRlIHRoaXMgZW50cnkg
cG9pbnQgaW50byBkcmFnIGFuZCBkcm9wIGNvZGUsIGFuZCBpbnN0ZWFkIGNhbGwgb3V0IHRvIHRo
ZSBEcmFnQW5kRHJvcFNpbXVsYXRvciB0bworICAgICAgICBjb29yZGluYXRlIHRoZSBkcmFnLgor
CisgICAgICAgICgtW0RyYWdBbmREcm9wVGVzdFdLV2ViVmlldyB3YWl0Rm9yUGVuZGluZ01vdXNl
RXZlbnRzXSk6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byB3YWl0IGZvciB0aGUgd2ViIHBy
b2Nlc3MgdG8gZmluaXNoIGhhbmRsaW5nIGFsbCBpbi1mbGlnaHQgbW91c2UgZXZlbnRzLgorCisg
ICAgICAgIChkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UpOgorCisgICAgICAgIFNldCB0aGlzIGlt
YWdlIGFzIHRoZSBkZWZhdWx0IGRyYWcgaW1hZ2Ugd2hlbiBzaW11bGF0aW5nIGFuIGluY29taW5n
IGRyYWcgc2Vzc2lvbiBmcm9tIG91dHNpZGUgb2YgdGhlIHdlYiB2aWV3LgorCisgICAgICAgICgt
W0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRXaXRoV2ViVmlld0ZyYW1lOl0pOgorICAgICAgICAo
LVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZpZXdGcmFtZTpjb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBmbGlwQWJvdXRYQXhpc0luSG9z
dFdpbmRvdzpdKToKKworICAgICAgICBIZWxwZXIgbWV0aG9kIHRvIGZsaXAgYSBnaXZlbiBwb2lu
dCBhYm91dCB0aGUgWCBheGlzIG9mIHRoZSB3aW5kb3cuCisKKyAgICAgICAgKC1bRHJhZ0FuZERy
b3BTaW11bGF0b3IgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdKToKKworICAgICAg
ICBNYXAgYSBwcm9ncmVzcyB2YWx1ZSAoYmV0d2VlbiAwIGFuZCAxKSB0byBhIGRyYWcgbG9jYXRp
b24uCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdGlhbFByb2dyZXNzRm9y
TW91c2VEcmFnXSk6CisKKyAgICAgICAgRGV0ZXJtaW5lcyB0aGUgaW5pdGlhbCBwcm9ncmVzcyB2
YWx1ZSB3aGVuIGluaXRpYXRpb24gYSBkcmFnIGluIHdlYiBjb250ZW50LiBUaGlzIGlzIHRoZSBp
bml0aWFsIHByb2dyZXNzCisgICAgICAgIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGF0IHRoZSBmaXJz
dCBtb3VzZSBkcmFnIGV2ZW50IGV4Y2VlZHMgdGhlIGRyYWcgZGlzdGFuY2UgaHlzdGVyZXNpcyBh
bmQgY2F1c2VzIGFueSBkcmFnCisgICAgICAgIChpZiBhcHBsaWNhYmxlKSB0byBiZWdpbi4KKwor
ICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBydW5Gcm9tOnRvOl0pOgorICAgICAgICAo
LVtEcmFnQW5kRHJvcFNpbXVsYXRvciBwZXJmb3JtRHJhZ0luV2ViVmlldzphdExvY2F0aW9uOndp
dGhJbWFnZTpwYXN0ZWJvYXJkOnNvdXJjZTpdKToKKworICAgICAgICBIZWxwZXIgdG8gY29vcmRp
bmF0ZSBkcmFnIHVwZGF0ZXMgaW4gYm90aCB0aGUgY2FzZXMgd2hlcmUgd2UncmUgc2ltdWxhdGlu
ZyBhIGRyYWcgc2Vzc2lvbiBlbnRlcmluZyBmcm9tIG91dHNpZGUKKyAgICAgICAgb2YgdGhlIHdl
YiB2aWV3LCBhbmQgaW4gdGhlIGNhc2Ugd2hlcmUgd2UndmUgaW5pdGlhdGVkIGEgZHJhZyBmcm9t
IHRoZSB3ZWIgdmlldyBpdHNlbGYuCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Ig
d2ViVmlld10pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBzZXRFeHRlcm5hbERy
YWdQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBleHRlcm5h
bERyYWdQYXN0ZWJvYXJkXSk6CisKKyAgICAgICAgSnVzdCBsaWtlIGl0cyBpT1MgY291bnRlcnBh
cnQgKHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczopLCBzZXR0aW5nIGFuIGV4dGVybmFsIGRyYWcg
cGFzdGVib2FyZCBvbiBtYWNPUyBwdXRzIHRoZQorICAgICAgICBEcmFnQW5kRHJvcFNpbXVsYXRv
ciBpbiBhIG1vZGUgdGhhdCBzaW11bGF0ZXMgYSBkcmFnIGNvbWluZyBpbiBmcm9tIG91dHNpZGUg
dGhlIHdlYiB2aWV3LCB1c2luZyB0aGUgZ2l2ZW4KKyAgICAgICAgcGFzdGVib2FyZC4KKworICAg
ICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBzZXRFeHRlcm5hbERyYWdJbWFnZTpdKToKKyAg
ICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgZXh0ZXJuYWxEcmFnSW1hZ2VdKToKKworICAg
ICAgICBNYXkgYmUgb3B0aW9uYWxseSBzZXQgd2hlbiBzcGVjaWZ5aW5nIGFuIGV4dGVybmFsIGRy
YWcgcGFzdGVib2FyZCB0byBzcGVjaWZ5IHRoZSBkcmFnIGltYWdlIHVzZWQuIElmIG5vIGV4dGVy
bmFsCisgICAgICAgIGRyYWcgaW1hZ2UgaXMgc3BlY2lmaWVkLCBmYWxscyBiYWNrIHRvIHRoZSBk
ZWZhdWx0IGltYWdlIHJldHVybmVkIGJ5IGBkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKWAuCisK
KyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgZHJhZ2dpbmdJbmZvXSk6CisgICAgICAg
ICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdpbGxFbmREcmFnZ2luZ0hhbmRsZXJdKToKKyAgICAg
ICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Igc2V0V2lsbEVuZERyYWdnaW5nSGFuZGxlcjpdKToK
KworICAgICAgICBIb29rIHRvIGFsbG93IHRlc3RzIHRvIHJ1biBsb2dpYyByaWdodCBiZWZvcmUg
cGVyZm9ybWluZyB0aGUgZHJvcCAoaWYgdGhlIGN1cnJlbnQgZHJhZyBvcGVyYXRpb24gaXMgbm90
IG5vbmUpIG9yCisgICAgICAgIGVuZGluZyB0aGUgZHJhZyBzZXNzaW9uIHdpdGhvdXQgcGVyZm9y
bWluZyBhIGRyYWcgb3BlcmF0aW9uLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9y
IGluaXRXaXRoV2ViVmlldzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11
bGF0b3IgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRv
ciBwaGFzZV0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFn
Z2luZ0luZm8uaDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERy
b3BTaW11bGF0b3JNYWMubW0uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdERyYWdn
aW5nSW5mby5tbTogQWRkZWQuCisKKyAgICAgICAgTW9jayBvYmplY3QgY29uZm9ybWluZyB0byBO
U0RyYWdnaW5nSW5mbyB0aGF0IGlzIHBhc3NlZCB0byBXS1dlYlZpZXcgd2hlbiBpbnZva2luZyAt
ZHJhZ2dpbmdVcGRhdGVkOiwKKyAgICAgICAgLWRyYWdnaW5nRW50ZXJlZDogYW5kIC1kcmFnZ2lu
Z0V4aXRlZDouCisKKyAgICAgICAgKC1bVGVzdERyYWdnaW5nSW5mbyBkcmFnZ2luZ1Bhc3RlYm9h
cmRdKToKKyAgICAgICAgKC1bVGVzdERyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ1Bhc3RlYm9hcmQ6
XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VdKToKKyAgICAg
ICAgKC1bVGVzdERyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ1NvdXJjZTpdKToKKyAgICAgICAgKC1b
VGVzdERyYWdnaW5nSW5mbyBlbnVtZXJhdGVEcmFnZ2luZ0l0ZW1zV2l0aE9wdGlvbnM6Zm9yVmll
dzpjbGFzc2VzOnNlYXJjaE9wdGlvbnM6dXNpbmdCbG9jazpdKToKKyAgICAgICAgKC1bVGVzdERy
YWdnaW5nSW5mbyBkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93XSk6CisgICAgICAgICgtW1Rlc3RE
cmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdlXSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8g
c2V0RHJhZ2dlZEltYWdlOl0pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIHNsaWRlRHJh
Z2dlZEltYWdlVG86XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gbmFtZXNPZlByb21p
c2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bVGVzdERyYWdnaW5n
SW5mbyByZXNldFNwcmluZ0xvYWRpbmddKToKKworICAgICAgICBFbXB0eSBtZXRob2Qgc3R1YnMs
IHRvIGJlIGltcGxlbWVudGVkIGluIHRoZSBmdXR1cmUgYXMgbmVlZGVkLgorCiAyMDE4LTA4LTEw
ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXQtcGF0
Y2ggc2V0dXAtZ2l0LWNsb25lIHNob3VsZCBzZXQgR2l0IGNvcmUgZWRpdG9yIHRvIGNvbW1pdC1s
b2ctZWRpdG9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE5OGViN2Q3ZGU3YzQ3NTFiZTBm
N2VmNjZhMDkxNzlmNDhiNGU1ZGMuLjgyY2Q5Zjk0NGZlYjIyNDQwMGE3NzUwYzIyZWIzN2M0ZTk2
ZDVmMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDMsNyArMzAzLDYgQEAKIAkJNkJG
RDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMzhEN0U1MUM3NTJENUYwMDRGMTU3
RCAvKiBIYXNoQ291bnRlZFNldC5jcHAgKi87IH07CiAJCTc1MUIwNUQ2MUY4RUFDNDEwMDI4QTA5
RSAvKiBEYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzUxQjA1RDUxRjhFQUMxQTAwMjhBMDlFIC8qIERhdGFiYXNlVHJh
Y2tlclRlc3QubW0gKi87IH07CiAJCTc1NENFQzgxMUY2NzIyRjIwMEQwMDM5QSAvKiBBdXRvRmls
bEF2YWlsYWJsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1NENFQzgwMUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLzsg
fTsKLQkJNzY0MzIyRDcxQjYxQ0NDMzAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJp
YnV0ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5t
bSAqLzsgfTsKIAkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5n
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BM
b2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwICovOyB9OwogCQk3
NkUxODJERDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMx
NTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsK
IAkJNzZFMTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZF
MTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07
CkBAIC02NjAsNyArNjU5LDYgQEAKIAkJQTE3OTkxOEIxRTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJl
ZEJ1ZmZlclRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3OTkxODkxRTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuY3BwICov
OyB9OwogCQlBMTdFQUM1NTIwODMwNUEwMDA4NEI0MUIgLyogZmluZC5wZGYgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3RUFDNTQyMDgzMDU2
RTAwODRCNDFCIC8qIGZpbmQucGRmICovOyB9OwogCQlBMTgwQzBGQTFFRTY3REYwMDA0NjhGNDcg
LyogUnVuT3BlblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLzsg
fTsKLQkJQTE4MTlCMTMyMDg5NzVEMzAwQzA5QjgzIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
ODE5QjEyMjA4OTREMDQwMEMwOUI4MyAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCAqLzsgfTsK
IAkJQTFDNEZCNzMxQkFDRDFDQTAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcw
MDM3NDJEMCAvKiBwYWdlcy5wYWdlcyAqLzsgfTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQw
IC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdh
eXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi87IH07CiAJCUExRUMxMTg4MUY0MjU0MTIwMEQw
MTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExRUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVy
LmNwcCAqLzsgfTsKQEAgLTgxMyw2ICs4MTEsOSBAQAogCQlGNDVFMTU3MzIxMTJDRTI5MDAzMDdF
ODIgLyogS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1RTE1NzIyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJk
SW5wdXRUZXN0c0lPUy5tbSAqLzsgfTsKIAkJRjQ1RTE1NzYyMTEyQ0U2MjAwMzA3RTgyIC8qIFRl
c3RJbnB1dERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ1RTE1NzUyMTEyQ0U2MjAwMzA3RTgyIC8qIFRlc3RJbnB1dERlbGVnYXRlLm1t
ICovOyB9OwogCQlGNDYxMjhCNzIxMUM4RUQ1MDBEOUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0
b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDYxMjhCNjIxMUM4RUQ1MDBEOUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0gKi87
IH07CisJCUY0NjEyOENCMjExRDQ3NTEwMEQ5RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4Q0EyMTFE
NDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gKi87IH07CisJCUY0NjEyOEQ0MjEx
RTQwRkQwMEQ5RkFEQiAvKiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDYxMjhEMTIxMUUy
RDI1MDBEOUZBREIgLyogbGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgKi87IH07CisJCUY0
NjEyOEQ3MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4RDYyMTFFNDg5QzAwRDlG
QURCIC8qIERyYWdBbmREcm9wVGVzdHMubW0gKi87IH07CiAJCUY0NjRBRjkyMjBCQjY2RUEwMDdG
OUIxOCAvKiBSZW5kZXJpbmdQcm9ncmVzc1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2NEFGOTEyMEJCNjZFQTAwN0Y5QjE4IC8qIFJlbmRl
cmluZ1Byb2dyZXNzVGVzdHMubW0gKi87IH07CiAJCUY0Njg0OUJFMUVFRjU4RTQwMEI5MzdGRSAv
KiBVSVBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0
cy5tbSAqLzsgfTsKIAkJRjQ2ODQ5QzAxRUVGNUVGMzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWlu
LXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDY4NDlCRjFFRUY1RURDMDBCOTM3RkUgLyogcmljaC1hbmQtcGxhaW4tdGV4dC5o
dG1sICovOyB9OwpAQCAtODI4LDcgKzgyOSw3IEBACiAJCUY0QUI1NzhBMUY2NTE2NTQwMERCMERB
MSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QUI1Nzg5MUY2NTE2NEIwMERCMERBMSAvKiBj
dXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sICovOyB9OwogCQlGNEI4MjVEODFFRjREQkZCMDA2RTQx
N0YgLyogY29tcHJlc3NlZC1maWxlcy56aXAgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRCODI1RDYxRUY0REJENDAwNkU0MTdGIC8qIGNvbXBy
ZXNzZWQtZmlsZXMuemlwICovOyB9OwogCQlGNEI4NkQ0RjIwQkNENUIyMDA5OUE3RTYgLyogcGFp
bnQtc2lnbmlmaWNhbnQtYXJlYS1taWxlc3RvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEI4NkQ0RTIwQkNENTk3MDA5OUE3RTYg
LyogcGFpbnQtc2lnbmlmaWNhbnQtYXJlYS1taWxlc3RvbmUuaHRtbCAqLzsgfTsKLQkJRjRCRkE2
OEUxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRCRkE2OEMxRTRBRDA4
MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tICovOyB9OworCQlGNEJG
QTY4RTFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QkZBNjhDMUU0QUQwODAw
MDE1NDI5OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tICovOyB9OwogCQlGNEMyQUIyMjFE
RDZEOTVFMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QzJBQjIxMURE
NkQ5NDEwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgKi87IH07CiAJ
CUY0Qzg3OTdGMjA1OUQ4RDMwMDlDRDAwQiAvKiBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Qzg3OTdFMjA1OUQ4
RDMwMDlDRDAwQiAvKiBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbSAqLzsgfTsKIAkJRjRDRDc0QzYy
MEZEQUNGQTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNENENzRDNTIwRkRB
Q0Y1MDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1sICovOyB9OwpAQCAtODM5
LDYgKzg0MCw4IEBACiAJCUY0RDVFNEU4MUYwQzVEMzgwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xl
YXItc2VsZWN0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjRENUU0RTcxRjBDNUQyNzAwOEMxQTQ5IC8qIGRyYWdzdGFydC1jbGVh
ci1zZWxlY3Rpb24uaHRtbCAqLzsgfTsKIAkJRjRENjVEQTgxRjVFNDcwNDAwOUQ4QzI3IC8qIHNl
bGVjdGVkLXRleHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ2NURBNzFGNUU0NkMwMDA5
RDhDMjcgLyogc2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFuZC1lZGl0YWJsZS5odG1sICovOyB9
OwogCQlGNERFRjZFRDFFOUI0REI2MDA0OEVGNjEgLyogaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNERFRjZFQzFFOUI0RDk1MDA0OEVGNjEgLyogaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQuaHRt
bCAqLzsgfTsKKwkJRjRFMEEyOEIyMTFFNEEyQjAwQUY3QzdGIC8qIGZ1bGwtcGFnZS1kcm9wem9u
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NjEyOEQ4MjExRTQ5NjMwMEQ5RkFEQiAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCAq
LzsgfTsKKwkJRjRFMEEyOEYyMTFFNUQ1QjAwQUY3QzdGIC8qIERyYWdBbmREcm9wVGVzdHNNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEUwQTI4
RTIxMUU1RDVCMDBBRjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSAqLzsgfTsKIAkJRjRF
M0Q4MDgyMEY3MEJCOTAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGlj
bGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEUzRDgwNzIwRjcwOEU0MDA3QjU4QzUgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3Rv
bmUtYXJ0aWNsZS5odG1sICovOyB9OwogCQlGNEYxMzc5MjFEOUI2ODNFMDAyQkVDNTcgLyogbGFy
Z2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RjEzNzkxMUQ5QjY4MzIwMDJCRUM1NyAvKiBs
YXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi87IH07CiAJCUY0RjQwNUJDMUQ0QzBE
MUMwMDdBOTcwNyAvKiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RjQwNUJBMUQ0QzBDRjgwMDdBOTcwNyAvKiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0
aC1hdWRpby5odG1sICovOyB9OwpAQCAtOTIxLDkgKzkyNCw2IEBACiAJCQlkc3RQYXRoID0gVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVz
ID0gKAotCQkJCUNENTc3NzlDMjExQ0U5MUYwMDFCMzcxRSAvKiBhdWRpby13aXRoLXdlYi1hdWRp
by5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJCUNENTc3NzlEMjExQ0U5MUYwMDFCMzcx
RSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKLQkJCQlDRDU3Nzc5OTIxMUNFMEU0MDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUgLyog
MTgtY2hhcmFjdGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OTAyOEI5MTRG
QUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTFDMkI4MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVtLnR0ZiBpbiBDb3B5IFJl
c291cmNlcyAqLywKQEAgLTk0MCw2ICs5NDAsNyBAQAogCQkJCTdDOUVEOThCMTdBMTlGNEIwMEU0
REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTM3MTM3RTRCMjExMjREMDEwMDJCRUVBNCAvKiBBdHRyU3R5bGUuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDlFMjkyRTFDOTBDMzNGMDAwQkI4MDAgLyogYXVk
aW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUNENTc3NzlDMjExQ0U5MUYw
MDFCMzcxRSAvKiBhdWRpby13aXRoLXdlYi1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTc2RTE4MkRGMTU0NzY3RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOTlGMUVGNDY5NkIwMDgzRkEwOCAv
KiBhdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJOTNDRkE4NjcxQ0VCOUUzODAwMDU2NUE4IC8qIGF1dG9mb2N1c2VkLXRleHQtaW5wdXQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTEwMTQsNyArMTAxNSw3IEBACiAJCQkJOTMyQUU1
M0QxRDM3MTA0NzAwNURGRkFGIC8qIGZvY3VzLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTFBN0U4QjM2MTgxMjBCMkYwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmlnYXRpb24u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDc3Mjg5OTFFNEFFM0MxMDA3QUJGNkEg
LyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAot
CQkJCUExODE5QjEzMjA4OTc1RDMwMEMwOUI4MyAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlGNEUwQTI4QjIxMUU0QTJCMDBBRjdDN0YgLyogZnVs
bC1wYWdlLWRyb3B6b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkMx
RDRDMEQxQzAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlv
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0Q3OEUxMUUxREI3RUUyQTAwMTRBMkRF
IC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTNG
QkQxQjRBMUQzRDY2QUIwMEU2RDZGQSAvKiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTEwODYsNiArMTA4Nyw3IEBACiAJCQkJQzI1Q0NB
MEIxRTUxNDBDMTAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUY0MUFCOUE2MUVGNDY5NkIwMDgzRkEwOCAvKiBsaW5rLWFuZC1pbnB1dC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUE3MUVGNDY5NkIwMDgzRkEwOCAvKiBs
aW5rLWFuZC10YXJnZXQtZGl2Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ2MTI4
RDQyMTFFNDBGRDAwRDlGQURCIC8qIGxpbmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTgzNjFGMTc4MUU2MTBCNEUwMDc1OUIyNSAvKiBsaW5rLXdp
dGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTgzNDlEM0M0MURCOTcyOEUwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQt
YXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc4RTY0NzkxNjMyNzA3
NDAwQjZDNjc2IC8qIGxpbmstd2l0aC10aXRsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApA
QCAtMTE3Miw2ICsxMTc0LDcgQEAKIAkJCQlGNDFBQjlBQTFFRjQ2OTZCMDA4M0ZBMDggLyogdGV4
dGFyZWEtdG8taW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDQ1MUM3NjFF
QjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9z
ZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUNENTc3NzlEMjExQ0U5MUYw
MDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQlDREM4RTQ5NDFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aC1h
dWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQzhFNDk1MUJDNkYxMDgwMDU5
NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLm1wNCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
RDMyMUIwNDFFM0E4NUZBMDBFQjIxQzggLyogdmlkZW8td2l0aC1tdXRlZC1hdWRpby1hbmQtd2Vi
YXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTExODAsNiArMTE4Myw3IEBACiAJ
CQkJQ0RDOEU0OTYxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NzFCQzZGMTA4MDA1OTRGRUMgLyogdmlk
ZW8td2l0aG91dC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMDdDRDMyRjgy
MDY1QjcyQjAwNjRBNEJFIC8qIHZpZGVvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJ
Q0Q1Nzc3OTkyMTFDRTBFNDAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODYxQzg5MjU5RDAwQTU1MjlGIC8qIHdlYmZvbnQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTcxNEVCNDFDRjhDNzhDMDA0NzIzQzQgLyog
V2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE1ODMsNyArMTU4Nyw2IEBACiAJCTc1NENF
QzgwMUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEF1dG9GaWxsQXZhaWxhYmxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NTYwOTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2Fj
aGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlD
YWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
cGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJvdW5k
YXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc2NzM0OTk3MTkzMDE2REMwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmlu
Z0RpZEZhaWxQcm92aXNpb25hbExvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY3MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0
b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkX2J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2
RTE4MkQ5MTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4OSw3ICsxNzkyLDYgQEAKIAkJQTE3OTkx
OEExRTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTdFQUM1NDIwODMwNTZFMDA4NEI0MUIgLyogZmluZC5wZGYgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUg
PSBmaW5kLnBkZjsgcGF0aCA9IFRlc3RzL1dlYktpdC9maW5kLnBkZjsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwogCQlBMTgwQzBGOTFFRTY3REYwMDA0NjhGNDcgLyogUnVuT3BlblBhbmVs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUnVuT3BlblBhbmVsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBMTgxOUIxMjIwODk0RDA0MDBDMDlCODMgLyogZnVsbC1wYWdlLWRy
b3B6b25lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMThBQThDQzFDM0ZBMjE4MDA5QjJCOTcgLyogQ29udGVu
dEZpbHRlcmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50Rmls
dGVyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTVEMThERDNEQjcw
MEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERvd25sb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUM0RkI2
QzFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjA0Niw2ICsyMDQ4LDEyIEBACiAJCUY0NUUxNTc1MjExMkNFNjIwMDMwN0U4MiAvKiBU
ZXN0SW5wdXREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RJbnB1dERlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDYxMjhCNDIxMUM4NjFBMDBE
OUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRHJhZ0FuZERyb3BTaW11bGF0b3IuaDsgcGF0aCA9IGNvY29hL0RyYWdBbmREcm9w
U2ltdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NjEyOEI2MjExQzhF
RDUwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDYxMjhDOTIxMUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZXN0RHJhZ2dpbmdJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0NjEyOENBMjExRDQ3NTEwMEQ5RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdERyYWdnaW5nSW5mby5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxpbmstaW4taWZyYW1l
LWFuZC1pbnB1dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxpbmstaW4taWZy
YW1lLWFuZC1pbnB1dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4
RDUyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9wVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RHJhZ0FuZERyb3BUZXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDYxMjhE
NjIxMUU0ODlDMDBEOUZBREIgLyogRHJhZ0FuZERyb3BUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERyYWdBbmREcm9wVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0NjEyOEQ4MjExRTQ5NjMwMEQ5RkFEQiAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NjRBRjkxMjBCQjY2RUEwMDdGOUIxOCAvKiBSZW5kZXJpbmdQcm9ncmVzc1Rlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJ
UGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlQYXN0ZWJvYXJkVGVz
dHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Njg0OUJGMUVFRjVFREMwMEI5
MzdGRSAvKiByaWNoLWFuZC1wbGFpbi10ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicmljaC1hbmQtcGxh
aW4tdGV4dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjIsNyArMjA3
MCw3IEBACiAJCUY0QUI1Nzg5MUY2NTE2NEIwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRp
di5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImN1c3RvbS1kcmFnZ2FibGUtZGl2
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEI4MjVENjFFRjREQkQ0MDA2
RTQxN0YgLyogY29tcHJlc3NlZC1maWxlcy56aXAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLnppcDsgcGF0aCA9ICJjb21wcmVzc2VkLWZp
bGVzLnppcCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Qjg2RDRFMjBCQ0Q1OTcw
MDk5QTdFNiAvKiBwYWludC1zaWduaWZpY2FudC1hcmVhLW1pbGVzdG9uZS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gInBhaW50LXNpZ25pZmljYW50LWFyZWEtbWlsZXN0b25lLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQy
OTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIExlZ2Fj
eURyYWdBbmREcm9wVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNEMyQUIyMTFERDZEOTQxMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3Vu
ZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImVub3Jtb3VzLXZpZGVvLXdpdGgt
c291bmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Qzg3OTdFMjA1OUQ4
RDMwMDlDRDAwQiAvKiBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNjcm9sbFZpZXdJbnNldFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNENENzRDNTIwRkRBQ0Y1MDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc0LDYgKzIwODIsNyBAQAogCQlG
NEQ1RTRFNzFGMEM1RDI3MDA4QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImRyYWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RDY1REE3MUY1RTQ2QzAwMDlEOEMyNyAvKiBzZWxlY3RlZC10
ZXh0LWltYWdlLWxpbmstYW5kLWVkaXRhYmxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAic2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFuZC1lZGl0YWJsZS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRERUY2RUMxRTlCNEQ5NTAwNDhFRjYxIC8qIGltYWdl
LWluLWxpbmstYW5kLWlucHV0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW1h
Z2UtaW4tbGluay1hbmQtaW5wdXQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0RTBBMjhFMjExRTVENUIwMEFGN0M3RiAvKiBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRHJhZ0FuZERyb3BUZXN0c01hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjRFM0Q4MDcyMEY3MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRl
eHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJz
aWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVz
dC1ub3ctcGxheWluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZp
ZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0RjQwNUJBMUQ0QzBDRjgwMDdBOTcwNyAvKiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8t
d2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZ1bGwtc2l6ZS1h
dXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjI5Niw2ICsyMzA1LDggQEAKIAkJCQk1MThFRTUxNjIwQTc4Q0RGMDBFMDI0RjMg
LyogRG91YmxlRGVmZXJzTG9hZGluZy5tbSAqLywKIAkJCQk1MThFRTUxNzIwQTc4Q0RGMDBFMDI0
RjMgLyogRG91YmxlRGVmZXJzTG9hZGluZ1BsdWdpbi5tbSAqLywKIAkJCQlBMUE0RkU1RDE4REQz
REI3MDBCNUVBOEEgLyogRG93bmxvYWQubW0gKi8sCisJCQkJRjQ2MTI4RDUyMTFFNDg5QzAwRDlG
QURCIC8qIERyYWdBbmREcm9wVGVzdHMuaCAqLywKKwkJCQlGNDYxMjhENjIxMUU0ODlDMDBEOUZB
REIgLyogRHJhZ0FuZERyb3BUZXN0cy5tbSAqLywKIAkJCQlBMTU1MDIyODFFMDUwMjBCMDBBMjRD
NTcgLyogRHVwbGljYXRlQ29tcGxldGlvbkhhbmRsZXJDYWxscy5tbSAqLywKIAkJCQlGNDREMDY0
NjFGMzk1QzREMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLywKIAkJCQlDREEyOUIy
ODIwRkQyQTk5MDBGMTVDRUQgLyogRXhpdEZ1bGxzY3JlZW5PbkVudGVyUGlQLm1tICovLApAQCAt
MjU4Nyw2ICsyNTk4LDcgQEAKIAkJCQk1QzlFNTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGlj
YXRpb25DYWNoZS5kYi13YWwgKi8sCiAJCQkJRjQ4NTZDQTIxRTY0OThBODAwOUQ3RUU3IC8qIGF0
dGFjaG1lbnQtZWxlbWVudC5odG1sICovLAogCQkJCTM3NjBDNEYyMjExMjRCRDAwMDIzM0FDQyAv
KiBBdHRyU3R5bGUuaHRtbCAqLywKKwkJCQlDRDU3Nzc5QTIxMUNFNkI3MDAxQjM3MUUgLyogYXVk
aW8td2l0aC13ZWItYXVkaW8uaHRtbCAqLywKIAkJCQlGNDFBQjk5ODFFRjQ2OTJDMDA4M0ZBMDgg
LyogYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJsZS5odG1sICovLAogCQkJCTkzQ0ZBODY2MUNFQjlE
RTEwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0LWlucHV0Lmh0bWwgKi8sCiAJCQkJMkUxNEE1
MjgxRDNGRThCODAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAq
LywKQEAgLTI2MjgsNiArMjY0MCw3IEBACiAJCQkJQTE3RUFDNTQyMDgzMDU2RTAwODRCNDFCIC8q
IGZpbmQucGRmICovLAogCQkJCUY0M0UzQkMwMjBEQURCODAwMEE0RTdFRCAvKiBmaXhlZC1uYXYt
YmFyLmh0bWwgKi8sCiAJCQkJOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3VzLWlucHV0
cy5odG1sICovLAorCQkJCUY0NjEyOEQ4MjExRTQ5NjMwMEQ5RkFEQiAvKiBmdWxsLXBhZ2UtZHJv
cHpvbmUuaHRtbCAqLywKIAkJCQlGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVsbC1zaXpl
LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlDRDc4RTExQjFEQjdF
QTM2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLmh0bWwgKi8sCiAJCQkJM0ZCRDFCNDkx
RDM5RDFEQjAwRTZENkZBIC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5odG1sICovLApA
QCAtMjY4Miw2ICsyNjk1LDcgQEAKIAkJCQlDMjVDQ0EwQTFFNTEzRjQ5MDAyNkNCOEEgLyogTGlu
ZUJyZWFraW5nLmh0bWwgKi8sCiAJCQkJRjQxQUI5OTYxRUY0NjkyQzAwODNGQTA4IC8qIGxpbmst
YW5kLWlucHV0Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OUQxRUY0NjkyQzAwODNGQTA4IC8qIGxpbmst
YW5kLXRhcmdldC1kaXYuaHRtbCAqLywKKwkJCQlGNDYxMjhEMTIxMUUyRDI1MDBEOUZBREIgLyog
bGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgKi8sCiAJCQkJOEMxMEFGOTcyMDY0Njc4MzAw
MThGRDkwIC8qIGxvY2Fsc3RvcmFnZS1lbXB0eS1zdHJpbmctdmFsdWUuaHRtbCAqLywKIAkJCQk1
MUU2QTg5NTFEMkYxQzc3MDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIuaHRtbCAqLywKIAkJ
CQk0NkM1MTlFMjFEMzU2Mjk2MDBEQUE1MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMuaHRt
bCAqLywKQEAgLTI3MjQsMTMgKzI3MzgsMTIgQEAKIAkJCQlGNDRDN0EwNDIwRkFBRTMyMDAxNDQ3
OEMgLyogdGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sICovLAogCQkJCUY0MUFCOTk1MUVG
NDY5MkMwMDgzRkEwOCAvKiB0ZXh0YXJlYS10by1pbnB1dC5odG1sICovLAogCQkJCUY0NDUxQzc1
MUVCOEZEN0MwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICov
LAorCQkJCUNENTc3NzlCMjExQ0U2Q0UwMDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13
ZWItYXVkaW8uaHRtbCAqLywKKwkJCQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1
ZGlvLW9ubHkuaHRtbCAqLywKIAkJCQk1MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJv
Y2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCAqLywKIAkJCQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIz
QzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLywKIAkJCQk1MTIwQzgzQjFF
Njc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWwgKi8sCiAJ
CQkJMkUxMzFDMTcxRDgzQTk3RTAwMUJBMzZDIC8qIHdpZGUtYXV0b3BsYXlpbmctdmlkZW8td2l0
aC1hdWRpby5odG1sICovLAotCQkJCUNENTc3Nzk4MjExQ0RFOEYwMDFCMzcxRSAvKiB3ZWItYXVk
aW8tb25seS5odG1sICovLAotCQkJCUNENTc3NzlBMjExQ0U2QjcwMDFCMzcxRSAvKiBhdWRpby13
aXRoLXdlYi1hdWRpby5odG1sICovLAotCQkJCUNENTc3NzlCMjExQ0U2Q0UwMDFCMzcxRSAvKiB2
aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0g
UmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxMjMsNiArMzEzNiw4
IEBACiAJCQkJQzA4MTIyNDQxM0ZDMTlFQzAwREMzOUFFIC8qIFN5bnRoZXRpY0JhY2tpbmdTY2Fs
ZUZhY3RvcldpbmRvdy5tICovLAogCQkJCTI5QUI4QUEzMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmggKi8sCiAJCQkJMjlBQjhBQTIxNjRDN0E5MzAw
RDQ5QkVDIC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJRjQ2
MTI4QzkyMTFENDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8uaCAqLywKKwkJCQlGNDYx
MjhDQTIxMUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSAqLywKIAkJCQlDMDg1
ODdCRTEzRkU5NTZDMDAxRUY0RTUgLyogV2ViS2l0QWdub3N0aWNUZXN0LmggKi8sCiAJCQkJQzA4
NTg3QkQxM0ZFOTU2QzAwMUVGNEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5tbSAqLywKIAkJCSk7
CkBAIC0zMTY3LDcgKzMxODIsNyBAQAogCQkJCTQ2Mzk3Qjk0MURDMkM4NTAwMDlBNzhBRSAvKiBE
T01Ob2RlLm1tICovLAogCQkJCTM3NTFBRjdBMTY5NTE4RjgwMDc2NDMxOSAvKiBET01Ob2RlRnJv
bUpTT2JqZWN0Lm1tICovLAogCQkJCTM3REM2NzhCMTQwRDdDNTAwMEFCQ0NEQiAvKiBET01SYW5n
ZU9mU3RyaW5nLm1tICovLAotCQkJCUY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5k
RHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLywKKwkJCQlGNEUwQTI4RTIxMUU1RDVCMDBBRjdDN0Yg
LyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSAqLywKIAkJCQlDMDdFNkNBRTEzRkQ2NzY1MDAzOEIy
MkIgLyogRHluYW1pY0RldmljZVNjYWxlRmFjdG9yLm1tICovLAogCQkJCTFBOUZCNkNDMUNBMzRC
RTUwMDk2NjEyNCAvKiBFYXJseUtWT0NyYXNoLm1tICovLAogCQkJCTRCQjQxNjAzMTY4MTVGOTEw
MDgyNDIzOCAvKiBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW0gKi8sCkBAIC0zMTgwLDYgKzMx
OTUsNyBAQAogCQkJCUM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0g
Ki8sCiAJCQkJNTdGMTBEOTIxQzdFN0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRy
dXN0ZWQubW0gKi8sCiAJCQkJNEJCNDE2MDExNjgxNUIyNjAwODI0MjM4IC8qIEpTV3JhcHBlckZv
ck5vZGVJbldlYkZyYW1lLm1tICovLAorCQkJCUY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBM
ZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tICovLAogCQkJCTdBN0IwRTdFMUVBRkU0NTQwMDZBQjhB
RSAvKiBMaW1pdFRpdGxlU2l6ZS5tbSAqLywKIAkJCQk1NzkwMUZBRTFDQUYxMzcxMDBFRDY0Rjkg
LyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tICovLAogCQkJCUNEQTMxNTk2MUVENTM2NTEwMDlG
NjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gKi8sCkBAIC0zMjE2LDcgKzMy
MzIsNiBAQAogCQkJCTFBN0JGQzBBMTcxQTBCREIwMEJDNUY2NCAvKiBXaWxsU2VuZFN1Ym1pdEV2
ZW50Lm1tICovLAogCQkJCUE1RTIwMjcyMTVCMjE4MTkwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2Vi
Vmlld1dpdGhNZWRpYS5tbSAqLywKIAkJCQlGNEZBOTE3RjFFNjE4NDlCMDA3QjhDMUQgLyogV0tX
ZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tICovLAotCQkJCTc2NDMyMkQ1MUI2MUNDQTQwMDI0Rjgw
MSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzIzNiw3ICszMjUxLDYgQEAK
IAkJCQlGNEZBOTE4MjFFNjE4NTY2MDA3QjhDMUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90LXNl
bGVjdC10cmFpbGluZy1zcGFjZS5odG1sICovLAogCQkJCTFBN0U4QjM1MTgxMjA5MzYwMEFFQjc0
QSAvKiBGcmFnbWVudE5hdmlnYXRpb24uaHRtbCAqLywKIAkJCQlGNDc3Mjg5ODFFNEFFM0FEMDA3
QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sICovLAotCQkJCUExODE5QjEy
MjA4OTREMDQwMEMwOUI4MyAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCAqLywKIAkJCQlDREJG
Q0M0MjFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAq
LywKIAkJCQk5QjRGOEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0
ZW0uaHRtbCAqLywKIAkJCQk5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xs
ZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8sCkBAIC0zNzA5LDEwICszNzIzLDExIEBACiAJCQkJNTE4
RUU1MTgyMEE3OENFMjAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xvYWRpbmcubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YyMzFBNDExQUY2MDA0NDdDNEMgLyogRG93bmxvYWQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VFRTFBNDExQUU2MDA0NDdDNEMgLyogRG93bmxvYWREZWNpZGVE
ZXN0aW5hdGlvbkNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUY0QkZBNjhFMUU0QUQwODAw
MDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUY0RDRGM0I2MUU0RTJCQ0IwMEJCMjc2NyAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUY0NjEyOEI3MjExQzhFRDUwMEQ5RkFEQiAvKiBEcmFnQW5k
RHJvcFNpbXVsYXRvck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY0NjEyOEQ3MjExRTQ4OUMw
MEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRENEYz
QjkxRTRFMzZFNDAwQkIyNzY3IC8qIERyYWdBbmREcm9wVGVzdHNJT1MubW0gaW4gU291cmNlcyAq
LywKKwkJCQlGNEUwQTI4RjIxMUU1RDVCMDBBRjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUExNTUwMjJBMUUwNTAyMEIwMEEyNEM1NyAvKiBEdXBsaWNh
dGVDb21wbGV0aW9uSGFuZGxlckNhbGxzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkUx
QTQxMUE3RTAwNDQ3QzRDIC8qIER5bmFtaWNEZXZpY2VTY2FsZUZhY3Rvci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMEJGODkyMURENTk5QjYwMEIwMDMyOCAvKiBFYXJseUtWT0NyYXNoLm1tIGlu
IFNvdXJjZXMgKi8sCkBAIC0zNzQ4LDcgKzM3NjMsNiBAQAogCQkJCUNENzhFMTFEMURCN0VBNjYw
MDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
RTBCRDFEMEE2NTBDMDBGRUJDRjMgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNEQkZDQzQ1MUE5RkY0NTMwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9v
bUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCUNEMjI3RTQ0MjExQTRENUQwMEQy
ODVBRiAvKiBQcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
M0RCNzk2OTFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFRjgxQTQxMUFFNjAwNDQ3QzRDIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTYzMUVGRkY2MUU3QjVFOEQwMEQyRUJCOCAvKiBHZW9sb2NhdGlvbi5tbSBpbiBT
b3VyY2VzICovLApAQCAtMzc5OSw2ICszODEzLDcgQEAKIAkJCQlGNDVFMTU3MzIxMTJDRTI5MDAz
MDdFODIgLyogS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMDYxQTQxMUFFNjAwNDQ3QzRDIC8qIExheW91dE1pbGVzdG9uZXNXaXRoQWxsQ29udGVudElu
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREYxQTQxMUE5MjAwNDQ3QzRDIC8q
IExheW91dFVuaXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjRCRkE2OEUxRTRBRDA4MDAwMTU0
Mjk4IC8qIExlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTY2
QkRCNjFFQUYxNEVGMDBDQ0M5MjQgLyogTGltaXRUaXRsZVNpemUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0E3QjBFN0YxRUFGRTRDMzAwNkFCOEFFIC8qIExpbWl0VGl0bGVTaXplLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzI1Q0NBMDYxRTUxMzgwQjAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5t
bSBpbiBTb3VyY2VzICovLApAQCAtMzg2Nyw2ICszODgyLDcgQEAKIAkJCQk3Q0NFN0VBNzFBNDEx
QTEzMDA0NDdDNEMgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI2MUE0MTFBRjYwMDQ0N0M0QyAvKiBQcmVmZXJlbmNl
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEMjI3RTQ0MjExQTRENUQwMEQyODVBRiAvKiBQcmVm
ZXJyZWRBdWRpb0J1ZmZlclNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzFBRjc5NTFFOERD
QkFCMDAyNjQ1QjkgLyogUHJlcGFyZUZvck1vdmVUb1dpbmRvdy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjBCMUE0MTFBRTYwMDQ0N0M0QyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMkMxQTQxMUIxMDAwNDQ3QzRDIC8qIFByZXZlbnRJ
bWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTM2LDYgKzM5
NTIsNyBAQAogCQkJCTFDNzM0QjUzMjA3ODhDNDgwMEY0MzBFQSAvKiBTeXN0ZW1Db2xvcnMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVybWluYXRl
VHdpY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTkxQTQxMUExRDAwNDQ3QzRDIC8q
IFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQlG
NDYxMjhDQjIxMUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTJEMUMwNEE3MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0RkM1OTAxQjhBRTM2RjAw
RDEwN0VCIC8qIFRlc3RQcm90b2NvbC5tbSBpbiBTb3VyY2VzICovLApAQCAtNDAzMiw3ICs0MDQ5
LDYgQEAKIAkJCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGlu
Z1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8q
IFdLV2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk4NEZBQ0MxQ0ZGQUY2
MDAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTc2
NDMyMkQ3MUI2MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOUM2NERDMzIxRDc2MTk4QTAwNEI1OThFIC8qIFlvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EcmFnQW5kRHJvcFRlc3RzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2M2ZWQyMGE3NjYwNTI1ZjEzNTA0YThjMDQ5NWZlYTUwYjhhNjllNwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0
cy5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BU
ZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNzJkYjNlYTZmMDQwNDYzYjE4NTc5MDcwNjg3Yjc2NWQwOGE3
OTc3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9EcmFnQW5kRHJvcFRlc3RzLm1tCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3IuaCIKKyNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBFTkFC
TEUoRFJBR19TVVBQT1JUKQorCitURVNUKERyYWdBbmREcm9wVGVzdHMsIERyYWdJbWFnZUxvY2F0
aW9uRm9yTGlua0luU3ViZnJhbWUpCit7CisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtb
RHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlld0ZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW1tzaW11bGF0b3Igd2ViVmlld10gc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAibGluay1pbi1pZnJhbWUtYW5kLWlucHV0Il07CisgICAg
W3NpbXVsYXRvciBydW5Gcm9tOk5TTWFrZVBvaW50KDIwMCwgMzc1KSB0bzpOU01ha2VQb2ludCgy
MDAsIDEyNSldOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20v
IiwgW1tzaW11bGF0b3Igd2ViVmlld10gc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUiXSk7CisKKyNpZiBQTEFURk9STShN
QUNPUykKKyAgICBFWFBFQ1RfVFJVRShOU1BvaW50SW5SZWN0KFtzaW11bGF0b3IgaW5pdGlhbERy
YWdJbWFnZUxvY2F0aW9uSW5WaWV3XSwgTlNNYWtlUmVjdCgwLCAyNTAsIDQwMCwgMjUwKSkpOwor
I2VuZGlmCit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9m
dWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkzMTk3MThiOTllNmM0
ZjQxYWYyNTUxYjQwNzQ3MmRmYTE0MDZjMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKQEAgLTAs
MCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgorPGJvZHkgc3R5bGU9IndpZHRoOiAxMDB2dzsgaGVpZ2h0
OiAxMDB2aDsgbWFyZ2luOiAwOyIKKyAgICBvbmRyYWdlbnRlcj0id2luZG93Lm9ic2VydmVkRHJh
Z0VudGVyID0gdHJ1ZTsgcmV0dXJuIGZhbHNlOyIKKyAgICBvbmRyYWdvdmVyPSJ3aW5kb3cub2Jz
ZXJ2ZWREcmFnT3ZlciA9IHRydWU7IHJldHVybiBmYWxzZTsiCisgICAgb25kcm9wPSJ3aW5kb3cu
b2JzZXJ2ZWREcm9wID0gdHJ1ZTsgcmV0dXJuIGZhbHNlOyI+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0
bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWluLWxpbmst
YW5kLWlucHV0Lmh0bWwKaW5kZXggMjBiY2UyNTA4YTA1NWMyNjBlNDQ2ZDM5MjY2YjUzY2I5N2M2
ODYyOS4uOTUxY2Y1Y2QzMjE1ZTA1ZmNiOGM2MTJhYTI5MDdhMGRmNjAzYjlmMyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFu
ZC1pbnB1dC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
aW1hZ2UtaW4tbGluay1hbmQtaW5wdXQuaHRtbApAQCAtMjUsNiArMjUsNiBAQAogPC9oZWFkPgog
CiA8Ym9keT4KLSAgICA8ZGl2PjxhIGlkPSJsaW5rIiBocmVmPSJodHRwczovL3d3dy5hcHBsZS5j
b20iPjxpbWcgc3JjPSJpY29uLnBuZyI+PC9pbWc+PC9hPjwvZGl2PgotICAgIDxkaXY+PGlucHV0
IGlkPSJlZGl0b3IiPjwvaW5wdXQ+PC9kaXY+CisgICAgPGRpdiBpZD0idG9wIj48YSBpZD0ibGlu
ayIgaHJlZj0iaHR0cHM6Ly93d3cuYXBwbGUuY29tIj48aW1nIHNyYz0iaWNvbi5wbmciPjwvaW1n
PjwvYT48L2Rpdj4KKyAgICA8ZGl2IGlkPSJib3R0b20iPjxpbnB1dCBpZD0iZWRpdG9yIj48L2lu
cHV0PjwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9saW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODllODNlNmVmOTVjODUzYjMwMTYxZTY1NDMzNDVkZjBmMWFkNDJmMQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGlu
ay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Ut
d2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0
aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCitpZnJhbWUs
IGlucHV0IHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDI1MHB4OworICAgIGRpc3Bs
YXk6IGJsb2NrOworICAgIGZvbnQtc2l6ZTogMTAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8aW5wdXQ+PC9pbnB1dD4KKzxpZnJhbWUgc3JjZG9jPSI8YSBocmVmPSdodHRwczov
L3d3dy5hcHBsZS5jb20vJyBzdHlsZT0nZm9udC1zaXplOiAxMDBweDsnPkxpbmsgdG8gYXBwbGUu
Y29tPC9hPiI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0RyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0ODFiYmFlMGM3YWU1NDI1Mjc0Y2FhOGEzYTFmNmY0YTAxNDQ0ZGNmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0j
aW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxBcHBLaXQvTlNEcmFnZ2luZy5oPgot
I2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1AaW50ZXJmYWNlIEZyYW1lTG9hZENvbXBsZXRpb25M
aXN0ZW5lciA6IE5TT2JqZWN0PFdlYkZyYW1lTG9hZERlbGVnYXRlPiB7Ci0gICAgQmxvY2tQdHI8
dm9pZCAodm9pZCk+IF9jb21wbGV0aW9uQmxvY2s7Ci19Ci0rIChpbnN0YW5jZXR5cGUpbGlzdGVu
ZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jazsK
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lcgotCi0r
IChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9j
a190KWNvbXBsZXRpb25CbG9jawotewotICAgIHJldHVybiBbW1tGcmFtZUxvYWRDb21wbGV0aW9u
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkJsb2NrOmNvbXBsZXRpb25CbG9ja10g
YXV0b3JlbGVhc2VdOwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb21wbGV0aW9uQmxv
Y2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJsb2NrCi17Ci0gICAgaWYgKHNlbGYgPSBb
c3VwZXIgaW5pdF0pCi0gICAgICAgIF9jb21wbGV0aW9uQmxvY2sgPSBjb21wbGV0aW9uQmxvY2s7
Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQotewotICAgIGlmIChf
Y29tcGxldGlvbkJsb2NrKQotICAgICAgICBfY29tcGxldGlvbkJsb2NrKCk7Ci19Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRHJhZ1NvdXJjZSA6IE5TT2JqZWN0Ci0tIChOU0RyYWdPcGVyYXRpb24pZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6KEJPT0wpZmxhZzsKLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERyYWdTb3VyY2UKLQotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOihCT09MKWZsYWcKLXsKLSAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uQ29weTsKLX0KLQotQGVuZAotCi1AaW50ZXJmYWNlIERyYWdJbmZvIDogTlNPYmpl
Y3Q8TlNEcmFnZ2luZ0luZm8+IHsKLSAgICBOU1BvaW50IF9sYXN0TW91c2VQb3NpdGlvbjsKLSAg
ICBSZXRhaW5QdHI8TlNJbWFnZT4gX2ltYWdlOwotICAgIFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+
IF9wYXN0ZWJvYXJkOwotICAgIFJldGFpblB0cjxEcmFnU291cmNlPiBfc291cmNlOwotICAgIFJl
dGFpblB0cjxOU1dpbmRvdz4gX3dpbmRvdzsKLSAgICBOU1NpemUgX29mZnNldDsKLSAgICBOU0lu
dGVnZXIgX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7Ci19Ci1AcHJvcGVydHkgKG5vbmF0b21p
YykgTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERy
YWdJbmZvCi0KLS0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZzZXQ6KE5T
U2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBzb3VyY2U6
KERyYWdTb3VyY2UgKilzb3VyY2UgZGVzdGluYXRpb25XaW5kb3c6KE5TV2luZG93ICopZGVzdGlu
YXRpb25XaW5kb3cKLXsKLSAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewotICAgICAgICBf
aW1hZ2UgPSBpbWFnZTsKLSAgICAgICAgX3Bhc3RlYm9hcmQgPSBwYXN0ZWJvYXJkOwotICAgICAg
ICBfc291cmNlID0gc291cmNlOwotICAgICAgICBfd2luZG93ID0gZGVzdGluYXRpb25XaW5kb3c7
Ci0gICAgICAgIF9vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgfQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tIChOU1BvaW50KWxhc3RNb3VzZVBvc2l0aW9uCi17Ci0gICAgcmV0dXJuIF9sYXN0TW91c2VQ
b3NpdGlvbjsKLX0KLQotLSAodm9pZClzZXRMYXN0TW91c2VQb3NpdGlvbjooTlNQb2ludClsYXN0
TW91c2VQb3NpdGlvbgotewotICAgIF9sYXN0TW91c2VQb3NpdGlvbiA9IGxhc3RNb3VzZVBvc2l0
aW9uOwotfQotCi0tIChOU1dpbmRvdyAqKWRyYWdnaW5nRGVzdGluYXRpb25XaW5kb3cKLXsKLSAg
ICByZXR1cm4gX3dpbmRvdy5nZXQoKTsKLX0KLQotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzawotewotICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5Owot
fQotCi0tIChOU1BvaW50KWRyYWdnaW5nTG9jYXRpb24KLXsKLSAgICByZXR1cm4gX2xhc3RNb3Vz
ZVBvc2l0aW9uOwotfQotCi0tIChOU1BvaW50KWRyYWdnZWRJbWFnZUxvY2F0aW9uCi17Ci0gICAg
cmV0dXJuIE5TTWFrZVBvaW50KF9sYXN0TW91c2VQb3NpdGlvbi54ICsgX29mZnNldC53aWR0aCwg
X2xhc3RNb3VzZVBvc2l0aW9uLnkgKyBfb2Zmc2V0LmhlaWdodCk7Ci19Ci0KLS0gKE5TSW1hZ2Ug
KilkcmFnZ2VkSW1hZ2UKLXsKLSAgICByZXR1cm4gX2ltYWdlLmdldCgpOwotfQotCi0tIChOU1Bh
c3RlYm9hcmQgKilkcmFnZ2luZ1Bhc3RlYm9hcmQKLXsKLSAgICByZXR1cm4gX3Bhc3RlYm9hcmQu
Z2V0KCk7Ci19Ci0KLS0gKGlkKWRyYWdnaW5nU291cmNlCi17Ci0gICAgcmV0dXJuIF9zb3VyY2Uu
Z2V0KCk7Ci19Ci0KLS0gKE5TSW50ZWdlcilkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyCi17Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KLS0gKHZvaWQpc2xpZGVEcmFnZ2VkSW1hZ2VUbzooTlNQb2ludClzY3Jl
ZW5Qb2ludAotewotfQotCi0tIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVk
QXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRpb24KLXsKLSAgICByZXR1cm4gbmls
OwotfQotCi0tIChOU0RyYWdnaW5nRm9ybWF0aW9uKWRyYWdnaW5nRm9ybWF0aW9uCi17Ci0gICAg
cmV0dXJuIE5TRHJhZ2dpbmdGb3JtYXRpb25EZWZhdWx0OwotfQotCi0tICh2b2lkKXNldERyYWdn
aW5nRm9ybWF0aW9uOihOU0RyYWdnaW5nRm9ybWF0aW9uKWZvcm1hdGlvbgotewotfQotCi0tIChC
T09MKWFuaW1hdGVzVG9EZXN0aW5hdGlvbgotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9p
ZClzZXRBbmltYXRlc1RvRGVzdGluYXRpb246KEJPT0wpZmxhZwotewotfQotCi0tIChOU0ludGVn
ZXIpbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcAotewotICAgIHJldHVybiBfbnVtYmVyT2ZWYWxp
ZEl0ZW1zRm9yRHJvcDsKLX0KLQotLSAodm9pZClzZXROdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9w
OihOU0ludGVnZXIpbnVtYmVyCi17Ci0gICAgX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBu
dW1iZXI7Ci19Ci0KLS0gKHZvaWQpZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOihO
U0VudW1lcmF0aW9uT3B0aW9ucyllbnVtT3B0cyBmb3JWaWV3OihOU1ZpZXcgKil2aWV3IGNsYXNz
ZXM6KE5TQXJyYXkgKiljbGFzc0FycmF5IHNlYXJjaE9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKXNl
YXJjaE9wdGlvbnMgdXNpbmdCbG9jazoodm9pZCAoXikoTlNEcmFnZ2luZ0l0ZW0gKmRyYWdnaW5n
SXRlbSwgTlNJbnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkpYmxvY2sKLXsKLX0KLQotLSAoTlNTcHJp
bmdMb2FkaW5nSGlnaGxpZ2h0KXNwcmluZ0xvYWRpbmdIaWdobGlnaHQKLXsKLSAgICByZXR1cm4g
TlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Tm9uZTsKLX0KLQotLSAodm9pZClyZXNldFNwcmluZ0xv
YWRpbmcKLXsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRp
YyBOU0ltYWdlICpnZXRUZXN0SW1hZ2UoKQotewotICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9j
XSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKLX0KLQotc3RhdGljIFdlYlZpZXcgKndl
YlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKE5TUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCkKLXsKLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gZGVzdGluYXRpb24gPSBhZG9wdE5TKFtbV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOwot
ICAgIFJldGFpblB0cjxOU1dpbmRvdz4gaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHls
ZU1hc2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBb
aG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQb2ludCgwLCAwKV07Ci0gICAgW1tob3N0
V2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OmRlc3RpbmF0aW9uLmdldCgpXTsKLSAgICBf
X2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0gICAgW2Rlc3RpbmF0aW9uIHNldEZyYW1lTG9h
ZERlbGVnYXRlOltGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxl
dGlvbkJsb2NrOl4oKSB7Ci0gICAgICAgIFJldGFpblB0cjxEcmFnU291cmNlPiBzb3VyY2UgPSBh
ZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5pdF0pOwotICAgICAgICBSZXRhaW5QdHI8RHJh
Z0luZm8+IGluZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6Z2V0
VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwgMCkgcGFzdGVib2FyZDpwYXN0ZWJvYXJk
IHNvdXJjZTpzb3VyY2UuZ2V0KCkgZGVzdGluYXRpb25XaW5kb3c6aG9zdFdpbmRvdy5nZXQoKV0p
OwotICAgICAgICBbaW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgwLCAyMDAp
XTsKLSAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5nRW50ZXJlZDppbmZvLmdldCgpXTsKLSAg
ICAgICAgW2luZm8gc2V0TGFzdE1vdXNlUG9zaXRpb246TlNNYWtlUG9pbnQoMjAwLCAyMDApXTsK
LSAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5nVXBkYXRlZDppbmZvLmdldCgpXTsKLQotICAg
ICAgICBFWFBFQ1RfVFJVRShbZGVzdGluYXRpb24gcGVyZm9ybURyYWdPcGVyYXRpb246aW5mby5n
ZXQoKV0pOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dXTsKLSAgICBbW2Rlc3RpbmF0
aW9uIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiZnVsbC1wYWdlLWNvbnRlbnRl
ZGl0YWJsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKLSAgICByZXR1cm4gZGVzdGluYXRpb24uZ2V0KCk7Ci19Ci0KLVRFU1QoRHJhZ0FuZERyb3BQ
YXN0ZWJvYXJkVGVzdHMsIERyb3BVVEY4UGxhaW5UZXh0KQotewotICAgIE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKLSAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOltAIkkgYW0gYSBXZWJLaXQuIiBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlVVRGOFBsYWluVGV4dF07Ci0KLSAgICBSZXRhaW5QdHI8V2ViVmlldz4gcmVzdWx0aW5nV2Vi
VmlldyA9IHdlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKHBhc3RlYm9hcmQpOwot
ICAgIEVYUEVDVF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQiXSBjb250YWluc1N0
cmluZzpAIkkgYW0gYSBXZWJLaXQuIl0pOwotfQotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2Fy
ZFRlc3RzLCBEcm9wSlBFRykKLXsKLSAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQ
YXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgTlNJbWFnZSAqaWNvbiA9
IGdldFRlc3RJbWFnZSgpOwotICAgIE5TQml0bWFwSW1hZ2VSZXAgKmltYWdlUmVwID0gW05TQml0
bWFwSW1hZ2VSZXAgaW1hZ2VSZXBXaXRoRGF0YTppY29uLlRJRkZSZXByZXNlbnRhdGlvbl07Ci0g
ICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbaW1hZ2VSZXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6
TlNKUEVHRmlsZVR5cGUgcHJvcGVydGllczpAeyBOU0ltYWdlQ29tcHJlc3Npb25GYWN0b3I6IEAo
MC45KSB9XSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHXTsKLQotICAg
IFJldGFpblB0cjxXZWJWaWV3PiByZXN1bHRpbmdXZWJWaWV3ID0gd2ViVmlld0FmdGVyUGVyZm9y
bWluZ0RyYWdPcGVyYXRpb24ocGFzdGVib2FyZCk7Ci0gICAgRVhQRUNUX1RSVUUoW1tyZXN1bHRp
bmdXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignaW1nJykudGFnTmFtZSA9PT0gJ0lNRyciXSBpc0VxdWFsVG9TdHJp
bmc6QCJ0cnVlIl0pOwotfQotICAgIAotI2lmIFdLX0FQSV9FTkFCTEVECi0KLVRFU1QoRHJhZ0Fu
ZERyb3BQYXN0ZWJvYXJkVGVzdHMsIE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApCi17Ci0gICAg
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVu
aXF1ZU5hbWVdOwotICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TRmlsZW5hbWVzUGJv
YXJkVHlwZV0gb3duZXI6bmlsXTsKLSAgICBbcGFzdGVib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6QFtA
ImZpbGUtbmFtZSJdIGZvclR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXTsKLQotICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7Ci0gICAgYXV0byBob3N0V2luZG93ID0gYWRvcHRO
UyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwg
NDAwLCA0MDApIHN0eWxlTWFzazowIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpOT10pOwotICAgIFtob3N0V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFrZVBvaW50KDAsIDAp
XTsKLSAgICBbW2hvc3RXaW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQo
KV07Ci0KLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmdWxs
LXBhZ2UtZHJvcHpvbmUiXTsKLQotICAgIGF1dG8gZHJhZ1NvdXJjZSA9IGFkb3B0TlMoW1tEcmFn
U291cmNlIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBkcmFnSW5mbyA9IGFkb3B0TlMoW1tEcmFn
SW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpnZXRUZXN0SW1hZ2UoKSBvZmZzZXQ6TlNNYWtlU2l6
ZSgwLCAwKSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOmRyYWdTb3VyY2UuZ2V0KCkgZGVz
dGluYXRpb25XaW5kb3c6aG9zdFdpbmRvdy5nZXQoKV0pOwotCi0gICAgW2RyYWdJbmZvIHNldExh
c3RNb3VzZVBvc2l0aW9uOk5TTWFrZVBvaW50KDAsIDIwMCldOwotICAgIFt3ZWJWaWV3IGRyYWdn
aW5nRW50ZXJlZDpkcmFnSW5mby5nZXQoKV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKEAiMSIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuZHJhZ0VudGVyZWRG
b3JUZXN0aW5nIl0pOwotCi0gICAgW2RyYWdJbmZvIHNldExhc3RNb3VzZVBvc2l0aW9uOk5TTWFr
ZVBvaW50KDIwMCwgMjAwKV07Ci0gICAgW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdJbmZv
LmdldCgpXTsKLSAgICBFWFBFQ1RfRVEoMVUsIFtkcmFnSW5mbyBudW1iZXJPZlZhbGlkSXRlbXNG
b3JEcm9wXSk7Ci19Ci0KLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAotCi19IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BUZXN0c01hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0RyYWdBbmREcm9wVGVzdHNNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYzNzcyYTQ0NTMy
ODdiNDY3Nzc2NTVkYTE3YWUyOThmM2QzYzA1YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdBbmREcm9wVGVzdHNNYWMubW0KQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJEcmFnQW5k
RHJvcFNpbXVsYXRvci5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2lmIFdL
X0FQSV9FTkFCTEVEICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQ09TKQor
CitURVNUKERyYWdBbmREcm9wVGVzdHMsIE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApCit7Cisg
ICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0
aFVuaXF1ZU5hbWVdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAW05TRmlsZW5hbWVz
UGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6
QFtAImZpbGUtbmFtZSJdIGZvclR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXTsKKworICAgIGF1
dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0
V2l0aFdlYlZpZXdGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFRlc3RX
S1dlYlZpZXcgKndlYlZpZXcgPSBbc2ltdWxhdG9yIHdlYlZpZXddOworICAgIFtzaW11bGF0b3Ig
c2V0RXh0ZXJuYWxEcmFnUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKKworICAgIGF1dG8gaG9zdFdp
bmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01h
a2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1hc2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBbaG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01h
a2VQb2ludCgwLCAwKV07CisgICAgW1tob3N0V2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3
OndlYlZpZXddOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
ImZ1bGwtcGFnZS1kcm9wem9uZSJdOworCisgICAgTlNJbnRlZ2VyIG51bWJlck9mVmFsaWRJdGVt
c0ZvckRyb3AgPSAwOworICAgIFtzaW11bGF0b3Igc2V0V2lsbEVuZERyYWdnaW5nSGFuZGxlcjpb
Jm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AsIHNpbXVsYXRvcl0geworICAgICAgICBudW1iZXJP
ZlZhbGlkSXRlbXNGb3JEcm9wID0gW3NpbXVsYXRvciBkcmFnZ2luZ0luZm9dLm51bWJlck9mVmFs
aWRJdGVtc0ZvckRyb3A7CisgICAgfV07CisKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206TlNNYWtl
UG9pbnQoMCwgMCkgdG86TlNNYWtlUG9pbnQoMjAwLCAyMDApXTsKKworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJvYnNlcnZlZERyYWdFbnRl
ciJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAIm9ic2VydmVkRHJhZ092ZXIiXS5ib29sVmFsdWUpOworICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJvYnNlcnZlZERy
b3AiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9FUSgxVSwgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9y
RHJvcCk7Cit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBFTkFCTEUoRFJBR19TVVBQ
T1JUKSAmJiBQTEFURk9STShNQUNPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYjZjNDAx
NzgzOTVlNjU3OWE1N2ZmNjhjOGZkNTIyMDM3MGZiZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tCkBAIC0w
LDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgUExB
VEZPUk0oTUFDKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4KKyNpbXBvcnQgPFdl
YktpdC9XZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgOiBO
U09iamVjdDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4geworICAgIEJsb2NrUHRyPHZvaWQoKT4gX2Nv
bXBsZXRpb25CbG9jazsKK30KKysgKGluc3RhbmNldHlwZSlsaXN0ZW5lcldpdGhDb21wbGV0aW9u
QmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJsb2NrOworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyCisKKysgKGluc3RhbmNldHlwZSls
aXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJs
b2NrCit7CisgICAgcmV0dXJuIFtbW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBhbGxvY10g
aW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrXSBhdXRvcmVsZWFzZV07Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxv
Y2tfdCljb21wbGV0aW9uQmxvY2sKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAg
ICAgICAgX2NvbXBsZXRpb25CbG9jayA9IGNvbXBsZXRpb25CbG9jazsKKworICAgIHJldHVybiBz
ZWxmOworfQorCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9h
ZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgaWYgKF9jb21wbGV0aW9uQmxvY2sp
CisgICAgICAgIF9jb21wbGV0aW9uQmxvY2soKTsKK30KK0BlbmQKKworQGludGVyZmFjZSBEcmFn
U291cmNlIDogTlNPYmplY3QKKy0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tGb3JMb2NhbDooQk9PTClmbGFnOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRHJh
Z1NvdXJjZQorCistIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
Rm9yTG9jYWw6KEJPT0wpZmxhZworeworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5Owor
fQorCitAZW5kCisKK0BpbnRlcmZhY2UgRHJhZ0luZm8gOiBOU09iamVjdDxOU0RyYWdnaW5nSW5m
bz4geworICAgIE5TUG9pbnQgX2xhc3RNb3VzZVBvc2l0aW9uOworICAgIFJldGFpblB0cjxOU0lt
YWdlPiBfaW1hZ2U7CisgICAgUmV0YWluUHRyPE5TUGFzdGVib2FyZD4gX3Bhc3RlYm9hcmQ7Cisg
ICAgUmV0YWluUHRyPERyYWdTb3VyY2U+IF9zb3VyY2U7CisgICAgUmV0YWluUHRyPE5TV2luZG93
PiBfd2luZG93OworICAgIE5TU2l6ZSBfb2Zmc2V0OworICAgIE5TSW50ZWdlciBfbnVtYmVyT2ZW
YWxpZEl0ZW1zRm9yRHJvcDsKK30KK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1BvaW50IGxhc3RN
b3VzZVBvc2l0aW9uOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRHJhZ0luZm8KKworLSAoaWQp
aW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWltYWdlIG9mZnNldDooTlNTaXplKW9mZnNldCBwYXN0
ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIHNvdXJjZTooRHJhZ1NvdXJjZSAqKXNv
dXJjZSBkZXN0aW5hdGlvbldpbmRvdzooTlNXaW5kb3cgKilkZXN0aW5hdGlvbldpbmRvdworewor
ICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9pbWFnZSA9IGltYWdlOwor
ICAgICAgICBfcGFzdGVib2FyZCA9IHBhc3RlYm9hcmQ7CisgICAgICAgIF9zb3VyY2UgPSBzb3Vy
Y2U7CisgICAgICAgIF93aW5kb3cgPSBkZXN0aW5hdGlvbldpbmRvdzsKKyAgICAgICAgX29mZnNl
dCA9IG9mZnNldDsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TUG9pbnQpbGFz
dE1vdXNlUG9zaXRpb24KK3sKKyAgICByZXR1cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQorCist
ICh2b2lkKXNldExhc3RNb3VzZVBvc2l0aW9uOihOU1BvaW50KWxhc3RNb3VzZVBvc2l0aW9uCit7
CisgICAgX2xhc3RNb3VzZVBvc2l0aW9uID0gbGFzdE1vdXNlUG9zaXRpb247Cit9CisKKy0gKE5T
V2luZG93ICopZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvdworeworICAgIHJldHVybiBfd2luZG93
LmdldCgpOworfQorCistIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrCit7CisgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7Cit9CisKKy0gKE5TUG9pbnQp
ZHJhZ2dpbmdMb2NhdGlvbgoreworICAgIHJldHVybiBfbGFzdE1vdXNlUG9zaXRpb247Cit9CisK
Ky0gKE5TUG9pbnQpZHJhZ2dlZEltYWdlTG9jYXRpb24KK3sKKyAgICByZXR1cm4gTlNNYWtlUG9p
bnQoX2xhc3RNb3VzZVBvc2l0aW9uLnggKyBfb2Zmc2V0LndpZHRoLCBfbGFzdE1vdXNlUG9zaXRp
b24ueSArIF9vZmZzZXQuaGVpZ2h0KTsKK30KKworLSAoTlNJbWFnZSAqKWRyYWdnZWRJbWFnZQor
eworICAgIHJldHVybiBfaW1hZ2UuZ2V0KCk7Cit9CisKKy0gKE5TUGFzdGVib2FyZCAqKWRyYWdn
aW5nUGFzdGVib2FyZAoreworICAgIHJldHVybiBfcGFzdGVib2FyZC5nZXQoKTsKK30KKworLSAo
aWQpZHJhZ2dpbmdTb3VyY2UKK3sKKyAgICByZXR1cm4gX3NvdXJjZS5nZXQoKTsKK30KKworLSAo
TlNJbnRlZ2VyKWRyYWdnaW5nU2VxdWVuY2VOdW1iZXIKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
LSAodm9pZClzbGlkZURyYWdnZWRJbWFnZVRvOihOU1BvaW50KXNjcmVlblBvaW50Cit7Cit9CisK
Ky0gKE5TQXJyYXkgKiluYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihO
U1VSTCAqKWRyb3BEZXN0aW5hdGlvbgoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TRHJh
Z2dpbmdGb3JtYXRpb24pZHJhZ2dpbmdGb3JtYXRpb24KK3sKKyAgICByZXR1cm4gTlNEcmFnZ2lu
Z0Zvcm1hdGlvbkRlZmF1bHQ7Cit9CisKKy0gKHZvaWQpc2V0RHJhZ2dpbmdGb3JtYXRpb246KE5T
RHJhZ2dpbmdGb3JtYXRpb24pZm9ybWF0aW9uCit7Cit9CisKKy0gKEJPT0wpYW5pbWF0ZXNUb0Rl
c3RpbmF0aW9uCit7CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKXNldEFuaW1hdGVzVG9E
ZXN0aW5hdGlvbjooQk9PTClmbGFnCit7Cit9CisKKy0gKE5TSW50ZWdlciludW1iZXJPZlZhbGlk
SXRlbXNGb3JEcm9wCit7CisgICAgcmV0dXJuIF9udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwor
fQorCistICh2b2lkKXNldE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A6KE5TSW50ZWdlciludW1i
ZXIKK3sKKyAgICBfbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG51bWJlcjsKK30KKworLSAo
dm9pZCllbnVtZXJhdGVEcmFnZ2luZ0l0ZW1zV2l0aE9wdGlvbnM6KE5TRW51bWVyYXRpb25PcHRp
b25zKWVudW1PcHRzIGZvclZpZXc6KE5TVmlldyAqKXZpZXcgY2xhc3NlczooTlNBcnJheSAqKWNs
YXNzQXJyYXkgc2VhcmNoT3B0aW9uczooTlNEaWN0aW9uYXJ5ICopc2VhcmNoT3B0aW9ucyB1c2lu
Z0Jsb2NrOih2b2lkICheKShOU0RyYWdnaW5nSXRlbSAqZHJhZ2dpbmdJdGVtLCBOU0ludGVnZXIg
aWR4LCBCT09MICpzdG9wKSlibG9jaworeworfQorCistIChOU1NwcmluZ0xvYWRpbmdIaWdobGln
aHQpc3ByaW5nTG9hZGluZ0hpZ2hsaWdodAoreworICAgIHJldHVybiBOU1NwcmluZ0xvYWRpbmdI
aWdobGlnaHROb25lOworfQorCistICh2b2lkKXJlc2V0U3ByaW5nTG9hZGluZworeworfQorCitA
ZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIE5TSW1hZ2UgKmdldFRl
c3RJbWFnZSgpCit7CisgICAgcmV0dXJuIFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ29udGVu
dHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaWNvbiIgd2l0
aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV0gYXV0b3JlbGVhc2VdOworfQorCitzdGF0aWMgV2ViVmlldyAqd2ViVmlld0FmdGVyUGVyZm9y
bWluZ0RyYWdPcGVyYXRpb24oTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkKQoreworICAgIFJldGFp
blB0cjxXZWJWaWV3PiBkZXN0aW5hdGlvbiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgUmV0YWluUHRyPE5T
V2luZG93PiBob3N0V2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApIHN0eWxlTWFzazowIGJhY2tpbmc6
TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIFtob3N0V2luZG93IHNldEZy
YW1lT3JpZ2luOk5TTWFrZVBvaW50KDAsIDApXTsKKyAgICBbW2hvc3RXaW5kb3cgY29udGVudFZp
ZXddIGFkZFN1YnZpZXc6ZGVzdGluYXRpb24uZ2V0KCldOworICAgIF9fYmxvY2sgYm9vbCBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbZGVzdGluYXRpb24gc2V0RnJhbWVMb2FkRGVsZWdhdGU6W0ZyYW1l
TG9hZENvbXBsZXRpb25MaXN0ZW5lciBsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6XigpIHsK
KyAgICAgICAgUmV0YWluUHRyPERyYWdTb3VyY2U+IHNvdXJjZSA9IGFkb3B0TlMoW1tEcmFnU291
cmNlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFJldGFpblB0cjxEcmFnSW5mbz4gaW5mbyA9IGFk
b3B0TlMoW1tEcmFnSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpnZXRUZXN0SW1hZ2UoKSBvZmZz
ZXQ6TlNNYWtlU2l6ZSgwLCAwKSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZS5n
ZXQoKSBkZXN0aW5hdGlvbldpbmRvdzpob3N0V2luZG93LmdldCgpXSk7CisgICAgICAgIFtpbmZv
IHNldExhc3RNb3VzZVBvc2l0aW9uOk5TTWFrZVBvaW50KDAsIDIwMCldOworICAgICAgICBbZGVz
dGluYXRpb24gZHJhZ2dpbmdFbnRlcmVkOmluZm8uZ2V0KCldOworICAgICAgICBbaW5mbyBzZXRM
YXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgyMDAsIDIwMCldOworICAgICAgICBbZGVzdGlu
YXRpb24gZHJhZ2dpbmdVcGRhdGVkOmluZm8uZ2V0KCldOworCisgICAgICAgIEVYUEVDVF9UUlVF
KFtkZXN0aW5hdGlvbiBwZXJmb3JtRHJhZ09wZXJhdGlvbjppbmZvLmdldCgpXSk7CisgICAgICAg
IGlzRG9uZSA9IHRydWU7CisgICAgfV1dOworICAgIFtbZGVzdGluYXRpb24gbWFpbkZyYW1lXSBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIHJldHVybiBk
ZXN0aW5hdGlvbi5nZXQoKTsKK30KKworVEVTVChMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLCBEcm9w
VVRGOFBsYWluVGV4dCkKK3sKKyAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0
ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTpbQCJJIGFtIGEgV2ViS2l0LiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHRdOwor
CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHJlc3VsdGluZ1dlYlZpZXcgPSB3ZWJWaWV3QWZ0ZXJQ
ZXJmb3JtaW5nRHJhZ09wZXJhdGlvbihwYXN0ZWJvYXJkKTsKKyAgICBFWFBFQ1RfVFJVRShbW3Jl
c3VsdGluZ1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6QCJk
b2N1bWVudC5ib2R5LnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJJIGFtIGEgV2ViS2l0
LiJdKTsKK30KKworVEVTVChMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLCBEcm9wSlBFRykKK3sKKyAg
ICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRo
VW5pcXVlTmFtZV07CisgICAgTlNJbWFnZSAqaWNvbiA9IGdldFRlc3RJbWFnZSgpOworICAgIE5T
Qml0bWFwSW1hZ2VSZXAgKmltYWdlUmVwID0gW05TQml0bWFwSW1hZ2VSZXAgaW1hZ2VSZXBXaXRo
RGF0YTppY29uLlRJRkZSZXByZXNlbnRhdGlvbl07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpb
aW1hZ2VSZXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNKUEVHRmlsZVR5cGUgcHJvcGVydGll
czpAeyBOU0ltYWdlQ29tcHJlc3Npb25GYWN0b3I6IEAoMC45KSB9XSBmb3JUeXBlOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHXTsKKworICAgIFJldGFpblB0cjxXZWJWaWV3PiByZXN1
bHRpbmdXZWJWaWV3ID0gd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24ocGFzdGVi
b2FyZCk7CisgICAgRVhQRUNUX1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW1nJyku
dGFnTmFtZSA9PT0gJ0lNRyciXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl0pOworfQorCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9mdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDk0NTk4YTBiZGMxNDAxNDQ0ZWQ0MzFmZTE3NTMyMTFkNjUzNTNj
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9mdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08Ym9keSBzdHlsZT0id2lkdGg6
IDEwMHZ3OyBoZWlnaHQ6IDEwMHZoOyBtYXJnaW46IDA7IiBvbmRyYWdlbnRlcj0id2luZG93LmRy
YWdFbnRlcmVkRm9yVGVzdGluZyA9IHRydWU7IHJldHVybiBmYWxzZTsiPgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCmluZGV4IGYzYjEyODg2
NzVhYTM3NGVjYjFkMTNjZWZjMzU3YTcwZDRjMTk2OTEuLjg0YzhiZTNmZDc5NDU0NDJlNDlmYzJi
ZjQ3YTEwNWU5NDBiYzM3MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
RHJhZ0FuZERyb3BTaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0Ry
YWdBbmREcm9wU2ltdWxhdG9yLmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbXBvcnQgPFVJS2l0L05T
SXRlbVByb3ZpZGVyK1VJS2l0QWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElP
UykKKwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRHJhZ0FuZERyb3BQaGFzZSkgewogICAg
IERyYWdBbmREcm9wUGhhc2VDYW5jZWxsZWQgPSAwLAogICAgIERyYWdBbmREcm9wUGhhc2VCZWdp
bm5pbmcgPSAxLApAQCAtNDUsOCArNDcsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBE
cmFnQW5kRHJvcFBoYXNlKSB7CiAgICAgRHJhZ0FuZERyb3BQaGFzZVBlcmZvcm1pbmdEcm9wID0g
NAogfTsKIAotI2lmIFBMQVRGT1JNKElPUykKLQogdHlwZWRlZiBOU0RpY3Rpb25hcnk8TlNOdW1i
ZXIgKiwgTlNWYWx1ZSAqPiAqUHJvZ3Jlc3NUb0NHUG9pbnRWYWx1ZU1hcDsKIAogQGludGVyZmFj
ZSBNb2NrRHJhZ0Ryb3BTZXNzaW9uIDogTlNPYmplY3QgPFVJRHJhZ0Ryb3BTZXNzaW9uPiB7CkBA
IC03NSwxOSArNzUsMjIgQEAgdHlwZWRlZiBOU0RpY3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1
ZSAqPiAqUHJvZ3Jlc3NUb0NHUG9pbnRWYWx1ZU1hcDsKIAogQGludGVyZmFjZSBEcmFnQW5kRHJv
cFNpbXVsYXRvciA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0ZVByaXZhdGUsIF9XS0lucHV0RGVsZWdh
dGU+CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3
ZWJWaWV3OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJh
bWU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBj
b25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbjsKIC8v
IFRoZSBzdGFydCBsb2NhdGlvbiwgZW5kIGxvY2F0aW9uLCBhbmQgbG9jYXRpb25zIG9mIGFkZGl0
aW9uYWwgaXRlbSByZXF1ZXN0cyBhcmUgYWxsIGluIHdpbmRvdyBjb29yZGluYXRlcy4KIC0gKHZv
aWQpcnVuRnJvbTooQ0dQb2ludClzdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9u
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PF9XS0F0dGFjaG1lbnQg
Kj4gKmluc2VydGVkQXR0YWNobWVudHM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TQXJyYXk8X1dLQXR0YWNobWVudCAqPiAqcmVtb3ZlZEF0dGFjaG1lbnRzOwotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBEcmFnQW5kRHJvcFBoYXNlIHBoYXNlOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3OwogCiAjaWYgUExB
VEZPUk0oSU9TKQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJW
aWV3ICopd2ViVmlldzsKIC0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClzdGFydExvY2F0aW9uIHRv
OihDR1BvaW50KWVuZExvY2F0aW9uIGFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9uczooUHJv
Z3Jlc3NUb0NHUG9pbnRWYWx1ZU1hcClhZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM7CiAt
ICh2b2lkKXdhaXRGb3JJbnB1dFNlc3Npb247CiAtICh2b2lkKWVuZERhdGFUcmFuc2ZlcjsKIAor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBEcmFnQW5kRHJvcFBoYXNlIHBoYXNlOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9u
OwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvdWxkRW5zdXJlVUlBcHBsaWNhdGlvbjsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZEFsbG93TW92ZU9wZXJhdGlvbjsKQEAg
LTEwNiw2ICsxMDksMTcgQEAgdHlwZWRlZiBOU0RpY3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1
ZSAqPiAqUHJvZ3Jlc3NUb0NHUG9pbnRWYWx1ZU1hcDsKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKIAorI2lmIFBMQVRGT1JNKE1BQykKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNQb2ludCBpbml0aWFsRHJhZ0ltYWdlTG9jYXRpb25JblZpZXc7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ09w
ZXJhdGlvbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TUGFzdGVib2FyZCAqZXh0
ZXJuYWxEcmFnUGFzdGVib2FyZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TSW1h
Z2UgKmV4dGVybmFsRHJhZ0ltYWdlOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIGRpc3Bh
dGNoX2Jsb2NrX3Qgd2lsbEVuZERyYWdnaW5nSGFuZGxlcjsKKworI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKKwogQGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgV0tfQVBJ
X0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXgg
Y2Y5OGRhYTIzNGMwOTg1N2E2NWU1NmEyYjI4ZTJlZTA5MGE3ZTk0Ny4uMDUxZmEyOTJkYzdjYjA2
M2YzMjJhOTQ3OWUxNzZkODc1MjRlMGM2NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3LmgKQEAgLTcyLDEwICs3MiwxMiBAQAogI2lmIFBMQVRGT1JNKE1BQykKIEBp
bnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoTWFjT25seSkKIC8vIFNpbXVsYXRlcyBjbGlja2luZyB3
aXRoIGEgcHJlc3N1cmUtc2Vuc2l0aXZlIGRldmljZSwgaWYgcG9zc2libGUuCi0tICh2b2lkKW1v
dXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgc2ltdWxhdGVQcmVzc3VyZTooQk9PTClzaW11
bGF0ZVByZXNzdXJlOwotLSAodm9pZCltb3VzZVVwQXRQb2ludDooTlNQb2ludClwb2ludDsKLS0g
KHZvaWQpbW91c2VNb3ZlVG9Qb2ludDooTlNQb2ludClwb2ludCB3aXRoRmxhZ3M6KE5TRXZlbnRN
b2RpZmllckZsYWdzKWZsYWdzOwotLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClw
b2ludCBudW1iZXJPZkNsaWNrczooTlNVSW50ZWdlciludW1iZXJPZkNsaWNrczsKKy0gKHZvaWQp
bW91c2VEb3duQXRQb2ludDooTlNQb2ludClwb2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6
KEJPT0wpc2ltdWxhdGVQcmVzc3VyZTsKKy0gKHZvaWQpbW91c2VEcmFnVG9Qb2ludDooTlNQb2lu
dClwb2ludEluV2luZG93OworLSAodm9pZCltb3VzZUVudGVyQXRQb2ludDooTlNQb2ludClwb2lu
dEluV2luZG93OworLSAodm9pZCltb3VzZVVwQXRQb2ludDooTlNQb2ludClwb2ludEluV2luZG93
OworLSAodm9pZCltb3VzZU1vdmVUb1BvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cgd2l0aEZs
YWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFnczsKKy0gKHZvaWQpc2VuZENsaWNrc0F0UG9p
bnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBudW1iZXJPZkNsaWNrczooTlNVSW50ZWdlciludW1i
ZXJPZkNsaWNrczsKIC0gKE5TV2luZG93ICopaG9zdFdpbmRvdzsKIC0gKHZvaWQpdHlwZUNoYXJh
Y3RlcjooY2hhciljaGFyYWN0ZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0KaW5kZXggMzc0MGQ1ODJmM2Y1MWViN2RkNzAxNjRiZGViM2U3MTFiZTU3
ZjgwNS4uZDA5NmNmMDljNTVjZGYxYzYyNDQ2NjJkMzFhZGFiMTZiMjc4ZWM5OCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMzcyLDI2ICszNzIsNTIg
QEAgTlNFdmVudE1hc2sgX19zaW11bGF0ZWRfZm9yY2VDbGlja0Fzc29jaWF0ZWRFdmVudHNNYXNr
KGlkIHNlbGYsIFNFTCBfY21kKQogCiAjaWYgUExBVEZPUk0oTUFDKQogQGltcGxlbWVudGF0aW9u
IFRlc3RXS1dlYlZpZXcgKE1hY09ubHkpCi0tICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9p
bnQpcG9pbnQgc2ltdWxhdGVQcmVzc3VyZTooQk9PTClzaW11bGF0ZVByZXNzdXJlCistICh2b2lk
KW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJl
OihCT09MKXNpbXVsYXRlUHJlc3N1cmUKIHsKLSAgICBbX2hvc3RXaW5kb3cgX21vdXNlRG93bkF0
UG9pbnQ6cG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpzaW11bGF0ZVByZXNzdXJlIGNsaWNrQ291bnQ6
MV07CisgICAgW19ob3N0V2luZG93IF9tb3VzZURvd25BdFBvaW50OnBvaW50SW5XaW5kb3cgc2lt
dWxhdGVQcmVzc3VyZTpzaW11bGF0ZVByZXNzdXJlIGNsaWNrQ291bnQ6MV07CiB9CiAKLS0gKHZv
aWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQKKy0gKHZvaWQpbW91c2VVcEF0UG9pbnQ6
KE5TUG9pbnQpcG9pbnRJbldpbmRvdwogewotICAgIFtfaG9zdFdpbmRvdyBfbW91c2VVcEF0UG9p
bnQ6cG9pbnQgY2xpY2tDb3VudDoxXTsKKyAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBvaW50
OnBvaW50SW5XaW5kb3cgY2xpY2tDb3VudDoxXTsKIH0KIAotLSAodm9pZCltb3VzZU1vdmVUb1Bv
aW50OihOU1BvaW50KXBvaW50IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVyRmxhZ3MpZmxhZ3MK
Ky0gKHZvaWQpbW91c2VNb3ZlVG9Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93IHdpdGhGbGFn
czooTlNFdmVudE1vZGlmaWVyRmxhZ3MpZmxhZ3MKIHsKLSAgICBbc2VsZiBtb3VzZU1vdmVkOltO
U0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZU1vdXNlTW92ZWQgbG9jYXRpb246
cG9pbnQgbW9kaWZpZXJGbGFnczpmbGFncyB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgp
IHdpbmRvd051bWJlcjpbX2hvc3RXaW5kb3cgd2luZG93TnVtYmVyXSBjb250ZXh0OltOU0dyYXBo
aWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZXZlbnROdW1iZXI6KytnRXZlbnROdW1iZXIgY2xp
Y2tDb3VudDowIHByZXNzdXJlOjBdXTsKKyAgICBbc2VsZiBtb3VzZU1vdmVkOltzZWxmIF9tb3Vz
ZUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZU1vdmVkIGF0TG9jYXRpb246cG9pbnRJbldp
bmRvdyBmbGFnczpmbGFncyB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpIGNsaWNrQ291
bnQ6MF1dOwogfQogCi0tICh2b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1BvaW50KXBvaW50IG51
bWJlck9mQ2xpY2tzOihOU1VJbnRlZ2VyKW51bWJlck9mQ2xpY2tzCistICh2b2lkKXNlbmRDbGlj
a3NBdFBvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cgbnVtYmVyT2ZDbGlja3M6KE5TVUludGVn
ZXIpbnVtYmVyT2ZDbGlja3MKIHsKICAgICBmb3IgKE5TVUludGVnZXIgY2xpY2tDb3VudCA9IDE7
IGNsaWNrQ291bnQgPD0gbnVtYmVyT2ZDbGlja3M7ICsrY2xpY2tDb3VudCkgewotICAgICAgICBb
X2hvc3RXaW5kb3cgX21vdXNlRG93bkF0UG9pbnQ6cG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOTyBj
bGlja0NvdW50OmNsaWNrQ291bnRdOwotICAgICAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBv
aW50OnBvaW50IGNsaWNrQ291bnQ6Y2xpY2tDb3VudF07CisgICAgICAgIFtfaG9zdFdpbmRvdyBf
bW91c2VEb3duQXRQb2ludDpwb2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6Tk8gY2xpY2tD
b3VudDpjbGlja0NvdW50XTsKKyAgICAgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpw
b2ludEluV2luZG93IGNsaWNrQ291bnQ6Y2xpY2tDb3VudF07CisgICAgfQorfQorCistICh2b2lk
KW1vdXNlRW50ZXJBdFBvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cKK3sKKyAgICBbc2VsZiBt
b3VzZUVudGVyZWQ6W3NlbGYgX21vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZU1vdXNlRW50
ZXJlZCBhdExvY2F0aW9uOnBvaW50SW5XaW5kb3ddXTsKK30KKworLSAodm9pZCltb3VzZURyYWdU
b1BvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cKK3sKKyAgICBbc2VsZiBtb3VzZURyYWdnZWQ6
W3NlbGYgX21vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQgYXRM
b2NhdGlvbjpwb2ludEluV2luZG93XV07Cit9CisKKy0gKE5TRXZlbnQgKilfbW91c2VFdmVudFdp
dGhUeXBlOihOU0V2ZW50VHlwZSl0eXBlIGF0TG9jYXRpb246KE5TUG9pbnQpcG9pbnRJbldpbmRv
dworeworICAgIHJldHVybiBbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOnR5cGUgYXRMb2NhdGlv
bjpwb2ludEluV2luZG93IGZsYWdzOjAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSBj
bGlja0NvdW50OjBdOworfQorCistIChOU0V2ZW50ICopX21vdXNlRXZlbnRXaXRoVHlwZTooTlNF
dmVudFR5cGUpdHlwZSBhdExvY2F0aW9uOihOU1BvaW50KWxvY2F0aW9uSW5XaW5kb3cgZmxhZ3M6
KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzIHRpbWVzdGFtcDooTlNUaW1lSW50ZXJ2YWwpdGlt
ZXN0YW1wIGNsaWNrQ291bnQ6KE5TVUludGVnZXIpY2xpY2tDb3VudAoreworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVNb3VzZUVudGVyZWQ6CisgICAgY2FzZSBOU0V2
ZW50VHlwZU1vdXNlRXhpdGVkOgorICAgICAgICByZXR1cm4gW05TRXZlbnQgZW50ZXJFeGl0RXZl
bnRXaXRoVHlwZTp0eXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczpm
bGFncyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjpbX2hvc3RXaW5kb3cgd2luZG93
TnVtYmVyXSBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZXZlbnRO
dW1iZXI6KytnRXZlbnROdW1iZXIgdHJhY2tpbmdOdW1iZXI6MSB1c2VyRGF0YTpuaWxdOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dHlw
ZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6ZmxhZ3MgdGltZXN0YW1w
OnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6W19ob3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50
TnVtYmVyIGNsaWNrQ291bnQ6Y2xpY2tDb3VudCBwcmVzc3VyZTowXTsKICAgICB9CiB9CiAKQEAg
LTQwMCw3ICs0MjYsOCBAQCBOU0V2ZW50TWFzayBfX3NpbXVsYXRlZF9mb3JjZUNsaWNrQXNzb2Np
YXRlZEV2ZW50c01hc2soaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAgcmV0dXJuIF9ob3N0V2luZG93
LmdldCgpOwogfQogCi0tICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyIHsKKy0g
KHZvaWQpdHlwZUNoYXJhY3RlcjooY2hhciljaGFyYWN0ZXIKK3sKICAgICBOU1N0cmluZyAqY2hh
cmFjdGVyQXNTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVjIiAsIGNoYXJh
Y3Rlcl07CiAgICAgTlNFdmVudFR5cGUga2V5RG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlS2V5
RG93bjsKICAgICBOU0V2ZW50VHlwZSBrZXlVcEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlS2V5VXA7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRv
cklPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9T
Lm1tCmluZGV4IDQzZWVjZDk0OTRkNTk2NGY1MDcxMTcwOWQ2MDJmMTNkNjg5NGNhYmUuLjllMWYy
MWVlMWQ1M2JkZDQ2YzMzMzgxMDIxMGVkMDcwZGYxMzJjOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCkBAIC0zMTgsNiArMzE4
LDE5IEBAIHN0YXRpYyBOU0FycmF5ICpkcmFnQW5kRHJvcEV2ZW50TmFtZXMoKQogICAgIFJldGFp
blB0cjxVSURyb3BQcm9wb3NhbD4gX2N1cnJlbnREcm9wUHJvcG9zYWw7CiB9CiAKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lCit7CisgICAgcmV0dXJu
IFtzZWxmIGluaXRXaXRoV2ViVmlld0ZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246bmlsXTsKK30K
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUgY29u
ZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KK3sKKyAg
ICBpZiAoY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2ViVmll
dzpbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdXTsKKworICAgIHJldHVybiBbc2VsZiBpbml0
V2l0aFdlYlZpZXc6W1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0g
YXV0b3JlbGVhc2VdXTsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVz
dFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewpA
QCAtNjIzLDYgKzYzNiwxMSBAQCBzdGF0aWMgTlNBcnJheSAqZHJhZ0FuZERyb3BFdmVudE5hbWVz
KCkKICAgICBbW193ZWJWaWV3IGRyYWdJbnRlcmFjdGlvbkRlbGVnYXRlXSBkcmFnSW50ZXJhY3Rp
b246W193ZWJWaWV3IGRyYWdJbnRlcmFjdGlvbl0gc2Vzc2lvbkRpZFRyYW5zZmVySXRlbXM6X2Ry
YWdTZXNzaW9uLmdldCgpXTsKIH0KIAorLSAoVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAg
ICByZXR1cm4gX3dlYlZpZXcuZ2V0KCk7Cit9CisKICNwcmFnbWEgbWFyayAtIFdLVUlEZWxlZ2F0
ZVByaXZhdGUKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkYXRhSW50
ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5kbGVkOihCT09MKWhhbmRsZWQgZm9yU2Vzc2lvbjooaWQp
c2Vzc2lvbiBpdGVtUHJvdmlkZXJzOihOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICopaXRlbVBy
b3ZpZGVycwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BT
aW11bGF0b3JNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVs
YXRvck1hYy5tbQppbmRleCA5YTc5MThjYzQ4MzlhODc1N2JhZjYwYjg4ZjIzODYxYWQyMmQwYTVm
Li5iMzkxN2NkOTYyMWYwMjNlMjRiOGIwNjY1OGYzZTk3ZjA2MWQyMjYzIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbQpAQCAtMjgs
MzggKzI4LDE3MSBAQAogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFD
KSAmJiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdERyYWdnaW5nSW5mby5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2lt
cG9ydCA8Y21hdGg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworQGNsYXNzIERyYWdB
bmREcm9wVGVzdFdLV2ViVmlldzsKKworQGludGVyZmFjZSBEcmFnQW5kRHJvcFNpbXVsYXRvciAo
KQorLSAodm9pZClwZXJmb3JtRHJhZ0luV2ViVmlldzooRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3
ICopd2ViVmlldyBhdExvY2F0aW9uOihOU1BvaW50KXZpZXdMb2NhdGlvbiB3aXRoSW1hZ2U6KE5T
SW1hZ2UgKilpbWFnZSBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIHNvdXJj
ZTooaWQpc291cmNlOworQGVuZAorCitAaW50ZXJmYWNlIERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dyA6IFRlc3RXS1dlYlZpZXcKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERyYWdBbmREcm9wVGVz
dFdLV2ViVmlldyB7CisgICAgV2Vha09iakNQdHI8RHJhZ0FuZERyb3BTaW11bGF0b3I+IF9zaW11
bGF0b3I7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
Y29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gc2lt
dWxhdG9yOihEcmFnQW5kRHJvcFNpbXVsYXRvciAqKXNpbXVsYXRvcgoreworICAgIGlmIChzZWxm
ID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSkKKyAgICAgICAgX3NpbXVsYXRvciA9IHNpbXVsYXRvcjsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClkcmFnSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBhdDooTlNQb2ludCl2aWV3TG9j
YXRpb24gb2Zmc2V0OihOU1NpemUpaW5pdGlhbE9mZnNldCBldmVudDooTlNFdmVudCAqKWV2ZW50
IHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZCBzb3VyY2U6KGlkKXNvdXJjZU9iaiBz
bGlkZUJhY2s6KEJPT0wpc2xpZGVGbGFnCit7CisgICAgW19zaW11bGF0b3IgcGVyZm9ybURyYWdJ
bldlYlZpZXc6c2VsZiBhdExvY2F0aW9uOnZpZXdMb2NhdGlvbiB3aXRoSW1hZ2U6aW1hZ2UgcGFz
dGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZU9ial07Cit9CisKKy0gKHZvaWQpd2FpdEZvclBl
bmRpbmdNb3VzZUV2ZW50cworeworICAgIF9fYmxvY2sgYm9vbCBkb25lUHJvY2Vzc01vdXNlRXZl
bnRzID0gZmFsc2U7CisgICAgW3NlbGYgX2RvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNl
RXZlbnRzOl57CisgICAgICAgIGRvbmVQcm9jZXNzTW91c2VFdmVudHMgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZVByb2Nlc3NNb3VzZUV2ZW50cyk7
Cit9CisKK0BlbmQKKworLy8gVGhpcyBleGNlZWRzIHRoZSBkZWZhdWx0IGRyYWcgaHlzdGVyZXNp
cyBvZiBhbGwgcG90ZW50aWFsIGRyYWcgdHlwZXMuCitjb25zdCBkb3VibGUgaW5pdGlhbE1vdXNl
RHJhZ0Rpc3RhbmNlID0gNDU7Citjb25zdCBkb3VibGUgZHJhZ1VwZGF0ZVByb2dyZXNzSW5jcmVt
ZW50ID0gMC4wNTsKKworc3RhdGljIE5TSW1hZ2UgKmRlZmF1bHRFeHRlcm5hbERyYWdJbWFnZSgp
Cit7CisgICAgcmV0dXJuIFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lv
bjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0gYXV0b3Jl
bGVhc2VdOworfQogCiBAaW1wbGVtZW50YXRpb24gRHJhZ0FuZERyb3BTaW11bGF0b3IgewotICAg
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsKKyAgICBSZXRhaW5QdHI8RHJhZ0Fu
ZERyb3BUZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsKKyAgICBSZXRhaW5QdHI8VGVzdERyYWdnaW5n
SW5mbz4gX2RyYWdnaW5nSW5mbzsKKyAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBfZXh0ZXJu
YWxEcmFnUGFzdGVib2FyZDsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX2V4dGVybmFsRHJhZ0lt
YWdlOworICAgIEJsb2NrUHRyPHZvaWQoKT4gX3dpbGxFbmREcmFnZ2luZ0hhbmRsZXI7CisgICAg
TlNQb2ludCBfc3RhcnRMb2NhdGlvbkluV2luZG93OworICAgIE5TUG9pbnQgX2VuZExvY2F0aW9u
SW5XaW5kb3c7CisgICAgZG91YmxlIF9wcm9ncmVzczsKK30KKworQHN5bnRoZXNpemUgY3VycmVu
dERyYWdPcGVyYXRpb249X2N1cnJlbnREcmFnT3BlcmF0aW9uOworQHN5bnRoZXNpemUgaW5pdGlh
bERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3PV9pbml0aWFsRHJhZ0ltYWdlTG9jYXRpb25JblZpZXc7
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lCit7
CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2ViVmlld0ZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRp
b246bmlsXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVzdFdLV2Vi
VmlldyAqKXdlYlZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dS
ZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX3dlYlZp
ZXcgPSB3ZWJWaWV3OworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFRl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uID86IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXSBzaW11bGF0b3I6c2VsZl0pOwogICAgICAgICBbX3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTpzZWxmXTsKLSAgICAgICAgW193ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOnNlbGZdOwogICAg
IH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCistIChOU1BvaW50KWZs
aXBBYm91dFhBeGlzSW5Ib3N0V2luZG93OihOU1BvaW50KXBvaW50CiB7Ci0gICAgaWYgKFtfd2Vi
VmlldyBVSURlbGVnYXRlXSA9PSBzZWxmKQotICAgICAgICBbX3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTpuaWxdOworICAgIHJldHVybiB7IHBvaW50LngsIE5TSGVpZ2h0KFtbX3dlYlZpZXcgaG9zdFdp
bmRvd10gZnJhbWVdKSAtIHBvaW50LnkgfTsKK30KIAotICAgIGlmIChbX3dlYlZpZXcgX2lucHV0
RGVsZWdhdGVdID09IHNlbGYpCi0gICAgICAgIFtfd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpu
aWxdOworLSAoTlNQb2ludClsb2NhdGlvbkluVmlld0ZvckN1cnJlbnRQcm9ncmVzcworeworICAg
IHJldHVybiB7CisgICAgICAgIF9zdGFydExvY2F0aW9uSW5XaW5kb3cueCArIChfZW5kTG9jYXRp
b25JbldpbmRvdy54IC0gX3N0YXJ0TG9jYXRpb25JbldpbmRvdy54KSAqIF9wcm9ncmVzcywKKyAg
ICAgICAgX3N0YXJ0TG9jYXRpb25JbldpbmRvdy55ICsgKF9lbmRMb2NhdGlvbkluV2luZG93Lnkg
LSBfc3RhcnRMb2NhdGlvbkluV2luZG93LnkpICogX3Byb2dyZXNzCisgICAgfTsKK30KIAotICAg
IFtzdXBlciBkZWFsbG9jXTsKKy0gKGRvdWJsZSlpbml0aWFsUHJvZ3Jlc3NGb3JNb3VzZURyYWcK
K3sKKyAgICBkb3VibGUgdG90YWxEaXN0YW5jZSA9IHN0ZDo6c3FydChzdGQ6OnBvdyhfc3RhcnRM
b2NhdGlvbkluV2luZG93LnggLSBfZW5kTG9jYXRpb25JbldpbmRvdy54LCAyKSArIHN0ZDo6cG93
KF9zdGFydExvY2F0aW9uSW5XaW5kb3cueSAtIF9lbmRMb2NhdGlvbkluV2luZG93LnksIDIpKTsK
KyAgICByZXR1cm4gIXRvdGFsRGlzdGFuY2UgPyAxIDogc3RkOjptaW48ZG91YmxlPigxLCBpbml0
aWFsTW91c2VEcmFnRGlzdGFuY2UgLyB0b3RhbERpc3RhbmNlKTsKIH0KIAotLSAodm9pZClydW5G
cm9tOihDR1BvaW50KXN0YXJ0TG9jYXRpb24gdG86KENHUG9pbnQpZW5kTG9jYXRpb24KKy0gKHZv
aWQpcnVuRnJvbTooQ0dQb2ludClmbGlwcGVkU3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludClmbGlw
cGVkRW5kTG9jYXRpb24KIHsKLSAgICAvLyBGSVhNRTogQWRkIGEgbWVjaGFuaXNtIHRvIHNpbXVs
YXRlIGRyYWdnaW5nIG9uIG1hY09TLgotICAgIFVOVVNFRF9QQVJBTShzdGFydExvY2F0aW9uKTsK
LSAgICBVTlVTRURfUEFSQU0oZW5kTG9jYXRpb24pOworICAgIF9zdGFydExvY2F0aW9uSW5XaW5k
b3cgPSBbc2VsZiBmbGlwQWJvdXRYQXhpc0luSG9zdFdpbmRvdzpmbGlwcGVkU3RhcnRMb2NhdGlv
bl07CisgICAgX2VuZExvY2F0aW9uSW5XaW5kb3cgPSBbc2VsZiBmbGlwQWJvdXRYQXhpc0luSG9z
dFdpbmRvdzpmbGlwcGVkRW5kTG9jYXRpb25dOworICAgIF9jdXJyZW50RHJhZ09wZXJhdGlvbiA9
IE5TRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgX2RyYWdnaW5nSW5mbyA9IG5pbDsKKyAgICBfcHJv
Z3Jlc3MgPSAwOworCisgICAgaWYgKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IHNlbGYuZXh0
ZXJuYWxEcmFnUGFzdGVib2FyZCkgeworICAgICAgICBOU1BvaW50IHN0YXJ0TG9jYXRpb25JblZp
ZXcgPSBbX3dlYlZpZXcgY29udmVydFBvaW50Ol9zdGFydExvY2F0aW9uSW5XaW5kb3cgZnJvbVZp
ZXc6bmlsXTsKKyAgICAgICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZi5leHRlcm5hbERyYWdJ
bWFnZSA/OiBkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKTsKKyAgICAgICAgW3NlbGYgcGVyZm9y
bURyYWdJbldlYlZpZXc6X3dlYlZpZXcuZ2V0KCkgYXRMb2NhdGlvbjpzdGFydExvY2F0aW9uSW5W
aWV3IHdpdGhJbWFnZTpkcmFnSW1hZ2UgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpuaWxd
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3Byb2dyZXNzID0gW3NlbGYgaW5pdGlh
bFByb2dyZXNzRm9yTW91c2VEcmFnXTsKKyAgICBpZiAoX3Byb2dyZXNzID09IDEpIHsKKyAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOkAiRHJhZ0FuZERyb3BTaW11bGF0b3IiIGZvcm1hdDpAIkRy
YWcgc3RhcnQgKCVAKSBhbmQgZHJhZyBlbmQgKCVAKSBsb2NhdGlvbnMgYXJlIHRvbyBjbG9zZSEi
LCBOU1N0cmluZ0Zyb21Qb2ludChmbGlwcGVkU3RhcnRMb2NhdGlvbiksIE5TU3RyaW5nRnJvbVBv
aW50KGZsaXBwZWRFbmRMb2NhdGlvbildOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
W193ZWJWaWV3IG1vdXNlRW50ZXJBdFBvaW50Ol9zdGFydExvY2F0aW9uSW5XaW5kb3ddOworICAg
IFtfd2ViVmlldyBtb3VzZU1vdmVUb1BvaW50Ol9zdGFydExvY2F0aW9uSW5XaW5kb3cgd2l0aEZs
YWdzOjBdOworICAgIFtfd2ViVmlldyBtb3VzZURvd25BdFBvaW50Ol9zdGFydExvY2F0aW9uSW5X
aW5kb3cgc2ltdWxhdGVQcmVzc3VyZTpOT107CisgICAgW193ZWJWaWV3IG1vdXNlRHJhZ1RvUG9p
bnQ6W3NlbGYgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdXTsKKyAgICBbX3dlYlZp
ZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c107CisKKyAgICBbX3dlYlZpZXcgbW91c2VVcEF0
UG9pbnQ6X2VuZExvY2F0aW9uSW5XaW5kb3ddOworICAgIFtfd2ViVmlldyB3YWl0Rm9yUGVuZGlu
Z01vdXNlRXZlbnRzXTsKK30KKworLSAodm9pZClwZXJmb3JtRHJhZ0luV2ViVmlldzooRHJhZ0Fu
ZERyb3BUZXN0V0tXZWJWaWV3ICopd2ViVmlldyBhdExvY2F0aW9uOihOU1BvaW50KXZpZXdMb2Nh
dGlvbiB3aXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQg
KilwYXN0ZWJvYXJkIHNvdXJjZTooaWQpc291cmNlCit7CisgICAgX2luaXRpYWxEcmFnSW1hZ2VM
b2NhdGlvbkluVmlldyA9IHZpZXdMb2NhdGlvbjsKKyAgICBfZHJhZ2dpbmdJbmZvID0gYWRvcHRO
UyhbW1Rlc3REcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRdKTsKKyAgICBbX2RyYWdnaW5nSW5mbyBz
ZXREcmFnZ2VkSW1hZ2U6aW1hZ2VdOworICAgIFtfZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nUGFz
dGVib2FyZDpwYXN0ZWJvYXJkXTsKKyAgICBbX2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ1NvdXJj
ZTpzb3VyY2VdOworICAgIFtfZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nTG9jYXRpb246W3NlbGYg
bG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdXTsKKyAgICBbX2RyYWdnaW5nSW5mbyBz
ZXREcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s6TlNEcmFnT3BlcmF0aW9uRXZlcnldOworICAg
IFtfZHJhZ2dpbmdJbmZvIHNldE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A6cGFzdGVib2FyZC5w
YXN0ZWJvYXJkSXRlbXMuY291bnRdOworCisgICAgX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gW193
ZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpfZHJhZ2dpbmdJbmZvLmdldCgpXTsKKyAgICBbX3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgd2hpbGUgKF9wcm9ncmVz
cyAhPSAxKSB7CisgICAgICAgIF9wcm9ncmVzcyA9IHN0ZDo6bWluPGRvdWJsZT4oMSwgX3Byb2dy
ZXNzICsgZHJhZ1VwZGF0ZVByb2dyZXNzSW5jcmVtZW50KTsKKyAgICAgICAgW19kcmFnZ2luZ0lu
Zm8gc2V0RHJhZ2dpbmdMb2NhdGlvbjpbc2VsZiBsb2NhdGlvbkluVmlld0ZvckN1cnJlbnRQcm9n
cmVzc11dOworICAgICAgICBfY3VycmVudERyYWdPcGVyYXRpb24gPSBbX3dlYlZpZXcgZHJhZ2dp
bmdVcGRhdGVkOl9kcmFnZ2luZ0luZm8uZ2V0KCldOworICAgICAgICBbX3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIH0KKworICAgIFtfZHJhZ2dpbmdJbmZvIHNl
dERyYWdnaW5nTG9jYXRpb246X2VuZExvY2F0aW9uSW5XaW5kb3ddOworCisgICAgaWYgKF93aWxs
RW5kRHJhZ2dpbmdIYW5kbGVyKQorICAgICAgICBfd2lsbEVuZERyYWdnaW5nSGFuZGxlcigpOwor
CisgICAgaWYgKF9jdXJyZW50RHJhZ09wZXJhdGlvbiAhPSBOU0RyYWdPcGVyYXRpb25Ob25lICYm
IFtfd2ViVmlldyBwcmVwYXJlRm9yRHJhZ09wZXJhdGlvbjpfZHJhZ2dpbmdJbmZvLmdldCgpXSkK
KyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1EcmFnT3BlcmF0aW9uOl9kcmFnZ2luZ0luZm8uZ2V0
KCldOworICAgIGVsc2UgaWYgKF9jdXJyZW50RHJhZ09wZXJhdGlvbiA9PSBOU0RyYWdPcGVyYXRp
b25Ob25lKQorICAgICAgICBbX3dlYlZpZXcgZHJhZ2dpbmdFeGl0ZWQ6X2RyYWdnaW5nSW5mby5n
ZXQoKV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKwor
ICAgIGlmICghc2VsZi5leHRlcm5hbERyYWdQYXN0ZWJvYXJkKSB7CisgICAgICAgIFtfd2ViVmll
dyBkcmFnZ2VkSW1hZ2U6W19kcmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdlXSBlbmRlZEF0Ol9lbmRM
b2NhdGlvbkluV2luZG93IG9wZXJhdGlvbjpfY3VycmVudERyYWdPcGVyYXRpb25dOworICAgICAg
ICBbX3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIH0KIH0KIAog
LSAoTlNBcnJheTxfV0tBdHRhY2htZW50ICo+ICopaW5zZXJ0ZWRBdHRhY2htZW50cwpAQCAtNzIs
OSArMjA1LDQ0IEBACiAgICAgcmV0dXJuIEBbIF07CiB9CiAKLS0gKERyYWdBbmREcm9wUGhhc2Up
cGhhc2UKKy0gKFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJuIF93ZWJWaWV3
LmdldCgpOworfQorCistICh2b2lkKXNldEV4dGVybmFsRHJhZ1Bhc3RlYm9hcmQ6KE5TUGFzdGVi
b2FyZCAqKWV4dGVybmFsRHJhZ1Bhc3RlYm9hcmQKK3sKKyAgICBfZXh0ZXJuYWxEcmFnUGFzdGVi
b2FyZCA9IGV4dGVybmFsRHJhZ1Bhc3RlYm9hcmQ7Cit9CisKKy0gKE5TUGFzdGVib2FyZCAqKWV4
dGVybmFsRHJhZ1Bhc3RlYm9hcmQKK3sKKyAgICByZXR1cm4gX2V4dGVybmFsRHJhZ1Bhc3RlYm9h
cmQuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RXh0ZXJuYWxEcmFnSW1hZ2U6KE5TSW1hZ2UgKill
eHRlcm5hbERyYWdJbWFnZQoreworICAgIF9leHRlcm5hbERyYWdJbWFnZSA9IGV4dGVybmFsRHJh
Z0ltYWdlOworfQorCistIChOU0ltYWdlICopZXh0ZXJuYWxEcmFnSW1hZ2UKK3sKKyAgICByZXR1
cm4gX2V4dGVybmFsRHJhZ0ltYWdlLmdldCgpOworfQorCistIChpZCA8TlNEcmFnZ2luZ0luZm8+
KWRyYWdnaW5nSW5mbworeworICAgIHJldHVybiBfZHJhZ2dpbmdJbmZvLmdldCgpOworfQorCist
IChkaXNwYXRjaF9ibG9ja190KXdpbGxFbmREcmFnZ2luZ0hhbmRsZXIKK3sKKyAgICByZXR1cm4g
X3dpbGxFbmREcmFnZ2luZ0hhbmRsZXIuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0V2lsbEVuZERy
YWdnaW5nSGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCl3aWxsRW5kRHJhZ2dpbmdIYW5kbGVyCiB7
Ci0gICAgcmV0dXJuIERyYWdBbmREcm9wUGhhc2VDYW5jZWxsZWQ7CisgICAgX3dpbGxFbmREcmFn
Z2luZ0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIod2lsbEVuZERyYWdnaW5nSGFuZGxlcik7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0lu
Zm8uaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YmNkZWI0NzBiNTc0YTUwNDE2MGJlN2RiNDY0YzIyYTJiMzY2MjViCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdERyYWdnaW5nSW5mby5oCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8QXBwS2l0
L05TRHJhZ2dpbmcuaD4KKworQGludGVyZmFjZSBUZXN0RHJhZ2dpbmdJbmZvIDogTlNPYmplY3Qg
PE5TRHJhZ2dpbmdJbmZvPgorCitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNQb2ludCBkcmFnZ2lu
Z0xvY2F0aW9uOworQHByb3BlcnR5IChub25hdG9taWMpIE5TRHJhZ09wZXJhdGlvbiBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2s7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1Bh
c3RlYm9hcmQgKmRyYWdnaW5nUGFzdGVib2FyZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJv
bmcpIE5TSW1hZ2UgKmRyYWdnZWRJbWFnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBp
ZCBkcmFnZ2luZ1NvdXJjZTsKKworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvVGVzdERyYWdnaW5nSW5mby5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RE
cmFnZ2luZ0luZm8ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg2MmU1NDNlMDMyYWE0N2U1Y2MxNmVmYjk1NzY1
YWM2ZjFjYWQzZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rl
c3REcmFnZ2luZ0luZm8ubW0KQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3REcmFnZ2luZ0luZm8uaCIKKworI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0RHJhZ2dpbmdJbmZvIHsKKyAg
ICBXZWFrT2JqQ1B0cjxpZD4gX3NvdXJjZTsKKyAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBf
cGFzdGVib2FyZDsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX2RyYWdnZWRJbWFnZTsKK30KKwor
QHN5bnRoZXNpemUgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrPV9kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2s7CitAc3ludGhlc2l6ZSBkcmFnZ2luZ0xvY2F0aW9uPV9kcmFnZ2luZ0xvY2F0
aW9uOworQHN5bnRoZXNpemUgZHJhZ2dpbmdGb3JtYXRpb249X2RyYWdnaW5nRm9ybWF0aW9uOwor
QHN5bnRoZXNpemUgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcD1fbnVtYmVyT2ZWYWxpZEl0ZW1z
Rm9yRHJvcDsKKworLSAoTlNQYXN0ZWJvYXJkICopZHJhZ2dpbmdQYXN0ZWJvYXJkCit7CisgICAg
cmV0dXJuIF9wYXN0ZWJvYXJkLmdldCgpOworfQorCistICh2b2lkKXNldERyYWdnaW5nUGFzdGVi
b2FyZDooTlNQYXN0ZWJvYXJkICopZHJhZ2dpbmdQYXN0ZWJvYXJkCit7CisgICAgX3Bhc3RlYm9h
cmQgPSBkcmFnZ2luZ1Bhc3RlYm9hcmQ7Cit9CisKKy0gKGlkKWRyYWdnaW5nU291cmNlCit7Cisg
ICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RHJhZ2dpbmdT
b3VyY2U6KGlkKWRyYWdnaW5nU291cmNlCit7CisgICAgX3NvdXJjZSA9IGRyYWdnaW5nU291cmNl
OworfQorCistICh2b2lkKWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNEcmFn
Z2luZ0l0ZW1FbnVtZXJhdGlvbk9wdGlvbnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmll
dyBjbGFzc2VzOihOU0FycmF5PENsYXNzPiAqKWNsYXNzQXJyYXkgc2VhcmNoT3B0aW9uczooTlNE
aWN0aW9uYXJ5PE5TUGFzdGVib2FyZFJlYWRpbmdPcHRpb25LZXksIGlkPiAqKXNlYXJjaE9wdGlv
bnMgdXNpbmdCbG9jazoodm9pZCAoXikoTlNEcmFnZ2luZ0l0ZW0gKiwgTlNJbnRlZ2VyLCBCT09M
ICopKWJsb2NrCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIHRlc3QgZmlsZSBw
cm9taXNlIGRyb3AgaGFuZGxpbmcuCit9CisKKy8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUg
bm90IGN1cnJlbnRseSB1c2VkIGJ5IFdlYktpdC4KKworQHN5bnRoZXNpemUgZHJhZ2dlZEltYWdl
TG9jYXRpb249X2RyYWdnZWRJbWFnZUxvY2F0aW9uOworQHN5bnRoZXNpemUgZHJhZ2dpbmdTZXF1
ZW5jZU51bWJlcj1fZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcjsKK0BzeW50aGVzaXplIGFuaW1hdGVz
VG9EZXN0aW5hdGlvbj1fYW5pbWF0ZXNUb0Rlc3RpbmF0aW9uOworQHN5bnRoZXNpemUgc3ByaW5n
TG9hZGluZ0hpZ2hsaWdodD1fc3ByaW5nTG9hZGluZ0hpZ2hsaWdodDsKKworLSAoTlNXaW5kb3cg
KilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93Cit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAo
TlNJbWFnZSAqKWRyYWdnZWRJbWFnZQoreworICAgIHJldHVybiBfZHJhZ2dlZEltYWdlLmdldCgp
OworfQorCistICh2b2lkKXNldERyYWdnZWRJbWFnZTooTlNJbWFnZSAqKWRyYWdnZWRJbWFnZQor
eworICAgIF9kcmFnZ2VkSW1hZ2UgPSBkcmFnZ2VkSW1hZ2U7Cit9CisKKy0gKHZvaWQpc2xpZGVE
cmFnZ2VkSW1hZ2VUbzooTlNQb2ludClzY3JlZW5Qb2ludAoreworfQorCistIChOU0FycmF5PE5T
U3RyaW5nICo+ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNV
UkwgKilkcm9wRGVzdGluYXRpb24KK3sKKyAgICByZXR1cm4gQFsgXTsKK30KKworLSAodm9pZCly
ZXNldFNwcmluZ0xvYWRpbmcKK3sKK30KKworQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346951</attachid>
            <date>2018-08-10 19:07:14 -0700</date>
            <delta_ts>2018-08-10 19:56:38 -0700</delta_ts>
            <desc>Fix macOS 10.12 and WPE builds</desc>
            <filename>bug-181898-20180810190713.patch</filename>
            <type>text/plain</type>
            <size>103281</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3OWFkODQ1MWVmNTg4YWRm
Y2UwN2Q3ZDdlMjJkOGJjZGIwZjY4MTkuLmNiMWJlNDEwYzZhZWRlOGNkOTk2NDhmNjNiODJiYzk2
NTJhMzYwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMDgtMTAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09TXSBJ
bXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYSBuZXcgU1BJIG1ldGhvZCwgYC1fZG9BZnRlclByb2Nlc3NpbmdB
bGxQZW5kaW5nTW91c2VFdmVudHM6YCwgdG8gV0tXZWJWaWV3LiBUaGlzIGludm9rZXMgdGhlIGdp
dmVuCisgICAgICAgIGNhbGxiYWNrIGFmdGVyIGFsbCBxdWV1ZWQgbW91c2UgZXZlbnRzIGhhdmUg
YmVlbiBoYW5kbGVkIGJ5IHRoZSB3ZWIgcHJvY2Vzcy4gU2VlIFRvb2xzL0NoYW5nZUxvZyBmb3Ig
bW9yZQorICAgICAgICBkZXRhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyUHJvY2Vzc2luZ0FsbFBl
bmRpbmdNb3VzZUV2ZW50czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJv
Y2Vzc0RpZEV4aXQpOgorCisgICAgICAgIEludm9rZSBhbnkgb3V0c3RhbmRpbmcgY2FsbGJhY2tz
IGZvciBwcm9jZXNzaW5nIHBlbmRpbmcgbW91c2UgZXZlbnRzIHdoZW4gdGhlIHdlYiBwcm9jZXNz
IGlzIHRlcm1pbmF0ZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQWZ0ZXJQ
cm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKToKKworICAgICAgICBFaXRoZXIgaW52b2tl
IHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBpZiB0aGVyZSBhcmUgbm8gbW91c2UgZXZlbnRzIHRv
IGJlIHByb2Nlc3NlZCwgb3IgaW5zZXJ0IHRoZSBjYWxsYmFjayBpbgorICAgICAgICBhIHF1ZXVl
IHRoYXQgd2lsbCBiZSBmbHVzaGVkIG9uY2UgYWxsIG1vdXNlIGV2ZW50cyBoYXZlIGJlZW4gaGFu
ZGxlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkRmluaXNoUHJvY2Vzc2lu
Z0FsbFBlbmRpbmdNb3VzZUV2ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpm
bHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpwaW5uZWRTdGF0ZVdpbGxD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpwaW5uZWRTdGF0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlk
Q2hhbmdlKToKKworICAgICAgICBEcml2ZS1ieSB0d2Vha3M6IHJlbW92ZSB1bm5lY2Vzc2FyeSBz
ZW1pY29sb25zIGFmdGVyIGVtcHR5IGltcGxlbWVudGF0aW9uIHN0dWJzLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZUV2ZW50KToKKworICAgICAgICBOb3RpZnkgdGhlIHBhZ2UgY2xpZW50IHdo
ZW4gdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBtb3VzZSBldmVudHMgbGVmdCBpbiB0aGUgcXVldWUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKToKKworICAgICAg
ICBBZGQgc29tZSBwbHVtYmluZyB0aHJvdWdoIFBhZ2VDbGllbnQsIHNvIHRoYXQgV2ViUGFnZVBy
b3h5IGNhbiB0ZWxsIFdlYlZpZXdJbXBsIHdoZW4gaXQgaXMgZmluaXNoZWQgcHJvY2Vzc2luZwor
ICAgICAgICBhbGwgbW91c2UgZXZlbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdl
Q2xpZW50SW1wbC5oOgorCiAyMDE4LTA4LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0
VG9Eb3dubG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCBiMTBhMDFjMDRhNzE4MDAxMmRlOWM2NTFkMDc0NjFhNDQyNGJjYTE3Li41
MmY3ODEyY2NjNTM2OWU1OTk3MTI0NzI4MWU5MjhmOTllMWExNGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYzMzcsNiArNjMzNywx
MSBAQCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogICAgIF9wYWdlLT5zZXRGb290ZXJCYW5uZXJI
ZWlnaHRGb3JUZXN0aW5nKGhlaWdodCk7CiB9CiAKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5n
QWxsUGVuZGluZ01vdXNlRXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgoreworICAgIF9p
bXBsLT5kb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cyhhY3Rpb24pOworfQor
CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAtICh2b2lkKV9yZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvOih2b2lkKF4pKEJPT0wsIEJPT0wsIE5TU3RyaW5nKiwgZG91YmxlLCBk
b3VibGUsIE5TSW50ZWdlcikpY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY1MjgxMmIxY2M5MzdkZjEy
OTkxNTVjZWIwOWUxN2UzMWEzYzY3N2QuLjU4MWE0YTY3ZDE4Njg2YjYxMTI4Zjg2N2ZiNDk4MWE3
YzZmN2ZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiAtICh2b2lkKV9zZXRIZWFkZXJCYW5uZXJI
ZWlnaHQ6KGludCloZWlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMykpOwogLSAo
dm9pZClfc2V0Rm9vdGVyQmFubmVySGVpZ2h0OihpbnQpaGVpZ2h0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEyLjMpKTsKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVuZGluZ01v
dXNlRXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAjZW5kaWYKIAogLSAodm9pZClfcmVxdWVzdEFjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uSW5mbzoodm9pZCheKShCT09MLCBCT09MLCBOU1N0cmluZyosIGRvdWJsZSwgZG91
YmxlLCBOU0ludGVnZXIpKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzLjQp
LCBpb3MoMTEuMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCmluZGV4IDBjNWIxZDU0NTI0NGZiOTVmNDE1ODU2MjE5Y2FiMGE2MTM5ODE4
YzAuLmQzNjUzOWY2OWE4ZjNkN2Q0MWIzMDY2OGFiZTM2MGU1MTkxZjE1MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0NSw2
ICsxNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsIHsgfQog
CisgICAgdm9pZCBkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKCkgZmlu
YWwgeyB9CisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKSBvdmVycmlkZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdl
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5oCmluZGV4IDI0ZDlmODMzZmMxMTg4YTlmNWE0ODgxZjY3MDlkMmUwZjEwOWQ2MDIuLmNh
MjFkOGJlNmUxNTA0YzIxOTcyMDE1ZTEzNmMxOWVlZjVjNDc2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEzOSw2ICsxMzks
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJh
bWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQ
ZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRl
OwogCiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDI2ZGI2YmQwYTUyMjk5N2MxZGY4Yjg3NDBjOTBjNTMz
YzkzMTk3MmEuLjQyOGFlYzNlZmEyZmQwYTJmMDIxMzc0NDZiNDIwNzJlZDBkNzk0MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTI2LDYgKzUy
Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoTlNUZXh0
Q2hlY2tpbmdSZXN1bHQgKmFjY2VwdGVkQ2FuZGlkYXRlKTsKIAorICAgIHZvaWQgZG9BZnRlclBy
b2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoZGlzcGF0Y2hfYmxvY2tfdCBhY3Rpb24pOwor
ICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOworCiAj
aWYgSEFWRShUT1VDSF9CQVIpCiAgICAgTlNUb3VjaEJhciAqbWFrZVRvdWNoQmFyKCk7CiAgICAg
dm9pZCB1cGRhdGVUb3VjaEJhcigpOwpAQCAtNjIyLDYgKzYyNSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtaWdodEJlZ2luU2Nyb2xsV2hpbGVJbmFjdGl2ZSgpOwogCiAgICAgdm9pZCBoYW5kbGVS
ZXF1ZXN0ZWRDYW5kaWRhdGVzKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1Rl
eHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlkYXRlcyk7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdN
b3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc8V2ViVmlld0lt
cGxEZWxlZ2F0ZT4+IG1fdmlldzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNsaWVudD4gbV9w
YWdlQ2xpZW50OwpAQCAtNzMyLDYgKzczNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBoYXMg
YmVlbiBhbHJlYWR5IHNlbnQgdG8gV2ViQ29yZS4KICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9r
ZXlEb3duRXZlbnRCZWluZ1Jlc2VudDsKICAgICBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiogbV9jb2xsZWN0ZWRLZXlwcmVzc0NvbW1hbmRzIHsgbnVsbHB0ciB9OworICAgIFZlY3Rv
cjxCbG9ja1B0cjx2b2lkKCk+PiBtX2NhbGxiYWNrSGFuZGxlcnNBZnRlclByb2Nlc3NpbmdQZW5k
aW5nTW91c2VFdmVudHM7CiAKICAgICBTdHJpbmcgbV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVx
dWVzdDsKICAgICBOU0ludGVnZXIgbV9sYXN0Q2FuZGlkYXRlUmVxdWVzdFNlcXVlbmNlTnVtYmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAx
ODA5ODlkN2JkMGQ1MTk3OGNjMzNhNzdiYzdjMmM0ZGRmODkxNjRhLi41NmRlMjNjMzZlNDQ4MTli
ZGQ4ZThjMWMyNjEyNGM5Y2VhZGRiY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTM3OCw2ICsxMzc4LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cHJvY2Vzc0RpZEV4aXQoKQogICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9v
dExheWVyKG5pbCk7CiAKICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9u
KGZhbHNlKTsKKyAgICBmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBt
X2dlc3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKIH0KQEAgLTMxNDQsNiArMzE0NSwyOSBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShOU1RleHRDaGVja2luZ1Jl
c3VsdCAqYWNjZXB0ZWRDYW5kaWRhdAogICAgIG1fcGFnZS0+aGFuZGxlQWNjZXB0ZWRDYW5kaWRh
dGUodGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KGFjY2VwdGVkQ2Fu
ZGlkYXRlKSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVu
ZGluZ01vdXNlRXZlbnRzKGRpc3BhdGNoX2Jsb2NrX3QgYWN0aW9uKQoreworICAgIGlmICghbV9w
YWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgIGFjdGlvbigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9jZXNz
aW5nUGVuZGluZ01vdXNlRXZlbnRzLmFwcGVuZChtYWtlQmxvY2tQdHIoYWN0aW9uKSk7Cit9CisK
K3ZvaWQgV2ViVmlld0ltcGw6OmRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVu
dHMoKQoreworICAgIGZsdXNoUGVuZGluZ01vdXNlRXZlbnRDYWxsYmFja3MoKTsKK30KKwordm9p
ZCBXZWJWaWV3SW1wbDo6Zmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpCit7CisgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IG1fY2FsbGJhY2tIYW5kbGVyc0FmdGVyUHJvY2Vzc2luZ1Bl
bmRpbmdNb3VzZUV2ZW50cykKKyAgICAgICAgY2FsbGJhY2soKTsKKworICAgIG1fY2FsbGJhY2tI
YW5kbGVyc0FmdGVyUHJvY2Vzc2luZ1BlbmRpbmdNb3VzZUV2ZW50cy5jbGVhcigpOworfQorCiB2
b2lkIFdlYlZpZXdJbXBsOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiB7CiAgICAgQk9PTCBuZWVk
c1ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMgPSBtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1
Z2luc0VuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZWE4
MmJhZjBkNzk3YzAyZTUzNmM0MGE5NTQ1ODVmNWRkMGMwMmE2Li5lMmM2OTFlMWNkYzU0MGM0MmNm
OGQ1MTUwNzgyOGJhYzU3NDAxNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0zOTMsOCArMzkzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VC
YWNrZ3JvdW5kQ29sb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ0F1ZGlvV2ls
bENoYW5nZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2Uo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2
b2lkIHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwaW5uZWRT
dGF0ZURpZENoYW5nZSgpIHsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgQVBJOjpPYmplY3QqKSA9IDA7CkBA
IC00MDMsOCArNDAzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlKCkgPSAwOwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkgeyB9CiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbWVkaWFTZXNzaW9uTWFuYWdlcigpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdhNmYyNzUzMmY2MDMz
OTE0ZDc4M2MwNjQ5MmU5ZGY3YzJlYzkxYTAuLjEzMTA1YzlhYTUzYjVhMDgyYTI0OTZkZDE4YWE3
NjcyMGVmZjg5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNTU0Myw4ICs1NTQzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQo
dWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBpZiAoIW1fbW91c2VF
dmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICIg
VUlQcm9jZXNzOiBoYW5kbGluZyBhIHF1ZXVlZCBtb3VzZSBldmVudCBmcm9tIGRpZFJlY2VpdmVF
dmVudCIpOwogICAgICAgICAgICAgcHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQotICAgICAgICAgICAgYXV0b21hdGlvblNlc3Np
b24tPm1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoKnRoaXMpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nl
c3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKKyAgICAgICAgICAgICAgICBhdXRvbWF0aW9u
U2Vzc2lvbi0+bW91c2VFdmVudHNGbHVzaGVkRm9yUGFnZSgqdGhpcyk7CisgICAgICAgICAgICBt
X3BhZ2VDbGllbnQuZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOwor
ICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBhNzFmZDQyNjg4NmNhNzAyOTU5
MmQ3MzYxOGY0ZmRlZWIwNDY5NDg0Li4xYzdhYmZjMjZjNjM2ZDk0ODBlM2ZkZGM3YzZiZWE1MTMz
MmYyNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VE
YXRhSW50ZXJhY3Rpb25DYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXND
YXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAorICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50
cygpIGZpbmFsIHsgfQorCiAgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKICAgICBS
ZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZWFl
MTYwNTMzMjc5MWM4OTM0YjNjYjQ4Y2U2YzU5N2E1ZDk4OTExZi4uOTcyY2E2NGZmN2M3NWJjZDg0
YzE3MzkxMmNlMDZjNmJkNWY0NzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTIzOCw2ICsyMzgsOCBAQCBwcml2YXRlOgogICAg
IF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSgpIG92ZXJyaWRl
OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VF
dmVudHMoKSBmaW5hbDsKKwogICAgIE5TVmlldyAqbV92aWV3OwogICAgIFdlYlZpZXdJbXBsKiBt
X2ltcGwgeyBudWxscHRyIH07CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDQ3
OTgyNzExNjE4NTIzMTlmNzcwZWQwN2MwMWYyYWI2NWJkYWM4OTUuLjNhNTkzNzkzNGQ4YjhkMDY0
NDIzZTc1MTY2YTY2YjU4YTA1OTM0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTg4OCw2ICs4ODgsMTEgQEAgX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgKlBhZ2VDbGllbnRJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB9
CiAjZW5kaWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBl
bmRpbmdNb3VzZUV2ZW50cygpCit7CisgICAgbV9pbXBsLT5kaWRGaW5pc2hQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzKCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiB7CiAgICAgbV9pbXBsLT5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKaW5k
ZXggZWFkNzE3YmRlY2FjNzQxZjg3NDY5MzQ0ODFiNjlmODFhMjM0ZmMwYy4uMTRmYTljNjRhOGQz
NWNiZmFhODM5ZWQ0OWUyMThlOTY0MDc0MTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gV2ViQ29yZTo6VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjo6TFRSOyB9CiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQ
ZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNs
aWVudEltcGwgY2xhc3MKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxl
cjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGNmMmE0YTU3ZTI1Y2NhYzQ2Mzg2ZDg4N2Y5Njk2ZTE4Y2U5MzA3NjUuLmM1YjNjMmVlNTJmYTFk
ZDM4NThhYTEyNGY1ZTE3MDZmODUyYjQ3ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODggQEAKKzIwMTgtMDgtMTAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09T
XSBJbXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudHMgdGhlIGN1cnJlbnRseSBzdHViYmVkIERyYWdBbmRE
cm9wU2ltdWxhdG9yIG9uIG1hY09TLCBhbmQgaW50cm9kdWNlcyBhIG5ldyBBUEkgdGVzdCBmb3Ig
cjIyNzI2Ni4gU2VlCisgICAgICAgIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0Fu
ZERyb3BUZXN0cy5oOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5k
RHJvcFNpbXVsYXRvck1hYy5tbS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RyYWdBbmREcm9wVGVzdHMubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tLgorCisgICAgICAgIEludHJvZHVjZSBh
IGZpbGUgZm9yIGNyb3NzLXBsYXRmb3JtIGRyYWcgYW5kIGRyb3AgdGVzdHMsIGN1cnJlbnRseSBm
b3IgaU9TIGFuZCBtYWNPUy4gQWRkaXRpb25hbGx5IGFkZCBhIHRlc3QKKyAgICAgICAgZm9yIHIy
MjcyNjYsIHdoaWNoIHdhcyBmaXhlZCBlYXJsaWVyIHRoaXMgeWVhciBidXQgY291bGQgbm90IGJl
IHRlc3RlZCBkdWUgdG8gYSBsYWNrIG9mIHRlc3RpbmcgbWVjaGFuaXNtIG9uCisgICAgICAgIG1h
Y09TIGluIFdlYktpdDIuCisKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWw6IEFkZGVkLgorCisg
ICAgICAgIE1pbm9yIHR3ZWFrcyB0byB0aGlzIHRlc3QgcGFnZSB0byBhZGQgImRyYWdvdmVyIiBh
bmQgImRyb3AiIGV2ZW50IGhhbmRsZXJzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0
bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHBhZ2UgdGhhdCBpbmNsdWRlcyBh
IGxpbmsgZW1iZWRkZWQgd2l0aGluIGFuIGlmcmFtZSBiZWxvdyBhIHBsYWluIHRleHQgaW5wdXQu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFRlc3RzTWFj
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMubW06IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbS4KKworICAg
ICAgICBNb3ZlIG9ubHkgZXhpc3RpbmcgV2ViS2l0MiBtYWNPUyBkcmFnIGFuZCBkcm9wIHRlc3Qg
KERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLk51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApIG91
dAorICAgICAgICBvZiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBhbmQgaW50byBhIG5l
dyBmaWxlLCBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tLiBBZGRpdGlvbmFsbHksIHJlbmFtZQorICAg
ICAgICBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cyB0byBMZWdhY3lEcmFnQW5kRHJvcFRlc3Rz
LCBzaW5jZSBpdCBub3cgb25seSBjb250YWlucyB0d28gbGVnYWN5IFdlYlZpZXcgdGVzdHMgZm9y
CisgICAgICAgIGRyYWcgYW5kIGRyb3AuCisKKyAgICAgICAgKCtbRnJhbWVMb2FkQ29tcGxldGlv
bkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpdKToKKyAgICAgICAgKC1bRnJh
bWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGluaXRXaXRoQ29tcGxldGlvbkJsb2NrOl0pOgorICAg
ICAgICAoLVtGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgd2ViVmlldzpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICgtW0RyYWdTb3VyY2UgZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrRm9yTG9jYWw6XSk6CisgICAgICAgICgtW0RyYWdJbmZvIGluaXRXaXRoSW1hZ2U6b2Zm
c2V0OnBhc3RlYm9hcmQ6c291cmNlOmRlc3RpbmF0aW9uV2luZG93Ol0pOgorICAgICAgICAoLVtE
cmFnSW5mbyBsYXN0TW91c2VQb3NpdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRMYXN0
TW91c2VQb3NpdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlv
bldpbmRvd10pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBkcmFnZ2VkSW1hZ2VMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBk
cmFnZ2VkSW1hZ2VdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6
CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIGRyYWdnaW5nU2VxdWVuY2VOdW1iZXJdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2xpZGVE
cmFnZ2VkSW1hZ2VUbzpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gbmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdG
b3JtYXRpb25dKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246XSk6
CisgICAgICAgICgtW0RyYWdJbmZvIGFuaW1hdGVzVG9EZXN0aW5hdGlvbl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBzZXRBbmltYXRlc1RvRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3BdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0
TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZW51bWVy
YXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25z
OnVzaW5nQmxvY2s6XSk6CisgICAgICAgICgtW0RyYWdJbmZvIHNwcmluZ0xvYWRpbmdIaWdobGln
aHRdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpnZXRUZXN0SW1hZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
d2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdl
LWRyb3B6b25lLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9E
cmFnQW5kRHJvcFNpbXVsYXRvci5oOgorCisgICAgICAgIEZsZXNoIG91dCBzb21lIG9mIHRoZSBE
cmFnQW5kRHJvcFNpbXVsYXRvciBBUEkgZm9yIG1hY09TLCBleHBvc2luZyAoYW1vbmcgb3RoZXIg
dGhpbmdzKSB0aGUgZHJhZyBwYXN0ZWJvYXJkLAorICAgICAgICB0aGUgY3VycmVudCBOU0RyYWdn
aW5nSW5mbywgdGhlIGluaXRpYWwgbG9jYXRpb24gb2YgdGhlIGRyYWcgaW1hZ2UsIGFuZCB0aGUg
ZHJhZyBpbWFnZSBpdHNlbGYuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpzaW11bGF0ZVBy
ZXNzdXJlOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlVXBBdFBvaW50Ol0pOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlTW92ZVRvUG9pbnQ6d2l0aEZsYWdzOl0pOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Om51bWJlck9mQ2xpY2tz
Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlRW50ZXJBdFBvaW50Ol0pOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlRXhpdEF0UG9pbnQ6XSk6CisgICAgICAgICgtW1Rl
c3RXS1dlYlZpZXcgbW91c2VEcmFnVG9Qb2ludDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmll
dyBfbW91c2VFdmVudFdpdGhUeXBlOmF0TG9jYXRpb246XSk6CisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXcgX21vdXNlRXZlbnRXaXRoVHlwZTphdExvY2F0aW9uOmZsYWdzOnRpbWVzdGFtcDpjbGlj
a0NvdW50Ol0pOgorCisgICAgICAgIEFkZCBUZXN0V0tXZWJWaWV3IGhlbHBlcnMgdG8gc2VuZCBN
b3VzZU1vdmUsIE1vdXNlRW50ZXIgYW5kIE1vdXNlRHJhZyBOU0V2ZW50cyB0byB0aGUgd2ViIHZp
ZXcuIEFkZGl0aW9uYWxseSwKKyAgICAgICAgcmVuYW1lIHBhcmFtZXRlciBuYW1lcyB0byB0aGVz
ZSBoZWxwZXJzIHRvIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlc2UgbG9jYXRpb25zIGFy
ZSBhbGwgaW4gTlNXaW5kb3cKKyAgICAgICAgY29vcmRpbmF0ZXMuCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlldyB0eXBlQ2hhcmFjdGVyOl0pOgorCisgICAgICAgIERyaXZlLWJ5IHN0eWxlIGZp
eDogcHV0IHRoaXMgb3BlbmluZyBicmFjZSBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxp
bmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklP
Uy5tbToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJh
bWU6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRXaXRoV2ViVmlld0Zy
YW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdl
YlZpZXddKToKKworICAgICAgICBTbWFsbCBpT1MgRHJhZ0FuZERyb3BTaW11bGF0b3IgYWRqdXN0
bWVudHMgZm9yIG5ldyBEcmFnQW5kRHJvcFNpbXVsYXRvciBpbnRlcmZhY2VzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW06CisgICAgICAg
ICgtW0RyYWdBbmREcm9wVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246
c2ltdWxhdG9yOl0pOgorCisgICAgICAgIEludHJvZHVjZSBhIFdLV2ViVmlldyBzdWJjbGFzcyBm
b3IgdGVzdGluZyBkcmFnIGFuZCBkcm9wIHRoYXQgb3ZlcnJpZGVzIGAtZHJhZ0ltYWdlOmF0Om9m
ZnNldDrigKZgLCBhbmQgaW5zdGVhZAorICAgICAgICBhbGxvd3MgRHJhZ0FuZERyb3BTaW11bGF0
b3IgdG8gdGFrZSBvdmVyIHRoZSBkcmFnLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wVGVzdFdL
V2ViVmlldyBkcmFnSW1hZ2U6YXQ6b2Zmc2V0OmV2ZW50OnBhc3RlYm9hcmQ6c291cmNlOnNsaWRl
QmFjazpdKToKKworICAgICAgICBPdmVycmlkZSB0aGlzIGVudHJ5IHBvaW50IGludG8gZHJhZyBh
bmQgZHJvcCBjb2RlLCBhbmQgaW5zdGVhZCBjYWxsIG91dCB0byB0aGUgRHJhZ0FuZERyb3BTaW11
bGF0b3IgdG8KKyAgICAgICAgY29vcmRpbmF0ZSB0aGUgZHJhZy4KKworICAgICAgICAoLVtEcmFn
QW5kRHJvcFRlc3RXS1dlYlZpZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c10pOgorCisgICAg
ICAgIEhlbHBlciBtZXRob2QgdG8gd2FpdCBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGZpbmlzaCBo
YW5kbGluZyBhbGwgaW4tZmxpZ2h0IG1vdXNlIGV2ZW50cy4KKworICAgICAgICAoZGVmYXVsdEV4
dGVybmFsRHJhZ0ltYWdlKToKKworICAgICAgICBTZXQgdGhpcyBpbWFnZSBhcyB0aGUgZGVmYXVs
dCBkcmFnIGltYWdlIHdoZW4gc2ltdWxhdGluZyBhbiBpbmNvbWluZyBkcmFnIHNlc3Npb24gZnJv
bSBvdXRzaWRlIG9mIHRoZSB3ZWIgdmlldy4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBpbml0V2l0aFdlYlZpZXdGcmFtZTpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11
bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BTaW11bGF0b3IgZmxpcEFib3V0WEF4aXNJbkhvc3RXaW5kb3c6XSk6CisKKyAg
ICAgICAgSGVscGVyIG1ldGhvZCB0byBmbGlwIGEgZ2l2ZW4gcG9pbnQgYWJvdXQgdGhlIFggYXhp
cyBvZiB0aGUgd2luZG93LgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGxvY2F0
aW9uSW5WaWV3Rm9yQ3VycmVudFByb2dyZXNzXSk6CisKKyAgICAgICAgTWFwIGEgcHJvZ3Jlc3Mg
dmFsdWUgKGJldHdlZW4gMCBhbmQgMSkgdG8gYSBkcmFnIGxvY2F0aW9uLgorCisgICAgICAgICgt
W0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRpYWxQcm9ncmVzc0Zvck1vdXNlRHJhZ10pOgorCisg
ICAgICAgIERldGVybWluZXMgdGhlIGluaXRpYWwgcHJvZ3Jlc3MgdmFsdWUgd2hlbiBpbml0aWF0
aW9uIGEgZHJhZyBpbiB3ZWIgY29udGVudC4gVGhpcyBpcyB0aGUgaW5pdGlhbCBwcm9ncmVzcwor
ICAgICAgICByZXF1aXJlZCB0byBlbnN1cmUgdGhhdCB0aGUgZmlyc3QgbW91c2UgZHJhZyBldmVu
dCBleGNlZWRzIHRoZSBkcmFnIGRpc3RhbmNlIGh5c3RlcmVzaXMgYW5kIGNhdXNlcyBhbnkgZHJh
ZworICAgICAgICAoaWYgYXBwbGljYWJsZSkgdG8gYmVnaW4uCisKKyAgICAgICAgKC1bRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgcnVuRnJvbTp0bzpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11
bGF0b3IgcGVyZm9ybURyYWdJbldlYlZpZXc6YXRMb2NhdGlvbjp3aXRoSW1hZ2U6cGFzdGVib2Fy
ZDpzb3VyY2U6XSk6CisKKyAgICAgICAgSGVscGVyIHRvIGNvb3JkaW5hdGUgZHJhZyB1cGRhdGVz
IGluIGJvdGggdGhlIGNhc2VzIHdoZXJlIHdlJ3JlIHNpbXVsYXRpbmcgYSBkcmFnIHNlc3Npb24g
ZW50ZXJpbmcgZnJvbSBvdXRzaWRlCisgICAgICAgIG9mIHRoZSB3ZWIgdmlldywgYW5kIGluIHRo
ZSBjYXNlIHdoZXJlIHdlJ3ZlIGluaXRpYXRlZCBhIGRyYWcgZnJvbSB0aGUgd2ViIHZpZXcgaXRz
ZWxmLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdlYlZpZXddKToKKyAgICAg
ICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Igc2V0RXh0ZXJuYWxEcmFnUGFzdGVib2FyZDpdKToK
KyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgZXh0ZXJuYWxEcmFnUGFzdGVib2FyZF0p
OgorCisgICAgICAgIEp1c3QgbGlrZSBpdHMgaU9TIGNvdW50ZXJwYXJ0IChzZXRFeHRlcm5hbEl0
ZW1Qcm92aWRlcnM6KSwgc2V0dGluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgb24gbWFj
T1MgcHV0cyB0aGUKKyAgICAgICAgRHJhZ0FuZERyb3BTaW11bGF0b3IgaW4gYSBtb2RlIHRoYXQg
c2ltdWxhdGVzIGEgZHJhZyBjb21pbmcgaW4gZnJvbSBvdXRzaWRlIHRoZSB3ZWIgdmlldywgdXNp
bmcgdGhlIGdpdmVuCisgICAgICAgIHBhc3RlYm9hcmQuCisKKyAgICAgICAgKC1bRHJhZ0FuZERy
b3BTaW11bGF0b3Igc2V0RXh0ZXJuYWxEcmFnSW1hZ2U6XSk6CisgICAgICAgICgtW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGV4dGVybmFsRHJhZ0ltYWdlXSk6CisKKyAgICAgICAgTWF5IGJlIG9wdGlv
bmFsbHkgc2V0IHdoZW4gc3BlY2lmeWluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgdG8g
c3BlY2lmeSB0aGUgZHJhZyBpbWFnZSB1c2VkLiBJZiBubyBleHRlcm5hbAorICAgICAgICBkcmFn
IGltYWdlIGlzIHNwZWNpZmllZCwgZmFsbHMgYmFjayB0byB0aGUgZGVmYXVsdCBpbWFnZSByZXR1
cm5lZCBieSBgZGVmYXVsdEV4dGVybmFsRHJhZ0ltYWdlKClgLgorCisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGRyYWdnaW5nSW5mb10pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNp
bXVsYXRvciB3aWxsRW5kRHJhZ2dpbmdIYW5kbGVyXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9w
U2ltdWxhdG9yIHNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6XSk6CisKKyAgICAgICAgSG9vayB0
byBhbGxvdyB0ZXN0cyB0byBydW4gbG9naWMgcmlnaHQgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRy
b3AgKGlmIHRoZSBjdXJyZW50IGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBub25lKSBvcgorICAgICAg
ICBlbmRpbmcgdGhlIGRyYWcgc2Vzc2lvbiB3aXRob3V0IHBlcmZvcm1pbmcgYSBkcmFnIG9wZXJh
dGlvbi4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZpZXc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGRlYWxsb2NdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcGhhc2VdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmg6IENvcGll
ZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1t
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8ubW06IEFkZGVk
LgorCisgICAgICAgIE1vY2sgb2JqZWN0IGNvbmZvcm1pbmcgdG8gTlNEcmFnZ2luZ0luZm8gdGhh
dCBpcyBwYXNzZWQgdG8gV0tXZWJWaWV3IHdoZW4gaW52b2tpbmcgLWRyYWdnaW5nVXBkYXRlZDos
CisgICAgICAgIC1kcmFnZ2luZ0VudGVyZWQ6IGFuZCAtZHJhZ2dpbmdFeGl0ZWQ6LgorCisgICAg
ICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgt
W1Rlc3REcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtU
ZXN0RHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2lu
Z0luZm8gc2V0RHJhZ2dpbmdTb3VyY2U6XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8g
ZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hP
cHRpb25zOnVzaW5nQmxvY2s6XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dp
bmdEZXN0aW5hdGlvbldpbmRvd10pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIGRyYWdn
ZWRJbWFnZV0pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIHNldERyYWdnZWRJbWFnZTpd
KToKKyAgICAgICAgKC1bVGVzdERyYWdnaW5nSW5mbyBzbGlkZURyYWdnZWRJbWFnZVRvOl0pOgor
ICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb246XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gcmVzZXRTcHJpbmdM
b2FkaW5nXSk6CisKKyAgICAgICAgRW1wdHkgbWV0aG9kIHN0dWJzLCB0byBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgZnV0dXJlIGFzIG5lZWRlZC4KKwogMjAxOC0wOC0xMCAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0LXBhdGNoIHNldHVwLWdpdC1jbG9u
ZSBzaG91bGQgc2V0IEdpdCBjb3JlIGVkaXRvciB0byBjb21taXQtbG9nLWVkaXRvcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxOThlYjdkN2RlN2M0NzUxYmUwZjdlZjY2YTA5MTc5ZjQ4YjRl
NWRjLi44MmNkOWY5NDRmZWIyMjQ0MDBhNzc1MGMyMmViMzdjNGU5NmQ1ZjFmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzAzLDcgKzMwMyw2IEBACiAJCTZCRkQyOTRDMUQ1RTZDMUQwMDhF
Qzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRT
ZXQuY3BwICovOyB9OwogCQk3NTFCMDVENjFGOEVBQzQxMDAyOEEwOUUgLyogRGF0YWJhc2VUcmFj
a2VyVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc1MUIwNUQ1MUY4RUFDMUEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNrZXJUZXN0Lm1tICovOyB9
OwogCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTRDRUM4MDFGNjcy
MkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi87IH07Ci0JCTc2NDMyMkQ3MUI2
MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY0MzIyRDUxQjYxQ0NBNDAw
MjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi87IH07CiAJCTc2NzM0
OTlEMTkzMEM1QkIwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25h
bExvYWRfYnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZh
aWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRGMTU0NzY3
RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYx
RkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OwpAQCAtNjYwLDcgKzY1OSw2
IEBACiAJCUExNzk5MThCMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk5MTg5MUUx
Q0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCAqLzsgfTsKIAkJQTE3RUFDNTUy
MDgzMDVBMDAwODRCNDFCIC8qIGZpbmQucGRmIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0VBQzU0MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5k
LnBkZiAqLzsgfTsKIAkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODBDMEY5
MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi87IH07Ci0JCUExODE5QjEzMjA4
OTc1RDMwMEMwOUI4MyAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgxOUIxMjIwODk0RDA0MDBD
MDlCODMgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi87IH07CiAJCUExQzRGQjczMUJBQ0Qx
Q0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMu
cGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzLm1tICovOyB9OwogCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xv
YWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi87IH07CkBAIC04
MTMsNiArODExLDkgQEAKIAkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5w
dXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NUUxNTcyMjExMkNFMjkwMDMwN0U4MiAvKiBLZXlib2FyZElucHV0VGVzdHNJT1MubW0g
Ki87IH07CiAJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUUxNTc1
MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJRjQ2MTI4
QjcyMTFDOEVENTAwRDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4QjYyMTFDOEVENTAw
RDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tICovOyB9OworCQlGNDYxMjhDQjIx
MUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NjEyOENBMjExRDQ3NTEwMEQ5RkFEQiAvKiBU
ZXN0RHJhZ2dpbmdJbmZvLm1tICovOyB9OworCQlGNDYxMjhENDIxMUU0MEZEMDBEOUZBREIgLyog
bGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxp
bmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sICovOyB9OworCQlGNDYxMjhENzIxMUU0ODlDMDBE
OUZBREIgLyogRHJhZ0FuZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NjEyOEQ2MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJv
cFRlc3RzLm1tICovOyB9OwogCQlGNDY0QUY5MjIwQkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5n
UHJvZ3Jlc3NUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NjRBRjkxMjBCQjY2RUEwMDdGOUIxOCAvKiBSZW5kZXJpbmdQcm9ncmVzc1Rlc3Rz
Lm1tICovOyB9OwogCQlGNDY4NDlCRTFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVz
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY4
NDlCRDFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi87IH07CiAJCUY0
Njg0OUMwMUVFRjVFRjMwMEI5MzdGRSAvKiByaWNoLWFuZC1wbGFpbi10ZXh0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2ODQ5QkYx
RUVGNUVEQzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCAqLzsgfTsKQEAgLTgy
OCw3ICs4MjksNyBAQAogCQlGNEFCNTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdn
YWJsZS1kaXYuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1k
aXYuaHRtbCAqLzsgfTsKIAkJRjRCODI1RDgxRUY0REJGQjAwNkU0MTdGIC8qIGNvbXByZXNzZWQt
ZmlsZXMuemlwIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0QjgyNUQ2MUVGNERCRDQwMDZFNDE3RiAvKiBjb21wcmVzc2VkLWZpbGVzLnppcCAq
LzsgfTsKIAkJRjRCODZENEYyMEJDRDVCMjAwOTlBN0U2IC8qIHBhaW50LXNpZ25pZmljYW50LWFy
ZWEtbWlsZXN0b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjRCODZENEUyMEJDRDU5NzAwOTlBN0U2IC8qIHBhaW50LXNpZ25pZmlj
YW50LWFyZWEtbWlsZXN0b25lLmh0bWwgKi87IH07Ci0JCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5
OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFn
QW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLzsgfTsKKwkJRjRCRkE2OEUxRTRBRDA4MDAwMTU0
Mjk4IC8qIExlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5
RHJhZ0FuZERyb3BUZXN0cy5tbSAqLzsgfTsKIAkJRjRDMkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8q
IGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEMyQUIyMTFERDZEOTQxMDBFMDZENUIgLyog
ZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovOyB9OwogCQlGNEM4Nzk3RjIwNTlEOEQz
MDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Ny
b2xsVmlld0luc2V0VGVzdHMubW0gKi87IH07CiAJCUY0Q0Q3NEM2MjBGREFDRkEwMERFMzc5NCAv
KiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRl
eHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLzsgfTsKQEAgLTgzOSw2ICs4NDAsOCBAQAogCQlG
NEQ1RTRFODFGMEM1RDM4MDA4QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RDVFNEU3MUYwQzVEMjcwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwg
Ki87IH07CiAJCUY0RDY1REE4MUY1RTQ3MDQwMDlEOEMyNyAvKiBzZWxlY3RlZC10ZXh0LWltYWdl
LWxpbmstYW5kLWVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENjVEQTcxRjVFNDZDMDAwOUQ4QzI3IC8qIHNlbGVjdGVk
LXRleHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCAqLzsgfTsKIAkJRjRERUY2RUQxRTlC
NERCNjAwNDhFRjYxIC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRERUY2RUMxRTlCNEQ5
NTAwNDhFRjYxIC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgKi87IH07CisJCUY0RTBB
MjhCMjExRTRBMkIwMEFGN0M3RiAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDYxMjhEODIxMUU0
OTYzMDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi87IH07CisJCUY0RTBBMjhG
MjExRTVENUIwMEFGN0M3RiAvKiBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFMEEyOEUyMTFFNUQ1QjAwQUY3QzdG
IC8qIERyYWdBbmREcm9wVGVzdHNNYWMubW0gKi87IH07CiAJCUY0RTNEODA4MjBGNzBCQjkwMDdC
NThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFM0Q4MDcyMEY3
MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAq
LzsgfTsKIAkJRjRGMTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93
LXBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1u
b3ctcGxheWluZy5odG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3
QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsg
fTsKQEAgLTkyMSw5ICs5MjQsNiBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlDRDU3Nzc5
QzIxMUNFOTFGMDAxQjM3MUUgLyogYXVkaW8td2l0aC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKLQkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8td2l0aC1h
dWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJQ0Q1Nzc3
OTkyMTFDRTBFNDAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyog
YWNjZXB0c0ZpcnN0TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4
NzFDODkyNUEwMDBBNTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC05
NDAsNiArOTQwLDcgQEAKIAkJCQk3QzlFRDk4QjE3QTE5RjRCMDBFNERDMzMgLyogYXR0cmlidXRl
ZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzEz
N0U0QjIxMTI0RDAxMDAyQkVFQTQgLyogQXR0clN0eWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQ0Q5RTI5MkUxQzkwQzMzRjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQlDRDU3Nzc5QzIxMUNFOTFGMDAxQjM3MUUgLyogYXVkaW8t
d2l0aC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NkUxODJERjE1
NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDFBQjk5RjFFRjQ2OTZCMDA4M0ZBMDggLyogYXV0b2ZvY3VzLWNvbnRl
bnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTkzQ0ZBODY3MUNFQjlF
MzgwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0LWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xMDE0LDcgKzEwMTUsNyBAQAogCQkJCTkzMkFFNTNEMUQzNzEwNDcwMDVERkZB
RiAvKiBmb2N1cy1pbnB1dHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTdFOEIz
NjE4MTIwQjJGMDBBRUI3NEEgLyogRnJhZ21lbnROYXZpZ2F0aW9uLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250
ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQlBMTgxOUIxMzIwODk3
NUQzMDBDMDlCODMgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJRjRFMEEyOEIyMTFFNEEyQjAwQUY3QzdGIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0RjQwNUJDMUQ0QzBEMUMwMDdBOTcwNyAv
KiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUNENzhFMTFFMURCN0VFMkEwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVs
ZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzRkJEMUI0QTFEM0Q2NkFCMDBF
NkQ2RkEgLyogRnVsbHNjcmVlbkxheW91dENvbnN0cmFpbnRzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xMDg2LDYgKzEwODcsNyBAQAogCQkJCUMyNUNDQTBCMUU1MTQwQzEwMDI2Q0I4
QSAvKiBMaW5lQnJlYWtpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
NjFFRjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNDFBQjlBNzFFRjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtdGFyZ2V0LWRp
di5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0NjEyOEQ0MjExRTQwRkQwMEQ5RkFE
QiAvKiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk4MzYxRjE3ODFFNjEwQjRFMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJp
YnV0ZS13aXRoLXNsYXNoZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzQ5RDND
NDFEQjk3MjhFMDA0QTlGNjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OEU2NDc5MTYzMjcwNzQwMEI2QzY3NiAvKiBsaW5r
LXdpdGgtdGl0bGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTExNzIsNiArMTE3NCw3
IEBACiAJCQkJRjQxQUI5QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8q
IHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8t
d2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
Q0RDOEU0OTQxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NTFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0
aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0QzMjFCMDQxRTNBODVGQTAw
RUIyMUM4IC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8tYW5kLXdlYmF1ZGlvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCkBAIC0xMTgwLDYgKzExODMsNyBAQAogCQkJCUNEQzhFNDk2MUJDNkYx
MDgwMDU5NEZFQyAvKiB2aWRlby13aXRob3V0LWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQ0RDOEU0OTcxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8u
bXA0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTA3Q0QzMkY4MjA2NUI3MkIwMDY0QTRCRSAv
KiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUNENTc3Nzk5MjExQ0UwRTQw
MDFCMzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTFDMkI4MTg2MUM4OTI1OUQwMEE1NTI5RiAvKiB3ZWJmb250Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURC
Q2xlYW51cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTE3MTRFQjUxQ0Y4Qzc4
QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0xNTgzLDcgKzE1ODcsNiBAQAogCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAz
OUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvRmls
bEF2YWlsYWJsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1
OUM1OTAwOUVGMDZFIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2Fj
aGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcw
MDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1
c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNzY0MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0
ZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRh
cnlUeXBpbmdBdHRyaWJ1dGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njcz
NDk5NzE5MzAxNkRDMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3BMb2Fk
aW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0Rp
ZEZhaWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUxODJEOTE1NDc1NTAxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3ODksNyArMTc5Miw2IEBACiAJCUExNzk5MThBMUUxQ0EyNDEwMEE1MDVF
RCAvKiBTaGFyZWRCdWZmZXJUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZEJ1ZmZlclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3RUFD
NTQyMDgzMDU2RTAwODRCNDFCIC8qIGZpbmQucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gZmluZC5wZGY7IHBhdGgg
PSBUZXN0cy9XZWJLaXQvZmluZC5wZGY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
QTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJ1bk9wZW5QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTE4MTlCMTIyMDg5NEQwNDAwQzA5QjgzIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImZ1bGwtcGFnZS1kcm9wem9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTE4QUE4Q0MxQzNGQTIxODAwOUIyQjk3IC8qIENvbnRlbnRGaWx0ZXJpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEZpbHRlcmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1RDE4REQzREI3MDBCNUVBOEEgLyogRG93bmxv
YWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNEZCNkMxQkFDQ0U1MDAwMzc0MkQw
IC8qIFF1aWNrTG9vay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1aWNrTG9vay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDYsNiArMjA0
OCwxMiBAQAogCQlGNDVFMTU3NTIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0SW5wdXREZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2MTI4QjQyMTFDODYxQTAwRDlGQURCIC8qIERyYWdBbmRE
cm9wU2ltdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERyYWdBbmRE
cm9wU2ltdWxhdG9yLmg7IHBhdGggPSBjb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDYxMjhCNjIxMUM4RUQ1MDBEOUZBREIgLyogRHJh
Z0FuZERyb3BTaW11bGF0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJv
cFNpbXVsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4Qzky
MTFENDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVz
dERyYWdnaW5nSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDYxMjhDQTIx
MUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFRlc3REcmFnZ2luZ0luZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
NjEyOEQxMjExRTJEMjUwMEQ5RkFEQiAvKiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NjEyOEQ1MjExRTQ4OUMwMEQ5RkFE
QiAvKiBEcmFnQW5kRHJvcFRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdBbmREcm9wVGVzdHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURC
IC8qIERyYWdBbmREcm9wVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJv
cFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDYxMjhEODIxMUU0OTYz
MDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdl
LWRyb3B6b25lLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDY0QUY5MTIw
QkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlbmRlcmluZ1Byb2dyZXNzVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJUGFzdGVib2FyZFRlc3RzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDY4NDlCRjFFRUY1RURDMDBCOTM3RkUgLyogcmljaC1hbmQt
cGxhaW4tdGV4dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDYyLDcgKzIwNzAsNyBAQAogCQlGNEFCNTc4
OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCODI1RDYxRUY0REJENDAwNkU0MTdGIC8qIGNvbXByZXNz
ZWQtZmlsZXMuemlwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gYXJjaGl2ZS56aXA7IHBhdGggPSAiY29tcHJlc3NlZC1maWxlcy56aXAiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEI4NkQ0RTIwQkNENTk3MDA5OUE3RTYgLyogcGFpbnQt
c2lnbmlmaWNhbnQtYXJlYS1taWxlc3RvbmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJwYWludC1zaWduaWZpY2FudC1hcmVhLW1pbGVzdG9uZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9w
UGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5RHJhZ0Fu
ZERyb3BUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDMkFCMjExREQ2
RDk0MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Ny
b2xsVmlld0luc2V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3SW5z
ZXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDRDc0QzUyMEZEQUNG
NTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJ0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3NCw2ICsyMDgyLDcgQEAKIAkJRjRENUU0RTcxRjBDNUQyNzAw
OEMxQTQ5IC8qIGRyYWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkcmFn
c3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEQ2NURBNzFGNUU0NkMwMDA5RDhDMjcgLyogc2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFu
ZC1lZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNlbGVjdGVkLXRl
eHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0REVGNkVDMUU5QjREOTUwMDQ4RUY2MSAvKiBpbWFnZS1pbi1saW5rLWFuZC1pbnB1
dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImltYWdlLWluLWxpbmstYW5kLWlu
cHV0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEUwQTI4RTIxMUU1RDVC
MDBBRjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERyYWdBbmREcm9wVGVzdHNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RTNEODA3MjBGNzA4RTQwMDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRp
Y2xlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2lnbmlmaWNhbnQtdGV4dC1t
aWxlc3RvbmUtYXJ0aWNsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRG
MTM3OTExRDlCNjgzMjAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5
aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY0MDVCQTFENEMwQ0Y4
MDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8t
d2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTYsNiAr
MjMwNSw4IEBACiAJCQkJNTE4RUU1MTYyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xv
YWRpbmcubW0gKi8sCiAJCQkJNTE4RUU1MTcyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVy
c0xvYWRpbmdQbHVnaW4ubW0gKi8sCiAJCQkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThBIC8qIERv
d25sb2FkLm1tICovLAorCQkJCUY0NjEyOEQ1MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJv
cFRlc3RzLmggKi8sCisJCQkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9w
VGVzdHMubW0gKi8sCiAJCQkJQTE1NTAyMjgxRTA1MDIwQjAwQTI0QzU3IC8qIER1cGxpY2F0ZUNv
bXBsZXRpb25IYW5kbGVyQ2FsbHMubW0gKi8sCiAJCQkJRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5
IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi8sCiAJCQkJQ0RBMjlCMjgyMEZEMkE5OTAwRjE1Q0VE
IC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbSAqLywKQEAgLTI1ODcsNiArMjU5OCw3IEBA
CiAJCQkJNUM5RTU5NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2Fs
ICovLAogCQkJCUY0ODU2Q0EyMUU2NDk4QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQu
aHRtbCAqLywKIAkJCQkzNzYwQzRGMjIxMTI0QkQwMDAyMzNBQ0MgLyogQXR0clN0eWxlLmh0bWwg
Ki8sCisJCQkJQ0Q1Nzc3OUEyMTFDRTZCNzAwMUIzNzFFIC8qIGF1ZGlvLXdpdGgtd2ViLWF1ZGlv
Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTgxRUY0NjkyQzAwODNGQTA4IC8qIGF1dG9mb2N1cy1jb250
ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQk5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyogYXV0
b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sICovLAogCQkJCTJFMTRBNTI4MUQzRkU4QjgwMDEwRjM1
QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8sCkBAIC0yNjI4LDYgKzI2
NDAsNyBAQAogCQkJCUExN0VBQzU0MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5kLnBkZiAqLywKIAkJ
CQlGNDNFM0JDMDIwREFEQjgwMDBBNEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovLAogCQkJ
CTkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAvKiBmb2N1cy1pbnB1dHMuaHRtbCAqLywKKwkJCQlG
NDYxMjhEODIxMUU0OTYzMDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8sCiAJ
CQkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRl
by13aXRoLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q3OEUxMUIxREI3RUEzNjAwMTRBMkRFIC8qIEZ1
bGxzY3JlZW5EZWxlZ2F0ZS5odG1sICovLAogCQkJCTNGQkQxQjQ5MUQzOUQxREIwMEU2RDZGQSAv
KiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMuaHRtbCAqLywKQEAgLTI2ODIsNiArMjY5NSw3
IEBACiAJCQkJQzI1Q0NBMEExRTUxM0Y0OTAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5odG1sICov
LAogCQkJCUY0MUFCOTk2MUVGNDY5MkMwMDgzRkEwOCAvKiBsaW5rLWFuZC1pbnB1dC5odG1sICov
LAogCQkJCUY0MUFCOTlEMUVGNDY5MkMwMDgzRkEwOCAvKiBsaW5rLWFuZC10YXJnZXQtZGl2Lmh0
bWwgKi8sCisJCQkJRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxpbmstaW4taWZyYW1lLWFu
ZC1pbnB1dC5odG1sICovLAogCQkJCThDMTBBRjk3MjA2NDY3ODMwMDE4RkQ5MCAvKiBsb2NhbHN0
b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi8sCiAJCQkJNTFFNkE4OTUxRDJGMUM3NzAw
QzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi8sCiAJCQkJNDZDNTE5RTIxRDM1NjI5
NjAwREFBNTFBIC8qIExvY2FsU3RvcmFnZU51bGxFbnRyaWVzLmh0bWwgKi8sCkBAIC0yNzI0LDEz
ICsyNzM4LDEyIEBACiAJCQkJRjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1k
ZWZlcnJlZC1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4M0ZBMDggLyog
dGV4dGFyZWEtdG8taW5wdXQuaHRtbCAqLywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEg
LyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKKwkJCQlDRDU3Nzc5QjIx
MUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8s
CisJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8s
CiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NL
aWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJCQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8q
IFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5odG1sICovLAogCQkJCTJFMTMxQzE3MUQ4M0E5
N0UwMDFCQTM2QyAvKiB3aWRlLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywK
LQkJCQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywK
LQkJCQlDRDU3Nzc5QTIxMUNFNkI3MDAxQjM3MUUgLyogYXVkaW8td2l0aC13ZWItYXVkaW8uaHRt
bCAqLywKLQkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1h
bmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTIzLDYgKzMxMzYsOCBAQAogCQkJCUMwODEyMjQ0
MTNGQzE5RUMwMERDMzlBRSAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3cubSAq
LywKIAkJCQkyOUFCOEFBMzE2NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZS5oICovLAogCQkJCTI5QUI4QUEyMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tICovLAorCQkJCUY0NjEyOEM5MjExRDQ3NTEwMEQ5
RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLmggKi8sCisJCQkJRjQ2MTI4Q0EyMTFENDc1MTAwRDlG
QURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gKi8sCiAJCQkJQzA4NTg3QkUxM0ZFOTU2QzAwMUVG
NEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5oICovLAogCQkJCUMwODU4N0JEMTNGRTk1NkMwMDFF
RjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rlc3QubW0gKi8sCiAJCQkpOwpAQCAtMzE2Nyw3ICszMTgy
LDcgQEAKIAkJCQk0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLywKIAkJ
CQkzNzUxQUY3QTE2OTUxOEY4MDA3NjQzMTkgLyogRE9NTm9kZUZyb21KU09iamVjdC5tbSAqLywK
IAkJCQkzN0RDNjc4QjE0MEQ3QzUwMDBBQkNDREIgLyogRE9NUmFuZ2VPZlN0cmluZy5tbSAqLywK
LQkJCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVz
dHMubW0gKi8sCisJCQkJRjRFMEEyOEUyMTFFNUQ1QjAwQUY3QzdGIC8qIERyYWdBbmREcm9wVGVz
dHNNYWMubW0gKi8sCiAJCQkJQzA3RTZDQUUxM0ZENjc2NTAwMzhCMjJCIC8qIER5bmFtaWNEZXZp
Y2VTY2FsZUZhY3Rvci5tbSAqLywKIAkJCQkxQTlGQjZDQzFDQTM0QkU1MDA5NjYxMjQgLyogRWFy
bHlLVk9DcmFzaC5tbSAqLywKIAkJCQk0QkI0MTYwMzE2ODE1RjkxMDA4MjQyMzggLyogRWxlbWVu
dEF0UG9pbnRJbldlYkZyYW1lLm1tICovLApAQCAtMzE4MCw2ICszMTk1LDcgQEAKIAkJCQlDNTA3
RThBNjE0QzY1NDVCMDA1RDZCM0IgLyogSW5zcGVjdG9yQmFyLm1tICovLAogCQkJCTU3RjEwRDky
MUM3RTdCMzgwMEVDREYzMCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tICovLAogCQkJ
CTRCQjQxNjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5t
bSAqLywKKwkJCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJhZ0FuZERyb3BU
ZXN0cy5tbSAqLywKIAkJCQk3QTdCMEU3RTFFQUZFNDU0MDA2QUI4QUUgLyogTGltaXRUaXRsZVNp
emUubW0gKi8sCiAJCQkJNTc5MDFGQUUxQ0FGMTM3MTAwRUQ2NEY5IC8qIExvYWRJbnZhbGlkVVJM
UmVxdWVzdC5tbSAqLywKIAkJCQlDREEzMTU5NjFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLm1tICovLApAQCAtMzIxNiw3ICszMjMyLDYgQEAKIAkJCQkxQTdC
RkMwQTE3MUEwQkRCMDBCQzVGNjQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSAqLywKIAkJCQlB
NUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0g
Ki8sCiAJCQkJRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdU
ZXN0cy5tbSAqLywKLQkJCQk3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5
VHlwaW5nQXR0cmlidXRlcy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyMzYsNyArMzI1MSw2IEBACiAJCQkJRjRGQTkxODIxRTYx
ODU2NjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3Bh
Y2UuaHRtbCAqLywKIAkJCQkxQTdFOEIzNTE4MTIwOTM2MDBBRUI3NEEgLyogRnJhZ21lbnROYXZp
Z2F0aW9uLmh0bWwgKi8sCiAJCQkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFn
ZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKLQkJCQlBMTgxOUIxMjIwODk0RDA0MDBDMDlCODMg
LyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8sCiAJCQkJQ0RCRkNDNDIxQTlGRjQ0ODAwQTdC
NjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi8sCiAJCQkJOUI0RjhGQTYx
NTlENTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8sCiAJCQkJ
OUIyNkZDQjQxNTlEMTVFNzAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5o
dG1sICovLApAQCAtMzcwOSwxMCArMzcyMywxMSBAQAogCQkJCTUxOEVFNTE4MjBBNzhDRTIwMEUw
MjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdG
MjMxQTQxMUFGNjAwNDQ3QzRDIC8qIERvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFRUUxQTQxMUFFNjAwNDQ3QzRDIC8qIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0Fu
ZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQ0RjNCNjFFNEUy
QkNCMDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNDYxMjhCNzIxMUM4RUQ1MDBEOUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlGNDYxMjhENzIxMUU0ODlDMDBEOUZBREIgLyogRHJhZ0Fu
ZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDRGM0I5MUU0RTM2RTQwMEJCMjc2
NyAvKiBEcmFnQW5kRHJvcFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjRFMEEyOEYy
MTFFNUQ1QjAwQUY3QzdGIC8qIERyYWdBbmREcm9wVGVzdHNNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTU1MDIyQTFFMDUwMjBCMDBBMjRDNTcgLyogRHVwbGljYXRlQ29tcGxldGlvbkhhbmRs
ZXJDYWxscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJFMUE0MTFBN0UwMDQ0N0M0QyAv
KiBEeW5hbWljRGV2aWNlU2NhbGVGYWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBCRjg5
MjFERDU5OUI2MDBCMDAzMjggLyogRWFybHlLVk9DcmFzaC5tbSBpbiBTb3VyY2VzICovLApAQCAt
Mzc0OCw3ICszNzYzLDYgQEAKIAkJCQlDRDc4RTExRDFEQjdFQTY2MDAxNEEyREUgLyogRnVsbHNj
cmVlbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkQxRDBBNjUwQzAwRkVC
Q0YzIC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
REJGQ0M0NTFBOUZGNDUzMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0g
aW4gU291cmNlcyAqLywKLQkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVk
QXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNEQjc5NjkxRUY2M0IzQzAw
QkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY4MUE0MTFB
RTYwMDQ0N0M0QyAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MzFFRkZG
NjFFN0I1RThEMDBEMkVCQjggLyogR2VvbG9jYXRpb24ubW0gaW4gU291cmNlcyAqLywKQEAgLTM3
OTksNiArMzgxMyw3IEBACiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJk
SW5wdXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA2MUE0MTFBRTYwMDQ0
N0M0QyAvKiBMYXlvdXRNaWxlc3RvbmVzV2l0aEFsbENvbnRlbnRJbkZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFn
QW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E2NkJEQjYxRUFGMTRFRjAwQ0ND
OTI0IC8qIExpbWl0VGl0bGVTaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBN0IwRTdGMUVB
RkU0QzMwMDZBQjhBRSAvKiBMaW1pdFRpdGxlU2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMy
NUNDQTA2MUU1MTM4MEIwMDI2Q0I4QSAvKiBMaW5lQnJlYWtpbmcubW0gaW4gU291cmNlcyAqLywK
QEAgLTM4NjcsNiArMzg4Miw3IEBACiAJCQkJN0NDRTdFQTcxQTQxMUExMzAwNDQ3QzRDIC8qIFBs
YXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzQkFFRThEMUVGNDYyNTUw
MERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YyNjFBNDExQUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAq
LywKKwkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVkQXVkaW9CdWZmZXJT
aXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MxQUY3OTUxRThEQ0JBQjAwMjY0NUI5IC8qIFBy
ZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQjFBNDEx
QUU2MDA0NDdDNEMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjJDMUE0MTFCMTAwMDQ0N0M0QyAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9S
ZXNpemluZy5tbSBpbiBTb3VyY2VzICovLApAQCAtMzkzNiw2ICszOTUyLDcgQEAKIAkJCQkxQzcz
NEI1MzIwNzg4QzQ4MDBGNDMwRUEgLyogU3lzdGVtQ29sb3JzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMTYxQTQxMUFFNjAwNDQ3QzRDIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUE5MUE0MTFBMUQwMDQ0N0M0QyAvKiBUZXN0QnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ2MTI4Q0IyMTFENDc1MTAw
RDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3
NjIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRDFDMDRBNzFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUExNEZDNTkwMUI4QUUzNkYwMEQxMDdFQiAvKiBUZXN0UHJv
dG9jb2wubW0gaW4gU291cmNlcyAqLywKQEAgLTQwMzIsNyArNDA0OSw2IEBACiAJCQkJRjRGQTkx
ODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hv
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dl
YlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKLQkJCQk3NjQzMjJENzFCNjFDQ0MzMDAy
NEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RyYWdBbmREcm9wVGVzdHMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNmVkMjBhNzY2MDUyNWYx
MzUwNGE4YzA0OTVmZWE1MGI4YTY5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMuaApAQCAtMCwwICsxLDI2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTcyZGIzZWE2ZjA0MDQ2M2IxODU3OTA3MDY4N2I3NjVkMDhhNzk3NwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BU
ZXN0cy5tbQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
KworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEcmFnSW1hZ2VMb2NhdGlvbkZvckxpbmtJblN1YmZy
YW1lKQoreworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXdGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDQwMCwgNDAw
KV0pOworICAgIFtbc2ltdWxhdG9yIHdlYlZpZXddIHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAImxpbmstaW4taWZyYW1lLWFuZC1pbnB1dCJdOworICAgIFtzaW11bGF0b3IgcnVuRnJv
bTpOU01ha2VQb2ludCgyMDAsIDM3NSkgdG86TlNNYWtlUG9pbnQoMjAwLCAxMjUpXTsKKworICAg
IEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFtbc2ltdWxhdG9yIHdl
YlZpZXddIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdpbnB1dCcpLnZhbHVlIl0pOworCisjaWYgUExBVEZPUk0oTUFDT1MpCisgICAgRVhQRUNU
X1RSVUUoTlNQb2ludEluUmVjdChbc2ltdWxhdG9yIGluaXRpYWxEcmFnSW1hZ2VMb2NhdGlvbklu
Vmlld10sIE5TTWFrZVJlY3QoMCwgMjUwLCA0MDAsIDI1MCkpKTsKKyNlbmRpZgorfQorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25l
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2Z1bGwtcGFnZS1k
cm9wem9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MzE5NzE4Yjk5ZTZjNGY0MWFmMjU1MWI0MDc0NzJk
ZmExNDA2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2Z1bGwtcGFnZS1kcm9wem9uZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoIj4KKzxib2R5IHN0eWxlPSJ3aWR0aDogMTAwdnc7IGhlaWdodDogMTAwdmg7IG1hcmdpbjog
MDsiCisgICAgb25kcmFnZW50ZXI9IndpbmRvdy5vYnNlcnZlZERyYWdFbnRlciA9IHRydWU7IHJl
dHVybiBmYWxzZTsiCisgICAgb25kcmFnb3Zlcj0id2luZG93Lm9ic2VydmVkRHJhZ092ZXIgPSB0
cnVlOyByZXR1cm4gZmFsc2U7IgorICAgIG9uZHJvcD0id2luZG93Lm9ic2VydmVkRHJvcCA9IHRy
dWU7IHJldHVybiBmYWxzZTsiPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sCmlu
ZGV4IDIwYmNlMjUwOGEwNTVjMjYwZTQ0NmQzOTI2NmI1M2NiOTdjNjg2MjkuLjk1MWNmNWNkMzIx
NWUwNWZjYjhjNjEyYWEyOTA3YTBkZjYwM2I5ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQuaHRtbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWluLWxpbmstYW5k
LWlucHV0Lmh0bWwKQEAgLTI1LDYgKzI1LDYgQEAKIDwvaGVhZD4KIAogPGJvZHk+Ci0gICAgPGRp
dj48YSBpZD0ibGluayIgaHJlZj0iaHR0cHM6Ly93d3cuYXBwbGUuY29tIj48aW1nIHNyYz0iaWNv
bi5wbmciPjwvaW1nPjwvYT48L2Rpdj4KLSAgICA8ZGl2PjxpbnB1dCBpZD0iZWRpdG9yIj48L2lu
cHV0PjwvZGl2PgorICAgIDxkaXYgaWQ9InRvcCI+PGEgaWQ9ImxpbmsiIGhyZWY9Imh0dHBzOi8v
d3d3LmFwcGxlLmNvbSI+PGltZyBzcmM9Imljb24ucG5nIj48L2ltZz48L2E+PC9kaXY+CisgICAg
PGRpdiBpZD0iYm90dG9tIj48aW5wdXQgaWQ9ImVkaXRvciI+PC9pbnB1dD48L2Rpdj4KIDwvYm9k
eT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGlu
ay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2xpbmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTgz
ZTZlZjk1Yzg1M2IzMDE2MWU2NTQzMzQ1ZGYwZjFhZDQyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2xpbmstaW4taWZyYW1lLWFuZC1p
bnB1dC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEiPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKworaWZyYW1lLCBpbnB1dCB7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgaGVpZ2h0OiAyNTBweDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBm
b250LXNpemU6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0Pjwv
aW5wdXQ+Cis8aWZyYW1lIHNyY2RvYz0iPGEgaHJlZj0naHR0cHM6Ly93d3cuYXBwbGUuY29tLycg
c3R5bGU9J2ZvbnQtc2l6ZTogMTAwcHg7Jz5MaW5rIHRvIGFwcGxlLmNvbTwvYT4iPgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BQ
YXN0ZWJvYXJkVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5k
RHJvcFBhc3RlYm9hcmRUZXN0cy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgx
YmJhZTBjN2FlNTQyNTI3NGNhYThhM2ExZjZmNGEwMTQ0NGRjZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDI4OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgUExBVEZPUk0o
TUFDKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgotI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4KLSNpbXBvcnQgPFdlYktpdC9X
ZWJWaWV3Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotQGludGVyZmFjZSBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgOiBOU09iamVj
dDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gewotICAgIEJsb2NrUHRyPHZvaWQgKHZvaWQpPiBfY29t
cGxldGlvbkJsb2NrOwotfQotKyAoaW5zdGFuY2V0eXBlKWxpc3RlbmVyV2l0aENvbXBsZXRpb25C
bG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxvY2s7Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIKLQotKyAoaW5zdGFuY2V0eXBlKWxp
c3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxv
Y2sKLXsKLSAgICByZXR1cm4gW1tbRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGFsbG9jXSBp
bml0V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdIGF1dG9yZWxlYXNlXTsKLX0K
LQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9j
a190KWNvbXBsZXRpb25CbG9jawotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKQotICAg
ICAgICBfY29tcGxldGlvbkJsb2NrID0gY29tcGxldGlvbkJsb2NrOwotCi0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKLXsKLSAgICBpZiAoX2NvbXBsZXRpb25CbG9jaykK
LSAgICAgICAgX2NvbXBsZXRpb25CbG9jaygpOwotfQotQGVuZAotCi1AaW50ZXJmYWNlIERyYWdT
b3VyY2UgOiBOU09iamVjdAotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza0ZvckxvY2FsOihCT09MKWZsYWc7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBEcmFn
U291cmNlCi0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tG
b3JMb2NhbDooQk9PTClmbGFnCi17Ci0gICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7Ci19
Ci0KLUBlbmQKLQotQGludGVyZmFjZSBEcmFnSW5mbyA6IE5TT2JqZWN0PE5TRHJhZ2dpbmdJbmZv
PiB7Ci0gICAgTlNQb2ludCBfbGFzdE1vdXNlUG9zaXRpb247Ci0gICAgUmV0YWluUHRyPE5TSW1h
Z2U+IF9pbWFnZTsKLSAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBfcGFzdGVib2FyZDsKLSAg
ICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gX3NvdXJjZTsKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+
IF93aW5kb3c7Ci0gICAgTlNTaXplIF9vZmZzZXQ7Ci0gICAgTlNJbnRlZ2VyIF9udW1iZXJPZlZh
bGlkSXRlbXNGb3JEcm9wOwotfQotQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgbGFzdE1v
dXNlUG9zaXRpb247Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBEcmFnSW5mbwotCi0tIChpZClp
bml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0OihOU1NpemUpb2Zmc2V0IHBhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgc291cmNlOihEcmFnU291cmNlICopc291
cmNlIGRlc3RpbmF0aW9uV2luZG93OihOU1dpbmRvdyAqKWRlc3RpbmF0aW9uV2luZG93Ci17Ci0g
ICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX2ltYWdlID0gaW1hZ2U7Ci0g
ICAgICAgIF9wYXN0ZWJvYXJkID0gcGFzdGVib2FyZDsKLSAgICAgICAgX3NvdXJjZSA9IHNvdXJj
ZTsKLSAgICAgICAgX3dpbmRvdyA9IGRlc3RpbmF0aW9uV2luZG93OwotICAgICAgICBfb2Zmc2V0
ID0gb2Zmc2V0OwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTlNQb2ludClsYXN0
TW91c2VQb3NpdGlvbgotewotICAgIHJldHVybiBfbGFzdE1vdXNlUG9zaXRpb247Ci19Ci0KLS0g
KHZvaWQpc2V0TGFzdE1vdXNlUG9zaXRpb246KE5TUG9pbnQpbGFzdE1vdXNlUG9zaXRpb24KLXsK
LSAgICBfbGFzdE1vdXNlUG9zaXRpb24gPSBsYXN0TW91c2VQb3NpdGlvbjsKLX0KLQotLSAoTlNX
aW5kb3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93Ci17Ci0gICAgcmV0dXJuIF93aW5kb3cu
Z2V0KCk7Ci19Ci0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2sKLXsKLSAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKLX0KLQotLSAoTlNQb2ludClk
cmFnZ2luZ0xvY2F0aW9uCi17Ci0gICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKLX0KLQot
LSAoTlNQb2ludClkcmFnZ2VkSW1hZ2VMb2NhdGlvbgotewotICAgIHJldHVybiBOU01ha2VQb2lu
dChfbGFzdE1vdXNlUG9zaXRpb24ueCArIF9vZmZzZXQud2lkdGgsIF9sYXN0TW91c2VQb3NpdGlv
bi55ICsgX29mZnNldC5oZWlnaHQpOwotfQotCi0tIChOU0ltYWdlICopZHJhZ2dlZEltYWdlCi17
Ci0gICAgcmV0dXJuIF9pbWFnZS5nZXQoKTsKLX0KLQotLSAoTlNQYXN0ZWJvYXJkICopZHJhZ2dp
bmdQYXN0ZWJvYXJkCi17Ci0gICAgcmV0dXJuIF9wYXN0ZWJvYXJkLmdldCgpOwotfQotCi0tIChp
ZClkcmFnZ2luZ1NvdXJjZQotewotICAgIHJldHVybiBfc291cmNlLmdldCgpOwotfQotCi0tIChO
U0ludGVnZXIpZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcgotewotICAgIHJldHVybiAwOwotfQotCi0t
ICh2b2lkKXNsaWRlRHJhZ2dlZEltYWdlVG86KE5TUG9pbnQpc2NyZWVuUG9pbnQKLXsKLX0KLQot
LSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5T
VVJMICopZHJvcERlc3RpbmF0aW9uCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNEcmFn
Z2luZ0Zvcm1hdGlvbilkcmFnZ2luZ0Zvcm1hdGlvbgotewotICAgIHJldHVybiBOU0RyYWdnaW5n
Rm9ybWF0aW9uRGVmYXVsdDsKLX0KLQotLSAodm9pZClzZXREcmFnZ2luZ0Zvcm1hdGlvbjooTlNE
cmFnZ2luZ0Zvcm1hdGlvbilmb3JtYXRpb24KLXsKLX0KLQotLSAoQk9PTClhbmltYXRlc1RvRGVz
dGluYXRpb24KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpc2V0QW5pbWF0ZXNUb0Rl
c3RpbmF0aW9uOihCT09MKWZsYWcKLXsKLX0KLQotLSAoTlNJbnRlZ2VyKW51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3AKLXsKLSAgICByZXR1cm4gX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7Ci19
Ci0KLS0gKHZvaWQpc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDooTlNJbnRlZ2VyKW51bWJl
cgotewotICAgIF9udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbnVtYmVyOwotfQotCi0tICh2
b2lkKWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNFbnVtZXJhdGlvbk9wdGlv
bnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmlldyBjbGFzc2VzOihOU0FycmF5ICopY2xh
c3NBcnJheSBzZWFyY2hPcHRpb25zOihOU0RpY3Rpb25hcnkgKilzZWFyY2hPcHRpb25zIHVzaW5n
QmxvY2s6KHZvaWQgKF4pKE5TRHJhZ2dpbmdJdGVtICpkcmFnZ2luZ0l0ZW0sIE5TSW50ZWdlciBp
ZHgsIEJPT0wgKnN0b3ApKWJsb2NrCi17Ci19Ci0KLS0gKE5TU3ByaW5nTG9hZGluZ0hpZ2hsaWdo
dClzcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Ci17Ci0gICAgcmV0dXJuIE5TU3ByaW5nTG9hZGluZ0hp
Z2hsaWdodE5vbmU7Ci19Ci0KLS0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5nCi17Ci19Ci0KLUBl
bmQKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgTlNJbWFnZSAqZ2V0VGVz
dEltYWdlKCkKLXsKLSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50
c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRo
RXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLXN0YXRpYyBXZWJWaWV3ICp3ZWJWaWV3QWZ0ZXJQZXJmb3Jt
aW5nRHJhZ09wZXJhdGlvbihOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCi17Ci0gICAgUmV0YWlu
UHRyPFdlYlZpZXc+IGRlc3RpbmF0aW9uID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAgICBSZXRhaW5QdHI8TlNX
aW5kb3c+IGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29u
dGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgc3R5bGVNYXNrOjAgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW2hvc3RXaW5kb3cgc2V0RnJh
bWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwotICAgIFtbaG9zdFdpbmRvdyBjb250ZW50Vmll
d10gYWRkU3VidmlldzpkZXN0aW5hdGlvbi5nZXQoKV07Ci0gICAgX19ibG9jayBib29sIGlzRG9u
ZSA9IGZhbHNlOwotICAgIFtkZXN0aW5hdGlvbiBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpbRnJhbWVM
b2FkQ29tcGxldGlvbkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpeKCkgewot
ICAgICAgICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gc291cmNlID0gYWRvcHROUyhbW0RyYWdTb3Vy
Y2UgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgUmV0YWluUHRyPERyYWdJbmZvPiBpbmZvID0gYWRv
cHROUyhbW0RyYWdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOmdldFRlc3RJbWFnZSgpIG9mZnNl
dDpOU01ha2VTaXplKDAsIDApIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlLmdl
dCgpIGRlc3RpbmF0aW9uV2luZG93Omhvc3RXaW5kb3cuZ2V0KCldKTsKLSAgICAgICAgW2luZm8g
c2V0TGFzdE1vdXNlUG9zaXRpb246TlNNYWtlUG9pbnQoMCwgMjAwKV07Ci0gICAgICAgIFtkZXN0
aW5hdGlvbiBkcmFnZ2luZ0VudGVyZWQ6aW5mby5nZXQoKV07Ci0gICAgICAgIFtpbmZvIHNldExh
c3RNb3VzZVBvc2l0aW9uOk5TTWFrZVBvaW50KDIwMCwgMjAwKV07Ci0gICAgICAgIFtkZXN0aW5h
dGlvbiBkcmFnZ2luZ1VwZGF0ZWQ6aW5mby5nZXQoKV07Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUo
W2Rlc3RpbmF0aW9uIHBlcmZvcm1EcmFnT3BlcmF0aW9uOmluZm8uZ2V0KCldKTsKLSAgICAgICAg
aXNEb25lID0gdHJ1ZTsKLSAgICB9XV07Ci0gICAgW1tkZXN0aW5hdGlvbiBtYWluRnJhbWVdIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgcmV0dXJuIGRl
c3RpbmF0aW9uLmdldCgpOwotfQotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLCBE
cm9wVVRGOFBsYWluVGV4dCkKLXsKLSAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQ
YXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTpbQCJJIGFtIGEgV2ViS2l0LiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHRd
OwotCi0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHJlc3VsdGluZ1dlYlZpZXcgPSB3ZWJWaWV3QWZ0
ZXJQZXJmb3JtaW5nRHJhZ09wZXJhdGlvbihwYXN0ZWJvYXJkKTsKLSAgICBFWFBFQ1RfVFJVRShb
W3Jlc3VsdGluZ1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6
QCJkb2N1bWVudC5ib2R5LnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJJIGFtIGEgV2Vi
S2l0LiJdKTsKLX0KLQotVEVTVChEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cywgRHJvcEpQRUcp
Ci17Ci0gICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJv
YXJkV2l0aFVuaXF1ZU5hbWVdOwotICAgIE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2UoKTsK
LSAgICBOU0JpdG1hcEltYWdlUmVwICppbWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdl
UmVwV2l0aERhdGE6aWNvbi5USUZGUmVwcmVzZW50YXRpb25dOwotICAgIFtwYXN0ZWJvYXJkIHNl
dERhdGE6W2ltYWdlUmVwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHBy
b3BlcnRpZXM6QHsgTlNJbWFnZUNvbXByZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlwZToo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFR107Ci0KLSAgICBSZXRhaW5QdHI8V2ViVmll
dz4gcmVzdWx0aW5nV2ViVmlldyA9IHdlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9u
KHBhc3RlYm9hcmQpOwotICAgIEVYUEVDVF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2ltZycpLnRhZ05hbWUgPT09ICdJTUcnIl0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsKLX0K
LSAgICAKLSNpZiBXS19BUElfRU5BQkxFRAotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRl
c3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQotewotICAgIE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKLSAgICBb
cGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVyOm5p
bF07Ci0gICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCJmaWxlLW5hbWUiXSBmb3JU
eXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKV0pOwotICAgIGF1dG8gaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxv
Y10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1h
c2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbaG9z
dFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQb2ludCgwLCAwKV07Ci0gICAgW1tob3N0V2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZnVsbC1wYWdlLWRyb3B6b25lIl07
Ci0KLSAgICBhdXRvIGRyYWdTb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gZHJhZ0luZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8gYWxsb2NdIGluaXRX
aXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwgMCkgcGFzdGVib2Fy
ZDpwYXN0ZWJvYXJkIHNvdXJjZTpkcmFnU291cmNlLmdldCgpIGRlc3RpbmF0aW9uV2luZG93Omhv
c3RXaW5kb3cuZ2V0KCldKTsKLQotICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpO
U01ha2VQb2ludCgwLCAyMDApXTsKLSAgICBbd2ViVmlldyBkcmFnZ2luZ0VudGVyZWQ6ZHJhZ0lu
Zm8uZ2V0KCldOwotICAgIEVYUEVDVF9XS19TVFJFUShAIjEiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmRyYWdFbnRlcmVkRm9yVGVzdGluZyJdKTsKLQot
ICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgyMDAsIDIwMCld
OwotICAgIFt3ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpkcmFnSW5mby5nZXQoKV07Ci0gICAgRVhQ
RUNUX0VRKDFVLCBbZHJhZ0luZm8gbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcF0pOwotfQotCi0j
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdB
bmREcm9wVGVzdHNNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5k
RHJvcFRlc3RzTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMzc3MmE0NDUzMjg3YjQ2Nzc3NjU1ZGExN2Fl
Mjk4ZjNkM2MwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFRlc3RzTWFjLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3IuaCIK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBF
TkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUNPUykKKworVEVTVChEcmFnQW5kRHJv
cFRlc3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQoreworICAgIE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKKyAg
ICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVy
Om5pbF07CisgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCJmaWxlLW5hbWUiXSBm
b3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFk
b3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3RnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3
ID0gW3NpbXVsYXRvciB3ZWJWaWV3XTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsRHJhZ1Bh
c3RlYm9hcmQ6cGFzdGVib2FyZF07CisKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCkgc3R5bGVNYXNrOjAgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5P
XSk7CisgICAgW2hvc3RXaW5kb3cgc2V0RnJhbWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwor
ICAgIFtbaG9zdFdpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3XTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmdWxsLXBhZ2UtZHJvcHpv
bmUiXTsKKworICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gMDsKKyAg
ICBbc2ltdWxhdG9yIHNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6WyZudW1iZXJPZlZhbGlkSXRl
bXNGb3JEcm9wLCBzaW11bGF0b3JdIHsKKyAgICAgICAgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJv
cCA9IFtzaW11bGF0b3IgZHJhZ2dpbmdJbmZvXS5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwor
ICAgIH1dOworCisgICAgW3NpbXVsYXRvciBydW5Gcm9tOk5TTWFrZVBvaW50KDAsIDApIHRvOk5T
TWFrZVBvaW50KDIwMCwgMjAwKV07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAib2JzZXJ2ZWREcmFnRW50ZXIiXS5ib29sVmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJv
YnNlcnZlZERyYWdPdmVyIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAib2JzZXJ2ZWREcm9wIl0uYm9vbFZhbHVlKTsK
KyAgICBFWFBFQ1RfRVEoMVUsIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApOworfQorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0o
TUFDT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lE
cmFnQW5kRHJvcFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5
RHJhZ0FuZERyb3BUZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmI2YzQwMTc4Mzk1ZTY1NzlhNTdmZjY4
YzhmZDUyMjAzNzBmYmZkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbQpAQCAtMCwwICsxLDI1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNp
bXBvcnQgPEFwcEtpdC9OU0RyYWdnaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgor
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0Bp
bnRlcmZhY2UgRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIDogTlNPYmplY3Q8V2ViRnJhbWVM
b2FkRGVsZWdhdGU+IHsKKyAgICBCbG9ja1B0cjx2b2lkKCk+IF9jb21wbGV0aW9uQmxvY2s7Cit9
CisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9i
bG9ja190KWNvbXBsZXRpb25CbG9jazsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lTG9h
ZENvbXBsZXRpb25MaXN0ZW5lcgorCisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxl
dGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jaworeworICAgIHJldHVy
biBbW1tGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlv
bkJsb2NrOmNvbXBsZXRpb25CbG9ja10gYXV0b3JlbGVhc2VdOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJs
b2NrCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF9jb21wbGV0aW9u
QmxvY2sgPSBjb21wbGV0aW9uQmxvY2s7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJh
bWUgKilmcmFtZQoreworICAgIGlmIChfY29tcGxldGlvbkJsb2NrKQorICAgICAgICBfY29tcGxl
dGlvbkJsb2NrKCk7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgRHJhZ1NvdXJjZSA6IE5TT2JqZWN0
CistIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6
KEJPT0wpZmxhZzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERyYWdTb3VyY2UKKworLSAoTlNE
cmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOihCT09MKWZs
YWcKK3sKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKK30KKworQGVuZAorCitAaW50
ZXJmYWNlIERyYWdJbmZvIDogTlNPYmplY3Q8TlNEcmFnZ2luZ0luZm8+IHsKKyAgICBOU1BvaW50
IF9sYXN0TW91c2VQb3NpdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX2ltYWdlOworICAg
IFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+IF9wYXN0ZWJvYXJkOworICAgIFJldGFpblB0cjxEcmFn
U291cmNlPiBfc291cmNlOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gX3dpbmRvdzsKKyAgICBO
U1NpemUgX29mZnNldDsKKyAgICBOU0ludGVnZXIgX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7
Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIERyYWdJbmZvCisKKy0gKGlkKWluaXRXaXRoSW1hZ2U6KE5T
SW1hZ2UgKilpbWFnZSBvZmZzZXQ6KE5TU2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJv
YXJkICopcGFzdGVib2FyZCBzb3VyY2U6KERyYWdTb3VyY2UgKilzb3VyY2UgZGVzdGluYXRpb25X
aW5kb3c6KE5TV2luZG93ICopZGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICBpZiAoc2VsZiA9IFtz
dXBlciBpbml0XSkgeworICAgICAgICBfaW1hZ2UgPSBpbWFnZTsKKyAgICAgICAgX3Bhc3RlYm9h
cmQgPSBwYXN0ZWJvYXJkOworICAgICAgICBfc291cmNlID0gc291cmNlOworICAgICAgICBfd2lu
ZG93ID0gZGVzdGluYXRpb25XaW5kb3c7CisgICAgICAgIF9vZmZzZXQgPSBvZmZzZXQ7CisgICAg
fQorICAgIHJldHVybiBzZWxmOworfQorCistIChOU1BvaW50KWxhc3RNb3VzZVBvc2l0aW9uCit7
CisgICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKK30KKworLSAodm9pZClzZXRMYXN0TW91
c2VQb3NpdGlvbjooTlNQb2ludClsYXN0TW91c2VQb3NpdGlvbgoreworICAgIF9sYXN0TW91c2VQ
b3NpdGlvbiA9IGxhc3RNb3VzZVBvc2l0aW9uOworfQorCistIChOU1dpbmRvdyAqKWRyYWdnaW5n
RGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICByZXR1cm4gX3dpbmRvdy5nZXQoKTsKK30KKworLSAo
TlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaworeworICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25Db3B5OworfQorCistIChOU1BvaW50KWRyYWdnaW5nTG9jYXRpb24K
K3sKKyAgICByZXR1cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQorCistIChOU1BvaW50KWRyYWdn
ZWRJbWFnZUxvY2F0aW9uCit7CisgICAgcmV0dXJuIE5TTWFrZVBvaW50KF9sYXN0TW91c2VQb3Np
dGlvbi54ICsgX29mZnNldC53aWR0aCwgX2xhc3RNb3VzZVBvc2l0aW9uLnkgKyBfb2Zmc2V0Lmhl
aWdodCk7Cit9CisKKy0gKE5TSW1hZ2UgKilkcmFnZ2VkSW1hZ2UKK3sKKyAgICByZXR1cm4gX2lt
YWdlLmdldCgpOworfQorCistIChOU1Bhc3RlYm9hcmQgKilkcmFnZ2luZ1Bhc3RlYm9hcmQKK3sK
KyAgICByZXR1cm4gX3Bhc3RlYm9hcmQuZ2V0KCk7Cit9CisKKy0gKGlkKWRyYWdnaW5nU291cmNl
Cit7CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCk7Cit9CisKKy0gKE5TSW50ZWdlcilkcmFnZ2lu
Z1NlcXVlbmNlTnVtYmVyCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy0gKHZvaWQpc2xpZGVEcmFn
Z2VkSW1hZ2VUbzooTlNQb2ludClzY3JlZW5Qb2ludAoreworfQorCistIChOU0FycmF5ICopbmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGlu
YXRpb24KK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0RyYWdnaW5nRm9ybWF0aW9uKWRy
YWdnaW5nRm9ybWF0aW9uCit7CisgICAgcmV0dXJuIE5TRHJhZ2dpbmdGb3JtYXRpb25EZWZhdWx0
OworfQorCistICh2b2lkKXNldERyYWdnaW5nRm9ybWF0aW9uOihOU0RyYWdnaW5nRm9ybWF0aW9u
KWZvcm1hdGlvbgoreworfQorCistIChCT09MKWFuaW1hdGVzVG9EZXN0aW5hdGlvbgoreworICAg
IHJldHVybiBOTzsKK30KKworLSAodm9pZClzZXRBbmltYXRlc1RvRGVzdGluYXRpb246KEJPT0wp
ZmxhZworeworfQorCistIChOU0ludGVnZXIpbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcAorewor
ICAgIHJldHVybiBfbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKK30KKworLSAodm9pZClzZXRO
dW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOihOU0ludGVnZXIpbnVtYmVyCit7CisgICAgX251bWJl
ck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBudW1iZXI7Cit9CisKKy0gKHZvaWQpZW51bWVyYXRlRHJh
Z2dpbmdJdGVtc1dpdGhPcHRpb25zOihOU0VudW1lcmF0aW9uT3B0aW9ucyllbnVtT3B0cyBmb3JW
aWV3OihOU1ZpZXcgKil2aWV3IGNsYXNzZXM6KE5TQXJyYXkgKiljbGFzc0FycmF5IHNlYXJjaE9w
dGlvbnM6KE5TRGljdGlvbmFyeSAqKXNlYXJjaE9wdGlvbnMgdXNpbmdCbG9jazoodm9pZCAoXiko
TlNEcmFnZ2luZ0l0ZW0gKmRyYWdnaW5nSXRlbSwgTlNJbnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkp
YmxvY2sKK3sKK30KKworLSAoTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0KXNwcmluZ0xvYWRpbmdI
aWdobGlnaHQKK3sKKyAgICByZXR1cm4gTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Tm9uZTsKK30K
KworLSAodm9pZClyZXNldFNwcmluZ0xvYWRpbmcKK3sKK30KKworQGVuZAorCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU0ltYWdlICpnZXRUZXN0SW1hZ2UoKQoreworICAg
IHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmci
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsK
K30KKworc3RhdGljIFdlYlZpZXcgKndlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9u
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCkKK3sKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gZGVz
dGluYXRpb24gPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gaG9zdFdpbmRv
dyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1hc2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBbaG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQ
b2ludCgwLCAwKV07CisgICAgW1tob3N0V2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OmRl
c3RpbmF0aW9uLmdldCgpXTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAg
W2Rlc3RpbmF0aW9uIHNldEZyYW1lTG9hZERlbGVnYXRlOltGcmFtZUxvYWRDb21wbGV0aW9uTGlz
dGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl4oKSB7CisgICAgICAgIFJldGFpblB0
cjxEcmFnU291cmNlPiBzb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5pdF0p
OworICAgICAgICBSZXRhaW5QdHI8RHJhZ0luZm8+IGluZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8g
YWxsb2NdIGluaXRXaXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwg
MCkgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCkgZGVzdGluYXRpb25X
aW5kb3c6aG9zdFdpbmRvdy5nZXQoKV0pOworICAgICAgICBbaW5mbyBzZXRMYXN0TW91c2VQb3Np
dGlvbjpOU01ha2VQb2ludCgwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5n
RW50ZXJlZDppbmZvLmdldCgpXTsKKyAgICAgICAgW2luZm8gc2V0TGFzdE1vdXNlUG9zaXRpb246
TlNNYWtlUG9pbnQoMjAwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5nVXBk
YXRlZDppbmZvLmdldCgpXTsKKworICAgICAgICBFWFBFQ1RfVFJVRShbZGVzdGluYXRpb24gcGVy
Zm9ybURyYWdPcGVyYXRpb246aW5mby5nZXQoKV0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dXTsKKyAgICBbW2Rlc3RpbmF0aW9uIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICByZXR1cm4gZGVzdGluYXRpb24uZ2V0KCk7
Cit9CisKK1RFU1QoTGVnYWN5RHJhZ0FuZERyb3BUZXN0cywgRHJvcFVURjhQbGFpblRleHQpCit7
CisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJk
V2l0aFVuaXF1ZU5hbWVdOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W0AiSSBhbSBhIFdlYktp
dC4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JUeXBlOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0XTsKKworICAgIFJldGFpblB0cjxX
ZWJWaWV3PiByZXN1bHRpbmdXZWJWaWV3ID0gd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVy
YXRpb24ocGFzdGVib2FyZCk7CisgICAgRVhQRUNUX1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1lbnQuYm9keS50ZXh0
Q29udGVudCJdIGNvbnRhaW5zU3RyaW5nOkAiSSBhbSBhIFdlYktpdC4iXSk7Cit9CisKK1RFU1Qo
TGVnYWN5RHJhZ0FuZERyb3BUZXN0cywgRHJvcEpQRUcpCit7CisgICAgTlNQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOworICAg
IE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2UoKTsKKyAgICBOU0JpdG1hcEltYWdlUmVwICpp
bWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdlUmVwV2l0aERhdGE6aWNvbi5USUZGUmVw
cmVzZW50YXRpb25dOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W2ltYWdlUmVwIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHByb3BlcnRpZXM6QHsgTlNJbWFnZUNvbXBy
ZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlSlBFR107CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gcmVzdWx0aW5nV2ViVmlldyA9IHdl
YlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKHBhc3RlYm9hcmQpOworICAgIEVYUEVD
VF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLnRhZ05hbWUgPT09ICdJTUcn
Il0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL2Z1bGwtcGFnZS1kcm9wem9uZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA5NDU5OGEwYmRjMTQwMTQ0NGVkNDMxZmUxNzUzMjExZDY1MzUzYzcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGJvZHkgc3R5bGU9IndpZHRoOiAxMDB2dzsgaGVpZ2h0OiAx
MDB2aDsgbWFyZ2luOiAwOyIgb25kcmFnZW50ZXI9IndpbmRvdy5kcmFnRW50ZXJlZEZvclRlc3Rp
bmcgPSB0cnVlOyByZXR1cm4gZmFsc2U7Ij4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAppbmRleCBmM2IxMjg4Njc1YWEzNzRlY2IxZDEzY2Vm
YzM1N2E3MGQ0YzE5NjkxLi44NGM4YmUzZmQ3OTQ1NDQyZTQ5ZmMyYmY0N2ExMDVlOTQwYmMzNzM2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxh
dG9yLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRv
ci5oCkBAIC0zNyw2ICszNyw4IEBACiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtp
dEFkZGl0aW9ucy5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisKIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIERyYWdBbmREcm9wUGhhc2UpIHsKICAgICBEcmFnQW5kRHJvcFBoYXNl
Q2FuY2VsbGVkID0gMCwKICAgICBEcmFnQW5kRHJvcFBoYXNlQmVnaW5uaW5nID0gMSwKQEAgLTQ1
LDggKzQ3LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRHJhZ0FuZERyb3BQaGFzZSkg
ewogICAgIERyYWdBbmREcm9wUGhhc2VQZXJmb3JtaW5nRHJvcCA9IDQKIH07CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi0KIHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4g
KlByb2dyZXNzVG9DR1BvaW50VmFsdWVNYXA7CiAKIEBpbnRlcmZhY2UgTW9ja0RyYWdEcm9wU2Vz
c2lvbiA6IE5TT2JqZWN0IDxVSURyYWdEcm9wU2Vzc2lvbj4gewpAQCAtNzUsMTkgKzc1LDIyIEBA
IHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9D
R1BvaW50VmFsdWVNYXA7CiAKIEBpbnRlcmZhY2UgRHJhZ0FuZERyb3BTaW11bGF0b3IgOiBOU09i
amVjdDxXS1VJRGVsZWdhdGVQcml2YXRlLCBfV0tJbnB1dERlbGVnYXRlPgogCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CiAvLyBUaGUgc3RhcnQgbG9jYXRp
b24sIGVuZCBsb2NhdGlvbiwgYW5kIGxvY2F0aW9ucyBvZiBhZGRpdGlvbmFsIGl0ZW0gcmVxdWVz
dHMgYXJlIGFsbCBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuCiAtICh2b2lkKXJ1bkZyb206KENHUG9p
bnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2NhdGlvbjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNBcnJheTxfV0tBdHRhY2htZW50ICo+ICppbnNlcnRlZEF0dGFj
aG1lbnRzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PF9XS0F0dGFj
aG1lbnQgKj4gKnJlbW92ZWRBdHRhY2htZW50czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgRHJhZ0FuZERyb3BQaGFzZSBwaGFzZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgVGVzdFdLV2ViVmlldyAqd2ViVmlldzsKIAogI2lmIFBMQVRGT1JNKElPUykKIAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXc7CiAt
ICh2b2lkKXJ1bkZyb206KENHUG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2Nh
dGlvbiBhZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM6KFByb2dyZXNzVG9DR1BvaW50VmFs
dWVNYXApYWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zOwogLSAodm9pZCl3YWl0Rm9ySW5w
dXRTZXNzaW9uOwogLSAodm9pZCllbmREYXRhVHJhbnNmZXI7CiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgRHJhZ0FuZERyb3BQaGFzZSBwaGFzZTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGFsbG93c0ZvY3VzVG9TdGFydElucHV0U2Vzc2lvbjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIHNob3VsZEVuc3VyZVVJQXBwbGljYXRpb247CiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBzaG91bGRBbGxvd01vdmVPcGVyYXRpb247CkBAIC0xMDYsNiArMTA5LDE3IEBA
IHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9D
R1BvaW50VmFsdWVNYXA7CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKKyNpZiBQTEFURk9S
TShNQUMpCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQgPE5TRHJhZ2dpbmdJ
bmZvPiBkcmFnZ2luZ0luZm87CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TUG9p
bnQgaW5pdGlhbERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3OworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0RyYWdPcGVyYXRpb24gY3VycmVudERyYWdPcGVyYXRpb247CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1Bhc3RlYm9hcmQgKmV4dGVybmFsRHJhZ1Bhc3RlYm9h
cmQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0ltYWdlICpleHRlcm5hbERyYWdJ
bWFnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBkaXNwYXRjaF9ibG9ja190IHdpbGxF
bmREcmFnZ2luZ0hhbmRsZXI7CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIEBlbmQKIAog
I2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGNmOThkYWEyMzRjMDk4NTdh
NjVlNTZhMmIyOGUyZWUwOTBhN2U5NDcuLjA1MWZhMjkyZGM3Y2IwNjNmMzIyYTk0NzllMTc2ZDg3
NTI0ZTBjNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBA
IC03MiwxMCArNzIsMTIgQEAKICNpZiBQTEFURk9STShNQUMpCiBAaW50ZXJmYWNlIFRlc3RXS1dl
YlZpZXcgKE1hY09ubHkpCiAvLyBTaW11bGF0ZXMgY2xpY2tpbmcgd2l0aCBhIHByZXNzdXJlLXNl
bnNpdGl2ZSBkZXZpY2UsIGlmIHBvc3NpYmxlLgotLSAodm9pZCltb3VzZURvd25BdFBvaW50OihO
U1BvaW50KXBvaW50IHNpbXVsYXRlUHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZTsKLS0g
KHZvaWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKW1vdXNlTW92ZVRv
UG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFn
czsKLS0gKHZvaWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgbnVtYmVyT2ZDbGlj
a3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3M7CistICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6
KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOihCT09MKXNpbXVsYXRlUHJl
c3N1cmU7CistICh2b2lkKW1vdXNlRHJhZ1RvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsK
Ky0gKHZvaWQpbW91c2VFbnRlckF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsKKy0gKHZv
aWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsKKy0gKHZvaWQpbW91c2VN
b3ZlVG9Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93IHdpdGhGbGFnczooTlNFdmVudE1vZGlm
aWVyRmxhZ3MpZmxhZ3M7CistICh2b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1BvaW50KXBvaW50
SW5XaW5kb3cgbnVtYmVyT2ZDbGlja3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3M7CiAtIChO
U1dpbmRvdyAqKWhvc3RXaW5kb3c7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFj
dGVyOwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmlu
ZGV4IDM3NDBkNTgyZjNmNTFlYjdkZDcwMTY0YmRlYjNlNzExYmU1N2Y4MDUuLmQwOTZjZjA5YzU1
Y2RmMWM2MjQ0NjYyZDMxYWRhYjE2YjI3OGVjOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTM3MiwyNiArMzcyLDUyIEBAIE5TRXZlbnRNYXNrIF9f
c2ltdWxhdGVkX2ZvcmNlQ2xpY2tBc3NvY2lhdGVkRXZlbnRzTWFzayhpZCBzZWxmLCBTRUwgX2Nt
ZCkKIAogI2lmIFBMQVRGT1JNKE1BQykKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChN
YWNPbmx5KQotLSAodm9pZCltb3VzZURvd25BdFBvaW50OihOU1BvaW50KXBvaW50IHNpbXVsYXRl
UHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZQorLSAodm9pZCltb3VzZURvd25BdFBvaW50
OihOU1BvaW50KXBvaW50SW5XaW5kb3cgc2ltdWxhdGVQcmVzc3VyZTooQk9PTClzaW11bGF0ZVBy
ZXNzdXJlCiB7Ci0gICAgW19ob3N0V2luZG93IF9tb3VzZURvd25BdFBvaW50OnBvaW50IHNpbXVs
YXRlUHJlc3N1cmU6c2ltdWxhdGVQcmVzc3VyZSBjbGlja0NvdW50OjFdOworICAgIFtfaG9zdFdp
bmRvdyBfbW91c2VEb3duQXRQb2ludDpwb2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6c2lt
dWxhdGVQcmVzc3VyZSBjbGlja0NvdW50OjFdOwogfQogCi0tICh2b2lkKW1vdXNlVXBBdFBvaW50
OihOU1BvaW50KXBvaW50CistICh2b2lkKW1vdXNlVXBBdFBvaW50OihOU1BvaW50KXBvaW50SW5X
aW5kb3cKIHsKLSAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBvaW50OnBvaW50IGNsaWNrQ291
bnQ6MV07CisgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpwb2ludEluV2luZG93IGNs
aWNrQ291bnQ6MV07CiB9CiAKLS0gKHZvaWQpbW91c2VNb3ZlVG9Qb2ludDooTlNQb2ludClwb2lu
dCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzCistICh2b2lkKW1vdXNlTW92
ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmll
ckZsYWdzKWZsYWdzCiB7Ci0gICAgW3NlbGYgbW91c2VNb3ZlZDpbTlNFdmVudCBtb3VzZUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZU1vdmVkIGxvY2F0aW9uOnBvaW50IG1vZGlmaWVyRmxh
Z3M6ZmxhZ3MgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSB3aW5kb3dOdW1iZXI6W19o
b3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3Vy
ZTowXV07CisgICAgW3NlbGYgbW91c2VNb3ZlZDpbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlTW91c2VNb3ZlZCBhdExvY2F0aW9uOnBvaW50SW5XaW5kb3cgZmxhZ3M6ZmxhZ3Mg
dGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSBjbGlja0NvdW50OjBdXTsKIH0KIAotLSAo
dm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClwb2ludCBudW1iZXJPZkNsaWNrczooTlNV
SW50ZWdlciludW1iZXJPZkNsaWNrcworLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2lu
dClwb2ludEluV2luZG93IG51bWJlck9mQ2xpY2tzOihOU1VJbnRlZ2VyKW51bWJlck9mQ2xpY2tz
CiB7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGNsaWNrQ291bnQgPSAxOyBjbGlja0NvdW50IDw9IG51
bWJlck9mQ2xpY2tzOyArK2NsaWNrQ291bnQpIHsKLSAgICAgICAgW19ob3N0V2luZG93IF9tb3Vz
ZURvd25BdFBvaW50OnBvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk8gY2xpY2tDb3VudDpjbGlja0Nv
dW50XTsKLSAgICAgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpwb2ludCBjbGlja0Nv
dW50OmNsaWNrQ291bnRdOworICAgICAgICBbX2hvc3RXaW5kb3cgX21vdXNlRG93bkF0UG9pbnQ6
cG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOk5PIGNsaWNrQ291bnQ6Y2xpY2tDb3VudF07
CisgICAgICAgIFtfaG9zdFdpbmRvdyBfbW91c2VVcEF0UG9pbnQ6cG9pbnRJbldpbmRvdyBjbGlj
a0NvdW50OmNsaWNrQ291bnRdOworICAgIH0KK30KKworLSAodm9pZCltb3VzZUVudGVyQXRQb2lu
dDooTlNQb2ludClwb2ludEluV2luZG93Cit7CisgICAgW3NlbGYgbW91c2VFbnRlcmVkOltzZWxm
IF9tb3VzZUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZUVudGVyZWQgYXRMb2NhdGlvbjpw
b2ludEluV2luZG93XV07Cit9CisKKy0gKHZvaWQpbW91c2VEcmFnVG9Qb2ludDooTlNQb2ludClw
b2ludEluV2luZG93Cit7CisgICAgW3NlbGYgbW91c2VEcmFnZ2VkOltzZWxmIF9tb3VzZUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkIGF0TG9jYXRpb246cG9pbnRJbldp
bmRvd11dOworfQorCistIChOU0V2ZW50ICopX21vdXNlRXZlbnRXaXRoVHlwZTooTlNFdmVudFR5
cGUpdHlwZSBhdExvY2F0aW9uOihOU1BvaW50KXBvaW50SW5XaW5kb3cKK3sKKyAgICByZXR1cm4g
W3NlbGYgX21vdXNlRXZlbnRXaXRoVHlwZTp0eXBlIGF0TG9jYXRpb246cG9pbnRJbldpbmRvdyBm
bGFnczowIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgY2xpY2tDb3VudDowXTsKK30K
KworLSAoTlNFdmVudCAqKV9tb3VzZUV2ZW50V2l0aFR5cGU6KE5TRXZlbnRUeXBlKXR5cGUgYXRM
b2NhdGlvbjooTlNQb2ludClsb2NhdGlvbkluV2luZG93IGZsYWdzOihOU0V2ZW50TW9kaWZpZXJG
bGFncylmbGFncyB0aW1lc3RhbXA6KE5TVGltZUludGVydmFsKXRpbWVzdGFtcCBjbGlja0NvdW50
OihOU1VJbnRlZ2VyKWNsaWNrQ291bnQKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IE5TRXZlbnRUeXBlTW91c2VFbnRlcmVkOgorICAgIGNhc2UgTlNFdmVudFR5cGVNb3VzZUV4aXRl
ZDoKKyAgICAgICAgcmV0dXJuIFtOU0V2ZW50IGVudGVyRXhpdEV2ZW50V2l0aFR5cGU6dHlwZSBs
b2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6ZmxhZ3MgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6W19ob3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVt
YmVyIHRyYWNraW5nTnVtYmVyOjEgdXNlckRhdGE6bmlsXTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnR5cGUgbG9jYXRpb246bG9jYXRp
b25JbldpbmRvdyBtb2RpZmllckZsYWdzOmZsYWdzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOltfaG9zdFdpbmRvdyB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6W05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XSBldmVudE51bWJlcjorK2dFdmVudE51bWJlciBjbGlja0NvdW50
OmNsaWNrQ291bnQgcHJlc3N1cmU6MF07CiAgICAgfQogfQogCkBAIC00MDAsNyArNDI2LDggQEAg
TlNFdmVudE1hc2sgX19zaW11bGF0ZWRfZm9yY2VDbGlja0Fzc29jaWF0ZWRFdmVudHNNYXNrKGlk
IHNlbGYsIFNFTCBfY21kKQogICAgIHJldHVybiBfaG9zdFdpbmRvdy5nZXQoKTsKIH0KIAotLSAo
dm9pZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlciB7CistICh2b2lkKXR5cGVDaGFyYWN0
ZXI6KGNoYXIpY2hhcmFjdGVyCit7CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlckFzU3RyaW5nID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlYyIgLCBjaGFyYWN0ZXJdOwogICAgIE5TRXZl
bnRUeXBlIGtleURvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZUtleURvd247CiAgICAgTlNFdmVu
dFR5cGUga2V5VXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUtleVVwOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCA0M2VlY2Q5
NDk0ZDU5NjRmNTA3MTE3MDlkNjAyZjEzZDY4OTRjYWJlLi45ZTFmMjFlZTFkNTNiZGQ0NmMzMzM4
MTAyMTBlZDA3MGRmMTMyYzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
cmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
cmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpAQCAtMzE4LDYgKzMxOCwxOSBAQCBzdGF0aWMgTlNB
cnJheSAqZHJhZ0FuZERyb3BFdmVudE5hbWVzKCkKICAgICBSZXRhaW5QdHI8VUlEcm9wUHJvcG9z
YWw+IF9jdXJyZW50RHJvcFByb3Bvc2FsOwogfQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdl
YlZpZXdGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOm5pbF07Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7CisgICAgaWYgKGNvbmZpZ3VyYXRp
b24pCisgICAgICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZpZXc6W1tbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXV07CisKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWJWaWV3OltbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdIGF1dG9yZWxlYXNlXV07Cit9
CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3CiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKQEAgLTYyMyw2ICs2MzYsMTEg
QEAgc3RhdGljIE5TQXJyYXkgKmRyYWdBbmREcm9wRXZlbnROYW1lcygpCiAgICAgW1tfd2ViVmll
dyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJhZ0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFn
SW50ZXJhY3Rpb25dIHNlc3Npb25EaWRUcmFuc2Zlckl0ZW1zOl9kcmFnU2Vzc2lvbi5nZXQoKV07
CiB9CiAKKy0gKFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJuIF93ZWJWaWV3
LmdldCgpOworfQorCiAjcHJhZ21hIG1hcmsgLSBXS1VJRGVsZWdhdGVQcml2YXRlCiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9u
V2FzSGFuZGxlZDooQk9PTCloYW5kbGVkIGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3Zp
ZGVyczooTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KaW5kZXgg
OWE3OTE4Y2M0ODM5YTg3NTdiYWY2MGI4OGYyMzg2MWFkMjJkMGE1Zi4uYjM5MTdjZDk2MjFmMDIz
ZTI0YjhiMDY2NThmM2U5N2YwNjFkMjI2MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KQEAgLTI4LDM4ICsyOCwxNzEgQEAKIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJM
RUQKIAorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3REcmFnZ2lu
Z0luZm8uaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPGNtYXRoPgorI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBEcmFnQW5kRHJvcFRlc3RXS1dlYlZp
ZXc7CisKK0BpbnRlcmZhY2UgRHJhZ0FuZERyb3BTaW11bGF0b3IgKCkKKy0gKHZvaWQpcGVyZm9y
bURyYWdJbldlYlZpZXc6KERyYWdBbmREcm9wVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcgYXRMb2Nh
dGlvbjooTlNQb2ludCl2aWV3TG9jYXRpb24gd2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2UgcGFz
dGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBzb3VyY2U6KGlkKXNvdXJjZTsKK0Bl
bmQKKworQGludGVyZmFjZSBEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgOiBUZXN0V0tXZWJWaWV3
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgeworICAg
IFdlYWtPYmpDUHRyPERyYWdBbmREcm9wU2ltdWxhdG9yPiBfc2ltdWxhdG9yOworfQorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIHNpbXVsYXRvcjooRHJhZ0FuZERy
b3BTaW11bGF0b3IgKilzaW11bGF0b3IKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0V2l0
aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pCisgICAgICAgIF9zaW11
bGF0b3IgPSBzaW11bGF0b3I7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZHJhZ0lt
YWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDooTlNT
aXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09MKXNs
aWRlRmxhZworeworICAgIFtfc2ltdWxhdG9yIHBlcmZvcm1EcmFnSW5XZWJWaWV3OnNlbGYgYXRM
b2NhdGlvbjp2aWV3TG9jYXRpb24gd2l0aEltYWdlOmltYWdlIHBhc3RlYm9hcmQ6cGJvYXJkIHNv
dXJjZTpzb3VyY2VPYmpdOworfQorCistICh2b2lkKXdhaXRGb3JQZW5kaW5nTW91c2VFdmVudHMK
K3sKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZVByb2Nlc3NNb3VzZUV2ZW50cyA9IGZhbHNlOworICAg
IFtzZWxmIF9kb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50czpeeworICAgICAg
ICBkb25lUHJvY2Vzc01vdXNlRXZlbnRzID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVQcm9jZXNzTW91c2VFdmVudHMpOworfQorCitAZW5kCisKKy8v
IFRoaXMgZXhjZWVkcyB0aGUgZGVmYXVsdCBkcmFnIGh5c3RlcmVzaXMgb2YgYWxsIHBvdGVudGlh
bCBkcmFnIHR5cGVzLgorY29uc3QgZG91YmxlIGluaXRpYWxNb3VzZURyYWdEaXN0YW5jZSA9IDQ1
OworY29uc3QgZG91YmxlIGRyYWdVcGRhdGVQcm9ncmVzc0luY3JlbWVudCA9IDAuMDU7CisKK3N0
YXRpYyBOU0ltYWdlICpkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKQoreworICAgIHJldHVybiBb
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKK30KIAogQGlt
cGxlbWVudGF0aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsKLSAgICBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dz4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPFRlc3REcmFnZ2luZ0luZm8+IF9kcmFnZ2luZ0lu
Zm87CisgICAgUmV0YWluUHRyPE5TUGFzdGVib2FyZD4gX2V4dGVybmFsRHJhZ1Bhc3RlYm9hcmQ7
CisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9leHRlcm5hbERyYWdJbWFnZTsKKyAgICBCbG9ja1B0
cjx2b2lkKCk+IF93aWxsRW5kRHJhZ2dpbmdIYW5kbGVyOworICAgIE5TUG9pbnQgX3N0YXJ0TG9j
YXRpb25JbldpbmRvdzsKKyAgICBOU1BvaW50IF9lbmRMb2NhdGlvbkluV2luZG93OworICAgIGRv
dWJsZSBfcHJvZ3Jlc3M7Cit9CisKK0BzeW50aGVzaXplIGN1cnJlbnREcmFnT3BlcmF0aW9uPV9j
dXJyZW50RHJhZ09wZXJhdGlvbjsKK0BzeW50aGVzaXplIGluaXRpYWxEcmFnSW1hZ2VMb2NhdGlv
bkluVmlldz1faW5pdGlhbERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3OworCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aFdlYlZpZXdGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOm5pbF07CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1
cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewogICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKKyAg
ICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiA/OiBbW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0gc2ltdWxhdG9y
OnNlbGZdKTsKICAgICAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07Ci0gICAgICAg
IFtfd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpzZWxmXTsKICAgICB9CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYworLSAoTlNQb2ludClmbGlwQWJvdXRYQXhpc0luSG9z
dFdpbmRvdzooTlNQb2ludClwb2ludAogewotICAgIGlmIChbX3dlYlZpZXcgVUlEZWxlZ2F0ZV0g
PT0gc2VsZikKLSAgICAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6bmlsXTsKKyAgICByZXR1
cm4geyBwb2ludC54LCBOU0hlaWdodChbW193ZWJWaWV3IGhvc3RXaW5kb3ddIGZyYW1lXSkgLSBw
b2ludC55IH07Cit9CiAKLSAgICBpZiAoW193ZWJWaWV3IF9pbnB1dERlbGVnYXRlXSA9PSBzZWxm
KQotICAgICAgICBbX3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6bmlsXTsKKy0gKE5TUG9pbnQp
bG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3MKK3sKKyAgICByZXR1cm4geworICAgICAg
ICBfc3RhcnRMb2NhdGlvbkluV2luZG93LnggKyAoX2VuZExvY2F0aW9uSW5XaW5kb3cueCAtIF9z
dGFydExvY2F0aW9uSW5XaW5kb3cueCkgKiBfcHJvZ3Jlc3MsCisgICAgICAgIF9zdGFydExvY2F0
aW9uSW5XaW5kb3cueSArIChfZW5kTG9jYXRpb25JbldpbmRvdy55IC0gX3N0YXJ0TG9jYXRpb25J
bldpbmRvdy55KSAqIF9wcm9ncmVzcworICAgIH07Cit9CiAKLSAgICBbc3VwZXIgZGVhbGxvY107
CistIChkb3VibGUpaW5pdGlhbFByb2dyZXNzRm9yTW91c2VEcmFnCit7CisgICAgZG91YmxlIHRv
dGFsRGlzdGFuY2UgPSBzdGQ6OnNxcnQoc3RkOjpwb3coX3N0YXJ0TG9jYXRpb25JbldpbmRvdy54
IC0gX2VuZExvY2F0aW9uSW5XaW5kb3cueCwgMikgKyBzdGQ6OnBvdyhfc3RhcnRMb2NhdGlvbklu
V2luZG93LnkgLSBfZW5kTG9jYXRpb25JbldpbmRvdy55LCAyKSk7CisgICAgcmV0dXJuICF0b3Rh
bERpc3RhbmNlID8gMSA6IHN0ZDo6bWluPGRvdWJsZT4oMSwgaW5pdGlhbE1vdXNlRHJhZ0Rpc3Rh
bmNlIC8gdG90YWxEaXN0YW5jZSk7CiB9CiAKLS0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClzdGFy
dExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uCistICh2b2lkKXJ1bkZyb206KENHUG9p
bnQpZmxpcHBlZFN0YXJ0TG9jYXRpb24gdG86KENHUG9pbnQpZmxpcHBlZEVuZExvY2F0aW9uCiB7
Ci0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSB0byBzaW11bGF0ZSBkcmFnZ2luZyBvbiBt
YWNPUy4KLSAgICBVTlVTRURfUEFSQU0oc3RhcnRMb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGVuZExvY2F0aW9uKTsKKyAgICBfc3RhcnRMb2NhdGlvbkluV2luZG93ID0gW3NlbGYgZmxpcEFi
b3V0WEF4aXNJbkhvc3RXaW5kb3c6ZmxpcHBlZFN0YXJ0TG9jYXRpb25dOworICAgIF9lbmRMb2Nh
dGlvbkluV2luZG93ID0gW3NlbGYgZmxpcEFib3V0WEF4aXNJbkhvc3RXaW5kb3c6ZmxpcHBlZEVu
ZExvY2F0aW9uXTsKKyAgICBfY3VycmVudERyYWdPcGVyYXRpb24gPSBOU0RyYWdPcGVyYXRpb25O
b25lOworICAgIF9kcmFnZ2luZ0luZm8gPSBuaWw7CisgICAgX3Byb2dyZXNzID0gMDsKKworICAg
IGlmIChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBzZWxmLmV4dGVybmFsRHJhZ1Bhc3RlYm9h
cmQpIHsKKyAgICAgICAgTlNQb2ludCBzdGFydExvY2F0aW9uSW5WaWV3ID0gW193ZWJWaWV3IGNv
bnZlcnRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IGZyb21WaWV3Om5pbF07CisgICAgICAg
IE5TSW1hZ2UgKmRyYWdJbWFnZSA9IHNlbGYuZXh0ZXJuYWxEcmFnSW1hZ2UgPzogZGVmYXVsdEV4
dGVybmFsRHJhZ0ltYWdlKCk7CisgICAgICAgIFtzZWxmIHBlcmZvcm1EcmFnSW5XZWJWaWV3Ol93
ZWJWaWV3LmdldCgpIGF0TG9jYXRpb246c3RhcnRMb2NhdGlvbkluVmlldyB3aXRoSW1hZ2U6ZHJh
Z0ltYWdlIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6bmlsXTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIF9wcm9ncmVzcyA9IFtzZWxmIGluaXRpYWxQcm9ncmVzc0Zvck1vdXNl
RHJhZ107CisgICAgaWYgKF9wcm9ncmVzcyA9PSAxKSB7CisgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpAIkRyYWdBbmREcm9wU2ltdWxhdG9yIiBmb3JtYXQ6QCJEcmFnIHN0YXJ0ICglQCkgYW5k
IGRyYWcgZW5kICglQCkgbG9jYXRpb25zIGFyZSB0b28gY2xvc2UhIiwgTlNTdHJpbmdGcm9tUG9p
bnQoZmxpcHBlZFN0YXJ0TG9jYXRpb24pLCBOU1N0cmluZ0Zyb21Qb2ludChmbGlwcGVkRW5kTG9j
YXRpb24pXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtfd2ViVmlldyBtb3VzZUVu
dGVyQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93XTsKKyAgICBbX3dlYlZpZXcgbW91c2VN
b3ZlVG9Qb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IHdpdGhGbGFnczowXTsKKyAgICBbX3dl
YlZpZXcgbW91c2VEb3duQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IHNpbXVsYXRlUHJl
c3N1cmU6Tk9dOworICAgIFtfd2ViVmlldyBtb3VzZURyYWdUb1BvaW50OltzZWxmIGxvY2F0aW9u
SW5WaWV3Rm9yQ3VycmVudFByb2dyZXNzXV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JQZW5kaW5n
TW91c2VFdmVudHNdOworCisgICAgW193ZWJWaWV3IG1vdXNlVXBBdFBvaW50Ol9lbmRMb2NhdGlv
bkluV2luZG93XTsKKyAgICBbX3dlYlZpZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c107Cit9
CisKKy0gKHZvaWQpcGVyZm9ybURyYWdJbldlYlZpZXc6KERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dyAqKXdlYlZpZXcgYXRMb2NhdGlvbjooTlNQb2ludCl2aWV3TG9jYXRpb24gd2l0aEltYWdlOihO
U0ltYWdlICopaW1hZ2UgcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBzb3Vy
Y2U6KGlkKXNvdXJjZQoreworICAgIF9pbml0aWFsRHJhZ0ltYWdlTG9jYXRpb25JblZpZXcgPSB2
aWV3TG9jYXRpb247CisgICAgX2RyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tUZXN0RHJhZ2dpbmdJ
bmZvIGFsbG9jXSBpbml0XSk7CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dlZEltYWdlOmlt
YWdlXTsKKyAgICBbX2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ1Bhc3RlYm9hcmQ6cGFzdGVib2Fy
ZF07CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdTb3VyY2U6c291cmNlXTsKKyAgICBb
X2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0xvY2F0aW9uOltzZWxmIGxvY2F0aW9uSW5WaWV3Rm9y
Q3VycmVudFByb2dyZXNzXV07CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrOk5TRHJhZ09wZXJhdGlvbkV2ZXJ5XTsKKyAgICBbX2RyYWdnaW5nSW5mbyBz
ZXROdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOnBhc3RlYm9hcmQucGFzdGVib2FyZEl0ZW1zLmNv
dW50XTsKKworICAgIF9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFtfd2ViVmlldyBkcmFnZ2luZ0Vu
dGVyZWQ6X2RyYWdnaW5nSW5mby5nZXQoKV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIHdoaWxlIChfcHJvZ3Jlc3MgIT0gMSkgeworICAgICAg
ICBfcHJvZ3Jlc3MgPSBzdGQ6Om1pbjxkb3VibGU+KDEsIF9wcm9ncmVzcyArIGRyYWdVcGRhdGVQ
cm9ncmVzc0luY3JlbWVudCk7CisgICAgICAgIFtfZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nTG9j
YXRpb246W3NlbGYgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdXTsKKyAgICAgICAg
X2N1cnJlbnREcmFnT3BlcmF0aW9uID0gW193ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpfZHJhZ2dp
bmdJbmZvLmdldCgpXTsKKyAgICAgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKKyAgICB9CisKKyAgICBbX2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0xvY2F0aW9u
Ol9lbmRMb2NhdGlvbkluV2luZG93XTsKKworICAgIGlmIChfd2lsbEVuZERyYWdnaW5nSGFuZGxl
cikKKyAgICAgICAgX3dpbGxFbmREcmFnZ2luZ0hhbmRsZXIoKTsKKworICAgIGlmIChfY3VycmVu
dERyYWdPcGVyYXRpb24gIT0gTlNEcmFnT3BlcmF0aW9uTm9uZSAmJiBbX3dlYlZpZXcgcHJlcGFy
ZUZvckRyYWdPcGVyYXRpb246X2RyYWdnaW5nSW5mby5nZXQoKV0pCisgICAgICAgIFtfd2ViVmll
dyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpfZHJhZ2dpbmdJbmZvLmdldCgpXTsKKyAgICBlbHNlIGlm
IChfY3VycmVudERyYWdPcGVyYXRpb24gPT0gTlNEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICAgICAg
W193ZWJWaWV3IGRyYWdnaW5nRXhpdGVkOl9kcmFnZ2luZ0luZm8uZ2V0KCldOworICAgIFtfd2Vi
VmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBpZiAoIXNlbGYuZXh0
ZXJuYWxEcmFnUGFzdGVib2FyZCkgeworICAgICAgICBbX3dlYlZpZXcgZHJhZ2dlZEltYWdlOltf
ZHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0gZW5kZWRBdDpfZW5kTG9jYXRpb25JbldpbmRvdyBv
cGVyYXRpb246X2N1cnJlbnREcmFnT3BlcmF0aW9uXTsKKyAgICAgICAgW193ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICB9CiB9CiAKIC0gKE5TQXJyYXk8X1dLQXR0
YWNobWVudCAqPiAqKWluc2VydGVkQXR0YWNobWVudHMKQEAgLTcyLDkgKzIwNSw0NCBAQAogICAg
IHJldHVybiBAWyBdOwogfQogCi0tIChEcmFnQW5kRHJvcFBoYXNlKXBoYXNlCistIChUZXN0V0tX
ZWJWaWV3ICopd2ViVmlldworeworICAgIHJldHVybiBfd2ViVmlldy5nZXQoKTsKK30KKworLSAo
dm9pZClzZXRFeHRlcm5hbERyYWdQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilleHRlcm5hbERy
YWdQYXN0ZWJvYXJkCit7CisgICAgX2V4dGVybmFsRHJhZ1Bhc3RlYm9hcmQgPSBleHRlcm5hbERy
YWdQYXN0ZWJvYXJkOworfQorCistIChOU1Bhc3RlYm9hcmQgKilleHRlcm5hbERyYWdQYXN0ZWJv
YXJkCit7CisgICAgcmV0dXJuIF9leHRlcm5hbERyYWdQYXN0ZWJvYXJkLmdldCgpOworfQorCist
ICh2b2lkKXNldEV4dGVybmFsRHJhZ0ltYWdlOihOU0ltYWdlICopZXh0ZXJuYWxEcmFnSW1hZ2UK
K3sKKyAgICBfZXh0ZXJuYWxEcmFnSW1hZ2UgPSBleHRlcm5hbERyYWdJbWFnZTsKK30KKworLSAo
TlNJbWFnZSAqKWV4dGVybmFsRHJhZ0ltYWdlCit7CisgICAgcmV0dXJuIF9leHRlcm5hbERyYWdJ
bWFnZS5nZXQoKTsKK30KKworLSAoaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KK3sK
KyAgICByZXR1cm4gX2RyYWdnaW5nSW5mby5nZXQoKTsKK30KKworLSAoZGlzcGF0Y2hfYmxvY2tf
dCl3aWxsRW5kRHJhZ2dpbmdIYW5kbGVyCit7CisgICAgcmV0dXJuIF93aWxsRW5kRHJhZ2dpbmdI
YW5kbGVyLmdldCgpOworfQorCistICh2b2lkKXNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6KGRp
c3BhdGNoX2Jsb2NrX3Qpd2lsbEVuZERyYWdnaW5nSGFuZGxlcgogewotICAgIHJldHVybiBEcmFn
QW5kRHJvcFBoYXNlQ2FuY2VsbGVkOworICAgIF93aWxsRW5kRHJhZ2dpbmdIYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKHdpbGxFbmREcmFnZ2luZ0hhbmRsZXIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJjZGViNDcwYjU3
NGE1MDQxNjBiZTdkYjQ2NGMyMmEyYjM2NjI1YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8uaApAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEFwcEtpdC9OU0RyYWdnaW5nLmg+CisK
K0BpbnRlcmZhY2UgVGVzdERyYWdnaW5nSW5mbyA6IE5TT2JqZWN0IDxOU0RyYWdnaW5nSW5mbz4K
KworQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgZHJhZ2dpbmdMb2NhdGlvbjsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljKSBOU0RyYWdPcGVyYXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrOworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNQYXN0ZWJvYXJkICpkcmFnZ2lu
Z1Bhc3RlYm9hcmQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0ltYWdlICpkcmFn
Z2VkSW1hZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgZHJhZ2dpbmdTb3VyY2U7
CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2lu
Z0luZm8ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ1OGQ2YjQxZTA2YjQ3ZDQxZjIyNDY3NWYyMWZkYTM2MWY4OGZjMDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLm1t
CkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJUZXN0RHJhZ2dpbmdJbmZvLmgiCisKKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgor
CitAaW1wbGVtZW50YXRpb24gVGVzdERyYWdnaW5nSW5mbyB7CisgICAgV2Vha09iakNQdHI8aWQ+
IF9zb3VyY2U7CisgICAgUmV0YWluUHRyPE5TUGFzdGVib2FyZD4gX3Bhc3RlYm9hcmQ7CisgICAg
UmV0YWluUHRyPE5TSW1hZ2U+IF9kcmFnZ2VkSW1hZ2U7Cit9CisKK0BzeW50aGVzaXplIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaz1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOworQHN5
bnRoZXNpemUgZHJhZ2dpbmdMb2NhdGlvbj1fZHJhZ2dpbmdMb2NhdGlvbjsKK0BzeW50aGVzaXpl
IGRyYWdnaW5nRm9ybWF0aW9uPV9kcmFnZ2luZ0Zvcm1hdGlvbjsKK0BzeW50aGVzaXplIG51bWJl
ck9mVmFsaWRJdGVtc0ZvckRyb3A9X251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CisKKy0gKE5T
UGFzdGVib2FyZCAqKWRyYWdnaW5nUGFzdGVib2FyZAoreworICAgIHJldHVybiBfcGFzdGVib2Fy
ZC5nZXQoKTsKK30KKworLSAodm9pZClzZXREcmFnZ2luZ1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2Fy
ZCAqKWRyYWdnaW5nUGFzdGVib2FyZAoreworICAgIF9wYXN0ZWJvYXJkID0gZHJhZ2dpbmdQYXN0
ZWJvYXJkOworfQorCistIChpZClkcmFnZ2luZ1NvdXJjZQoreworICAgIHJldHVybiBfc291cmNl
LmdldCgpLmdldCgpOworfQorCistICh2b2lkKXNldERyYWdnaW5nU291cmNlOihpZClkcmFnZ2lu
Z1NvdXJjZQoreworICAgIF9zb3VyY2UgPSBkcmFnZ2luZ1NvdXJjZTsKK30KKworLSAodm9pZCll
bnVtZXJhdGVEcmFnZ2luZ0l0ZW1zV2l0aE9wdGlvbnM6KE5TRHJhZ2dpbmdJdGVtRW51bWVyYXRp
b25PcHRpb25zKWVudW1PcHRzIGZvclZpZXc6KE5TVmlldyAqKXZpZXcgY2xhc3NlczooTlNBcnJh
eTxDbGFzcz4gKiljbGFzc0FycmF5IHNlYXJjaE9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKilzZWFyY2hPcHRpb25zIHVzaW5nQmxvY2s6KHZvaWQgKF4pKE5TRHJhZ2dpbmdJ
dGVtICosIE5TSW50ZWdlciwgQk9PTCAqKSlibG9jaworeworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyB0byB0ZXN0IGZpbGUgcHJvbWlzZSBkcm9wIGhhbmRsaW5nLgorfQorCisvLyBUaGUg
Zm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBjdXJyZW50bHkgdXNlZCBieSBXZWJLaXQuCisKK0Bz
eW50aGVzaXplIGRyYWdnZWRJbWFnZUxvY2F0aW9uPV9kcmFnZ2VkSW1hZ2VMb2NhdGlvbjsKK0Bz
eW50aGVzaXplIGRyYWdnaW5nU2VxdWVuY2VOdW1iZXI9X2RyYWdnaW5nU2VxdWVuY2VOdW1iZXI7
CitAc3ludGhlc2l6ZSBhbmltYXRlc1RvRGVzdGluYXRpb249X2FuaW1hdGVzVG9EZXN0aW5hdGlv
bjsKK0BzeW50aGVzaXplIHNwcmluZ0xvYWRpbmdIaWdobGlnaHQ9X3NwcmluZ0xvYWRpbmdIaWdo
bGlnaHQ7CisKKy0gKE5TV2luZG93ICopZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvdworeworICAg
IHJldHVybiBuaWw7Cit9CisKKy0gKE5TSW1hZ2UgKilkcmFnZ2VkSW1hZ2UKK3sKKyAgICByZXR1
cm4gX2RyYWdnZWRJbWFnZS5nZXQoKTsKK30KKworLSAodm9pZClzZXREcmFnZ2VkSW1hZ2U6KE5T
SW1hZ2UgKilkcmFnZ2VkSW1hZ2UKK3sKKyAgICBfZHJhZ2dlZEltYWdlID0gZHJhZ2dlZEltYWdl
OworfQorCistICh2b2lkKXNsaWRlRHJhZ2dlZEltYWdlVG86KE5TUG9pbnQpc2NyZWVuUG9pbnQK
K3sKK30KKworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb246KE5TVVJMICopZHJvcERlc3RpbmF0aW9uCit7CisgICAgcmV0dXJu
IEBbIF07Cit9CisKKy0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5nCit7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346956</attachid>
            <date>2018-08-10 19:56:39 -0700</date>
            <delta_ts>2018-08-10 20:36:55 -0700</delta_ts>
            <desc>Try to fix macOS 10.12 build</desc>
            <filename>bug-181898-20180810195639.patch</filename>
            <type>text/plain</type>
            <size>103391</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3OWFkODQ1MWVmNTg4YWRm
Y2UwN2Q3ZDdlMjJkOGJjZGIwZjY4MTkuLmNiMWJlNDEwYzZhZWRlOGNkOTk2NDhmNjNiODJiYzk2
NTJhMzYwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMDgtMTAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09TXSBJ
bXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYSBuZXcgU1BJIG1ldGhvZCwgYC1fZG9BZnRlclByb2Nlc3NpbmdB
bGxQZW5kaW5nTW91c2VFdmVudHM6YCwgdG8gV0tXZWJWaWV3LiBUaGlzIGludm9rZXMgdGhlIGdp
dmVuCisgICAgICAgIGNhbGxiYWNrIGFmdGVyIGFsbCBxdWV1ZWQgbW91c2UgZXZlbnRzIGhhdmUg
YmVlbiBoYW5kbGVkIGJ5IHRoZSB3ZWIgcHJvY2Vzcy4gU2VlIFRvb2xzL0NoYW5nZUxvZyBmb3Ig
bW9yZQorICAgICAgICBkZXRhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyUHJvY2Vzc2luZ0FsbFBl
bmRpbmdNb3VzZUV2ZW50czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJv
Y2Vzc0RpZEV4aXQpOgorCisgICAgICAgIEludm9rZSBhbnkgb3V0c3RhbmRpbmcgY2FsbGJhY2tz
IGZvciBwcm9jZXNzaW5nIHBlbmRpbmcgbW91c2UgZXZlbnRzIHdoZW4gdGhlIHdlYiBwcm9jZXNz
IGlzIHRlcm1pbmF0ZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQWZ0ZXJQ
cm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKToKKworICAgICAgICBFaXRoZXIgaW52b2tl
IHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBpZiB0aGVyZSBhcmUgbm8gbW91c2UgZXZlbnRzIHRv
IGJlIHByb2Nlc3NlZCwgb3IgaW5zZXJ0IHRoZSBjYWxsYmFjayBpbgorICAgICAgICBhIHF1ZXVl
IHRoYXQgd2lsbCBiZSBmbHVzaGVkIG9uY2UgYWxsIG1vdXNlIGV2ZW50cyBoYXZlIGJlZW4gaGFu
ZGxlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkRmluaXNoUHJvY2Vzc2lu
Z0FsbFBlbmRpbmdNb3VzZUV2ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpm
bHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpwaW5uZWRTdGF0ZVdpbGxD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpwaW5uZWRTdGF0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlk
Q2hhbmdlKToKKworICAgICAgICBEcml2ZS1ieSB0d2Vha3M6IHJlbW92ZSB1bm5lY2Vzc2FyeSBz
ZW1pY29sb25zIGFmdGVyIGVtcHR5IGltcGxlbWVudGF0aW9uIHN0dWJzLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZUV2ZW50KToKKworICAgICAgICBOb3RpZnkgdGhlIHBhZ2UgY2xpZW50IHdo
ZW4gdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBtb3VzZSBldmVudHMgbGVmdCBpbiB0aGUgcXVldWUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKToKKworICAgICAg
ICBBZGQgc29tZSBwbHVtYmluZyB0aHJvdWdoIFBhZ2VDbGllbnQsIHNvIHRoYXQgV2ViUGFnZVBy
b3h5IGNhbiB0ZWxsIFdlYlZpZXdJbXBsIHdoZW4gaXQgaXMgZmluaXNoZWQgcHJvY2Vzc2luZwor
ICAgICAgICBhbGwgbW91c2UgZXZlbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdl
Q2xpZW50SW1wbC5oOgorCiAyMDE4LTA4LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0
VG9Eb3dubG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCBiMTBhMDFjMDRhNzE4MDAxMmRlOWM2NTFkMDc0NjFhNDQyNGJjYTE3Li41
MmY3ODEyY2NjNTM2OWU1OTk3MTI0NzI4MWU5MjhmOTllMWExNGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYzMzcsNiArNjMzNywx
MSBAQCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogICAgIF9wYWdlLT5zZXRGb290ZXJCYW5uZXJI
ZWlnaHRGb3JUZXN0aW5nKGhlaWdodCk7CiB9CiAKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5n
QWxsUGVuZGluZ01vdXNlRXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgoreworICAgIF9p
bXBsLT5kb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cyhhY3Rpb24pOworfQor
CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAtICh2b2lkKV9yZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvOih2b2lkKF4pKEJPT0wsIEJPT0wsIE5TU3RyaW5nKiwgZG91YmxlLCBk
b3VibGUsIE5TSW50ZWdlcikpY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY1MjgxMmIxY2M5MzdkZjEy
OTkxNTVjZWIwOWUxN2UzMWEzYzY3N2QuLjU4MWE0YTY3ZDE4Njg2YjYxMTI4Zjg2N2ZiNDk4MWE3
YzZmN2ZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiAtICh2b2lkKV9zZXRIZWFkZXJCYW5uZXJI
ZWlnaHQ6KGludCloZWlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMykpOwogLSAo
dm9pZClfc2V0Rm9vdGVyQmFubmVySGVpZ2h0OihpbnQpaGVpZ2h0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEyLjMpKTsKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVuZGluZ01v
dXNlRXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAjZW5kaWYKIAogLSAodm9pZClfcmVxdWVzdEFjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uSW5mbzoodm9pZCheKShCT09MLCBCT09MLCBOU1N0cmluZyosIGRvdWJsZSwgZG91
YmxlLCBOU0ludGVnZXIpKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzLjQp
LCBpb3MoMTEuMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCmluZGV4IDBjNWIxZDU0NTI0NGZiOTVmNDE1ODU2MjE5Y2FiMGE2MTM5ODE4
YzAuLmQzNjUzOWY2OWE4ZjNkN2Q0MWIzMDY2OGFiZTM2MGU1MTkxZjE1MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0NSw2
ICsxNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsIHsgfQog
CisgICAgdm9pZCBkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKCkgZmlu
YWwgeyB9CisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKSBvdmVycmlkZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdl
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5oCmluZGV4IDI0ZDlmODMzZmMxMTg4YTlmNWE0ODgxZjY3MDlkMmUwZjEwOWQ2MDIuLmNh
MjFkOGJlNmUxNTA0YzIxOTcyMDE1ZTEzNmMxOWVlZjVjNDc2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEzOSw2ICsxMzks
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJh
bWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQ
ZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRl
OwogCiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDI2ZGI2YmQwYTUyMjk5N2MxZGY4Yjg3NDBjOTBjNTMz
YzkzMTk3MmEuLjQyOGFlYzNlZmEyZmQwYTJmMDIxMzc0NDZiNDIwNzJlZDBkNzk0MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTI2LDYgKzUy
Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoTlNUZXh0
Q2hlY2tpbmdSZXN1bHQgKmFjY2VwdGVkQ2FuZGlkYXRlKTsKIAorICAgIHZvaWQgZG9BZnRlclBy
b2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoZGlzcGF0Y2hfYmxvY2tfdCBhY3Rpb24pOwor
ICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOworCiAj
aWYgSEFWRShUT1VDSF9CQVIpCiAgICAgTlNUb3VjaEJhciAqbWFrZVRvdWNoQmFyKCk7CiAgICAg
dm9pZCB1cGRhdGVUb3VjaEJhcigpOwpAQCAtNjIyLDYgKzYyNSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtaWdodEJlZ2luU2Nyb2xsV2hpbGVJbmFjdGl2ZSgpOwogCiAgICAgdm9pZCBoYW5kbGVS
ZXF1ZXN0ZWRDYW5kaWRhdGVzKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1Rl
eHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlkYXRlcyk7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdN
b3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc8V2ViVmlld0lt
cGxEZWxlZ2F0ZT4+IG1fdmlldzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNsaWVudD4gbV9w
YWdlQ2xpZW50OwpAQCAtNzMyLDYgKzczNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBoYXMg
YmVlbiBhbHJlYWR5IHNlbnQgdG8gV2ViQ29yZS4KICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9r
ZXlEb3duRXZlbnRCZWluZ1Jlc2VudDsKICAgICBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiogbV9jb2xsZWN0ZWRLZXlwcmVzc0NvbW1hbmRzIHsgbnVsbHB0ciB9OworICAgIFZlY3Rv
cjxCbG9ja1B0cjx2b2lkKCk+PiBtX2NhbGxiYWNrSGFuZGxlcnNBZnRlclByb2Nlc3NpbmdQZW5k
aW5nTW91c2VFdmVudHM7CiAKICAgICBTdHJpbmcgbV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVx
dWVzdDsKICAgICBOU0ludGVnZXIgbV9sYXN0Q2FuZGlkYXRlUmVxdWVzdFNlcXVlbmNlTnVtYmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAx
ODA5ODlkN2JkMGQ1MTk3OGNjMzNhNzdiYzdjMmM0ZGRmODkxNjRhLi41NmRlMjNjMzZlNDQ4MTli
ZGQ4ZThjMWMyNjEyNGM5Y2VhZGRiY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTM3OCw2ICsxMzc4LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cHJvY2Vzc0RpZEV4aXQoKQogICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9v
dExheWVyKG5pbCk7CiAKICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9u
KGZhbHNlKTsKKyAgICBmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBt
X2dlc3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKIH0KQEAgLTMxNDQsNiArMzE0NSwyOSBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShOU1RleHRDaGVja2luZ1Jl
c3VsdCAqYWNjZXB0ZWRDYW5kaWRhdAogICAgIG1fcGFnZS0+aGFuZGxlQWNjZXB0ZWRDYW5kaWRh
dGUodGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KGFjY2VwdGVkQ2Fu
ZGlkYXRlKSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVu
ZGluZ01vdXNlRXZlbnRzKGRpc3BhdGNoX2Jsb2NrX3QgYWN0aW9uKQoreworICAgIGlmICghbV9w
YWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgIGFjdGlvbigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9jZXNz
aW5nUGVuZGluZ01vdXNlRXZlbnRzLmFwcGVuZChtYWtlQmxvY2tQdHIoYWN0aW9uKSk7Cit9CisK
K3ZvaWQgV2ViVmlld0ltcGw6OmRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVu
dHMoKQoreworICAgIGZsdXNoUGVuZGluZ01vdXNlRXZlbnRDYWxsYmFja3MoKTsKK30KKwordm9p
ZCBXZWJWaWV3SW1wbDo6Zmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpCit7CisgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IG1fY2FsbGJhY2tIYW5kbGVyc0FmdGVyUHJvY2Vzc2luZ1Bl
bmRpbmdNb3VzZUV2ZW50cykKKyAgICAgICAgY2FsbGJhY2soKTsKKworICAgIG1fY2FsbGJhY2tI
YW5kbGVyc0FmdGVyUHJvY2Vzc2luZ1BlbmRpbmdNb3VzZUV2ZW50cy5jbGVhcigpOworfQorCiB2
b2lkIFdlYlZpZXdJbXBsOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiB7CiAgICAgQk9PTCBuZWVk
c1ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMgPSBtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1
Z2luc0VuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZWE4
MmJhZjBkNzk3YzAyZTUzNmM0MGE5NTQ1ODVmNWRkMGMwMmE2Li5lMmM2OTFlMWNkYzU0MGM0MmNm
OGQ1MTUwNzgyOGJhYzU3NDAxNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0zOTMsOCArMzkzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VC
YWNrZ3JvdW5kQ29sb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ0F1ZGlvV2ls
bENoYW5nZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2Uo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2
b2lkIHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwaW5uZWRT
dGF0ZURpZENoYW5nZSgpIHsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgQVBJOjpPYmplY3QqKSA9IDA7CkBA
IC00MDMsOCArNDAzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlKCkgPSAwOwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkgeyB9CiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbWVkaWFTZXNzaW9uTWFuYWdlcigpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdhNmYyNzUzMmY2MDMz
OTE0ZDc4M2MwNjQ5MmU5ZGY3YzJlYzkxYTAuLjEzMTA1YzlhYTUzYjVhMDgyYTI0OTZkZDE4YWE3
NjcyMGVmZjg5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNTU0Myw4ICs1NTQzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQo
dWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBpZiAoIW1fbW91c2VF
dmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICIg
VUlQcm9jZXNzOiBoYW5kbGluZyBhIHF1ZXVlZCBtb3VzZSBldmVudCBmcm9tIGRpZFJlY2VpdmVF
dmVudCIpOwogICAgICAgICAgICAgcHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQotICAgICAgICAgICAgYXV0b21hdGlvblNlc3Np
b24tPm1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoKnRoaXMpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nl
c3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKKyAgICAgICAgICAgICAgICBhdXRvbWF0aW9u
U2Vzc2lvbi0+bW91c2VFdmVudHNGbHVzaGVkRm9yUGFnZSgqdGhpcyk7CisgICAgICAgICAgICBt
X3BhZ2VDbGllbnQuZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOwor
ICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBhNzFmZDQyNjg4NmNhNzAyOTU5
MmQ3MzYxOGY0ZmRlZWIwNDY5NDg0Li4xYzdhYmZjMjZjNjM2ZDk0ODBlM2ZkZGM3YzZiZWE1MTMz
MmYyNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VE
YXRhSW50ZXJhY3Rpb25DYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXND
YXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAorICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50
cygpIGZpbmFsIHsgfQorCiAgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKICAgICBS
ZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZWFl
MTYwNTMzMjc5MWM4OTM0YjNjYjQ4Y2U2YzU5N2E1ZDk4OTExZi4uOTcyY2E2NGZmN2M3NWJjZDg0
YzE3MzkxMmNlMDZjNmJkNWY0NzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTIzOCw2ICsyMzgsOCBAQCBwcml2YXRlOgogICAg
IF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSgpIG92ZXJyaWRl
OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VF
dmVudHMoKSBmaW5hbDsKKwogICAgIE5TVmlldyAqbV92aWV3OwogICAgIFdlYlZpZXdJbXBsKiBt
X2ltcGwgeyBudWxscHRyIH07CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDQ3
OTgyNzExNjE4NTIzMTlmNzcwZWQwN2MwMWYyYWI2NWJkYWM4OTUuLjNhNTkzNzkzNGQ4YjhkMDY0
NDIzZTc1MTY2YTY2YjU4YTA1OTM0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTg4OCw2ICs4ODgsMTEgQEAgX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgKlBhZ2VDbGllbnRJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB9
CiAjZW5kaWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBl
bmRpbmdNb3VzZUV2ZW50cygpCit7CisgICAgbV9pbXBsLT5kaWRGaW5pc2hQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzKCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiB7CiAgICAgbV9pbXBsLT5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKaW5k
ZXggZWFkNzE3YmRlY2FjNzQxZjg3NDY5MzQ0ODFiNjlmODFhMjM0ZmMwYy4uMTRmYTljNjRhOGQz
NWNiZmFhODM5ZWQ0OWUyMThlOTY0MDc0MTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gV2ViQ29yZTo6VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjo6TFRSOyB9CiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQ
ZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNs
aWVudEltcGwgY2xhc3MKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxl
cjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGNmMmE0YTU3ZTI1Y2NhYzQ2Mzg2ZDg4N2Y5Njk2ZTE4Y2U5MzA3NjUuLmM1YjNjMmVlNTJmYTFk
ZDM4NThhYTEyNGY1ZTE3MDZmODUyYjQ3ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODggQEAKKzIwMTgtMDgtMTAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09T
XSBJbXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudHMgdGhlIGN1cnJlbnRseSBzdHViYmVkIERyYWdBbmRE
cm9wU2ltdWxhdG9yIG9uIG1hY09TLCBhbmQgaW50cm9kdWNlcyBhIG5ldyBBUEkgdGVzdCBmb3Ig
cjIyNzI2Ni4gU2VlCisgICAgICAgIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0Fu
ZERyb3BUZXN0cy5oOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5k
RHJvcFNpbXVsYXRvck1hYy5tbS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RyYWdBbmREcm9wVGVzdHMubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tLgorCisgICAgICAgIEludHJvZHVjZSBh
IGZpbGUgZm9yIGNyb3NzLXBsYXRmb3JtIGRyYWcgYW5kIGRyb3AgdGVzdHMsIGN1cnJlbnRseSBm
b3IgaU9TIGFuZCBtYWNPUy4gQWRkaXRpb25hbGx5IGFkZCBhIHRlc3QKKyAgICAgICAgZm9yIHIy
MjcyNjYsIHdoaWNoIHdhcyBmaXhlZCBlYXJsaWVyIHRoaXMgeWVhciBidXQgY291bGQgbm90IGJl
IHRlc3RlZCBkdWUgdG8gYSBsYWNrIG9mIHRlc3RpbmcgbWVjaGFuaXNtIG9uCisgICAgICAgIG1h
Y09TIGluIFdlYktpdDIuCisKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWw6IEFkZGVkLgorCisg
ICAgICAgIE1pbm9yIHR3ZWFrcyB0byB0aGlzIHRlc3QgcGFnZSB0byBhZGQgImRyYWdvdmVyIiBh
bmQgImRyb3AiIGV2ZW50IGhhbmRsZXJzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0
bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHBhZ2UgdGhhdCBpbmNsdWRlcyBh
IGxpbmsgZW1iZWRkZWQgd2l0aGluIGFuIGlmcmFtZSBiZWxvdyBhIHBsYWluIHRleHQgaW5wdXQu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFRlc3RzTWFj
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMubW06IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbS4KKworICAg
ICAgICBNb3ZlIG9ubHkgZXhpc3RpbmcgV2ViS2l0MiBtYWNPUyBkcmFnIGFuZCBkcm9wIHRlc3Qg
KERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLk51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApIG91
dAorICAgICAgICBvZiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBhbmQgaW50byBhIG5l
dyBmaWxlLCBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tLiBBZGRpdGlvbmFsbHksIHJlbmFtZQorICAg
ICAgICBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cyB0byBMZWdhY3lEcmFnQW5kRHJvcFRlc3Rz
LCBzaW5jZSBpdCBub3cgb25seSBjb250YWlucyB0d28gbGVnYWN5IFdlYlZpZXcgdGVzdHMgZm9y
CisgICAgICAgIGRyYWcgYW5kIGRyb3AuCisKKyAgICAgICAgKCtbRnJhbWVMb2FkQ29tcGxldGlv
bkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpdKToKKyAgICAgICAgKC1bRnJh
bWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGluaXRXaXRoQ29tcGxldGlvbkJsb2NrOl0pOgorICAg
ICAgICAoLVtGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgd2ViVmlldzpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICgtW0RyYWdTb3VyY2UgZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrRm9yTG9jYWw6XSk6CisgICAgICAgICgtW0RyYWdJbmZvIGluaXRXaXRoSW1hZ2U6b2Zm
c2V0OnBhc3RlYm9hcmQ6c291cmNlOmRlc3RpbmF0aW9uV2luZG93Ol0pOgorICAgICAgICAoLVtE
cmFnSW5mbyBsYXN0TW91c2VQb3NpdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRMYXN0
TW91c2VQb3NpdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlv
bldpbmRvd10pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBkcmFnZ2VkSW1hZ2VMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBk
cmFnZ2VkSW1hZ2VdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6
CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIGRyYWdnaW5nU2VxdWVuY2VOdW1iZXJdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2xpZGVE
cmFnZ2VkSW1hZ2VUbzpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gbmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdG
b3JtYXRpb25dKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246XSk6
CisgICAgICAgICgtW0RyYWdJbmZvIGFuaW1hdGVzVG9EZXN0aW5hdGlvbl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBzZXRBbmltYXRlc1RvRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3BdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0
TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZW51bWVy
YXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25z
OnVzaW5nQmxvY2s6XSk6CisgICAgICAgICgtW0RyYWdJbmZvIHNwcmluZ0xvYWRpbmdIaWdobGln
aHRdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpnZXRUZXN0SW1hZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
d2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdl
LWRyb3B6b25lLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9E
cmFnQW5kRHJvcFNpbXVsYXRvci5oOgorCisgICAgICAgIEZsZXNoIG91dCBzb21lIG9mIHRoZSBE
cmFnQW5kRHJvcFNpbXVsYXRvciBBUEkgZm9yIG1hY09TLCBleHBvc2luZyAoYW1vbmcgb3RoZXIg
dGhpbmdzKSB0aGUgZHJhZyBwYXN0ZWJvYXJkLAorICAgICAgICB0aGUgY3VycmVudCBOU0RyYWdn
aW5nSW5mbywgdGhlIGluaXRpYWwgbG9jYXRpb24gb2YgdGhlIGRyYWcgaW1hZ2UsIGFuZCB0aGUg
ZHJhZyBpbWFnZSBpdHNlbGYuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpzaW11bGF0ZVBy
ZXNzdXJlOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlVXBBdFBvaW50Ol0pOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlTW92ZVRvUG9pbnQ6d2l0aEZsYWdzOl0pOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Om51bWJlck9mQ2xpY2tz
Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlRW50ZXJBdFBvaW50Ol0pOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlRXhpdEF0UG9pbnQ6XSk6CisgICAgICAgICgtW1Rl
c3RXS1dlYlZpZXcgbW91c2VEcmFnVG9Qb2ludDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmll
dyBfbW91c2VFdmVudFdpdGhUeXBlOmF0TG9jYXRpb246XSk6CisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXcgX21vdXNlRXZlbnRXaXRoVHlwZTphdExvY2F0aW9uOmZsYWdzOnRpbWVzdGFtcDpjbGlj
a0NvdW50Ol0pOgorCisgICAgICAgIEFkZCBUZXN0V0tXZWJWaWV3IGhlbHBlcnMgdG8gc2VuZCBN
b3VzZU1vdmUsIE1vdXNlRW50ZXIgYW5kIE1vdXNlRHJhZyBOU0V2ZW50cyB0byB0aGUgd2ViIHZp
ZXcuIEFkZGl0aW9uYWxseSwKKyAgICAgICAgcmVuYW1lIHBhcmFtZXRlciBuYW1lcyB0byB0aGVz
ZSBoZWxwZXJzIHRvIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlc2UgbG9jYXRpb25zIGFy
ZSBhbGwgaW4gTlNXaW5kb3cKKyAgICAgICAgY29vcmRpbmF0ZXMuCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlldyB0eXBlQ2hhcmFjdGVyOl0pOgorCisgICAgICAgIERyaXZlLWJ5IHN0eWxlIGZp
eDogcHV0IHRoaXMgb3BlbmluZyBicmFjZSBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxp
bmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklP
Uy5tbToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJh
bWU6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRXaXRoV2ViVmlld0Zy
YW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdl
YlZpZXddKToKKworICAgICAgICBTbWFsbCBpT1MgRHJhZ0FuZERyb3BTaW11bGF0b3IgYWRqdXN0
bWVudHMgZm9yIG5ldyBEcmFnQW5kRHJvcFNpbXVsYXRvciBpbnRlcmZhY2VzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW06CisgICAgICAg
ICgtW0RyYWdBbmREcm9wVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246
c2ltdWxhdG9yOl0pOgorCisgICAgICAgIEludHJvZHVjZSBhIFdLV2ViVmlldyBzdWJjbGFzcyBm
b3IgdGVzdGluZyBkcmFnIGFuZCBkcm9wIHRoYXQgb3ZlcnJpZGVzIGAtZHJhZ0ltYWdlOmF0Om9m
ZnNldDrigKZgLCBhbmQgaW5zdGVhZAorICAgICAgICBhbGxvd3MgRHJhZ0FuZERyb3BTaW11bGF0
b3IgdG8gdGFrZSBvdmVyIHRoZSBkcmFnLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wVGVzdFdL
V2ViVmlldyBkcmFnSW1hZ2U6YXQ6b2Zmc2V0OmV2ZW50OnBhc3RlYm9hcmQ6c291cmNlOnNsaWRl
QmFjazpdKToKKworICAgICAgICBPdmVycmlkZSB0aGlzIGVudHJ5IHBvaW50IGludG8gZHJhZyBh
bmQgZHJvcCBjb2RlLCBhbmQgaW5zdGVhZCBjYWxsIG91dCB0byB0aGUgRHJhZ0FuZERyb3BTaW11
bGF0b3IgdG8KKyAgICAgICAgY29vcmRpbmF0ZSB0aGUgZHJhZy4KKworICAgICAgICAoLVtEcmFn
QW5kRHJvcFRlc3RXS1dlYlZpZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c10pOgorCisgICAg
ICAgIEhlbHBlciBtZXRob2QgdG8gd2FpdCBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGZpbmlzaCBo
YW5kbGluZyBhbGwgaW4tZmxpZ2h0IG1vdXNlIGV2ZW50cy4KKworICAgICAgICAoZGVmYXVsdEV4
dGVybmFsRHJhZ0ltYWdlKToKKworICAgICAgICBTZXQgdGhpcyBpbWFnZSBhcyB0aGUgZGVmYXVs
dCBkcmFnIGltYWdlIHdoZW4gc2ltdWxhdGluZyBhbiBpbmNvbWluZyBkcmFnIHNlc3Npb24gZnJv
bSBvdXRzaWRlIG9mIHRoZSB3ZWIgdmlldy4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBpbml0V2l0aFdlYlZpZXdGcmFtZTpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11
bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BTaW11bGF0b3IgZmxpcEFib3V0WEF4aXNJbkhvc3RXaW5kb3c6XSk6CisKKyAg
ICAgICAgSGVscGVyIG1ldGhvZCB0byBmbGlwIGEgZ2l2ZW4gcG9pbnQgYWJvdXQgdGhlIFggYXhp
cyBvZiB0aGUgd2luZG93LgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGxvY2F0
aW9uSW5WaWV3Rm9yQ3VycmVudFByb2dyZXNzXSk6CisKKyAgICAgICAgTWFwIGEgcHJvZ3Jlc3Mg
dmFsdWUgKGJldHdlZW4gMCBhbmQgMSkgdG8gYSBkcmFnIGxvY2F0aW9uLgorCisgICAgICAgICgt
W0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRpYWxQcm9ncmVzc0Zvck1vdXNlRHJhZ10pOgorCisg
ICAgICAgIERldGVybWluZXMgdGhlIGluaXRpYWwgcHJvZ3Jlc3MgdmFsdWUgd2hlbiBpbml0aWF0
aW9uIGEgZHJhZyBpbiB3ZWIgY29udGVudC4gVGhpcyBpcyB0aGUgaW5pdGlhbCBwcm9ncmVzcwor
ICAgICAgICByZXF1aXJlZCB0byBlbnN1cmUgdGhhdCB0aGUgZmlyc3QgbW91c2UgZHJhZyBldmVu
dCBleGNlZWRzIHRoZSBkcmFnIGRpc3RhbmNlIGh5c3RlcmVzaXMgYW5kIGNhdXNlcyBhbnkgZHJh
ZworICAgICAgICAoaWYgYXBwbGljYWJsZSkgdG8gYmVnaW4uCisKKyAgICAgICAgKC1bRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgcnVuRnJvbTp0bzpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11
bGF0b3IgcGVyZm9ybURyYWdJbldlYlZpZXc6YXRMb2NhdGlvbjp3aXRoSW1hZ2U6cGFzdGVib2Fy
ZDpzb3VyY2U6XSk6CisKKyAgICAgICAgSGVscGVyIHRvIGNvb3JkaW5hdGUgZHJhZyB1cGRhdGVz
IGluIGJvdGggdGhlIGNhc2VzIHdoZXJlIHdlJ3JlIHNpbXVsYXRpbmcgYSBkcmFnIHNlc3Npb24g
ZW50ZXJpbmcgZnJvbSBvdXRzaWRlCisgICAgICAgIG9mIHRoZSB3ZWIgdmlldywgYW5kIGluIHRo
ZSBjYXNlIHdoZXJlIHdlJ3ZlIGluaXRpYXRlZCBhIGRyYWcgZnJvbSB0aGUgd2ViIHZpZXcgaXRz
ZWxmLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdlYlZpZXddKToKKyAgICAg
ICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Igc2V0RXh0ZXJuYWxEcmFnUGFzdGVib2FyZDpdKToK
KyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgZXh0ZXJuYWxEcmFnUGFzdGVib2FyZF0p
OgorCisgICAgICAgIEp1c3QgbGlrZSBpdHMgaU9TIGNvdW50ZXJwYXJ0IChzZXRFeHRlcm5hbEl0
ZW1Qcm92aWRlcnM6KSwgc2V0dGluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgb24gbWFj
T1MgcHV0cyB0aGUKKyAgICAgICAgRHJhZ0FuZERyb3BTaW11bGF0b3IgaW4gYSBtb2RlIHRoYXQg
c2ltdWxhdGVzIGEgZHJhZyBjb21pbmcgaW4gZnJvbSBvdXRzaWRlIHRoZSB3ZWIgdmlldywgdXNp
bmcgdGhlIGdpdmVuCisgICAgICAgIHBhc3RlYm9hcmQuCisKKyAgICAgICAgKC1bRHJhZ0FuZERy
b3BTaW11bGF0b3Igc2V0RXh0ZXJuYWxEcmFnSW1hZ2U6XSk6CisgICAgICAgICgtW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGV4dGVybmFsRHJhZ0ltYWdlXSk6CisKKyAgICAgICAgTWF5IGJlIG9wdGlv
bmFsbHkgc2V0IHdoZW4gc3BlY2lmeWluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgdG8g
c3BlY2lmeSB0aGUgZHJhZyBpbWFnZSB1c2VkLiBJZiBubyBleHRlcm5hbAorICAgICAgICBkcmFn
IGltYWdlIGlzIHNwZWNpZmllZCwgZmFsbHMgYmFjayB0byB0aGUgZGVmYXVsdCBpbWFnZSByZXR1
cm5lZCBieSBgZGVmYXVsdEV4dGVybmFsRHJhZ0ltYWdlKClgLgorCisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGRyYWdnaW5nSW5mb10pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNp
bXVsYXRvciB3aWxsRW5kRHJhZ2dpbmdIYW5kbGVyXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9w
U2ltdWxhdG9yIHNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6XSk6CisKKyAgICAgICAgSG9vayB0
byBhbGxvdyB0ZXN0cyB0byBydW4gbG9naWMgcmlnaHQgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRy
b3AgKGlmIHRoZSBjdXJyZW50IGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBub25lKSBvcgorICAgICAg
ICBlbmRpbmcgdGhlIGRyYWcgc2Vzc2lvbiB3aXRob3V0IHBlcmZvcm1pbmcgYSBkcmFnIG9wZXJh
dGlvbi4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZpZXc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGRlYWxsb2NdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcGhhc2VdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmg6IENvcGll
ZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1t
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8ubW06IEFkZGVk
LgorCisgICAgICAgIE1vY2sgb2JqZWN0IGNvbmZvcm1pbmcgdG8gTlNEcmFnZ2luZ0luZm8gdGhh
dCBpcyBwYXNzZWQgdG8gV0tXZWJWaWV3IHdoZW4gaW52b2tpbmcgLWRyYWdnaW5nVXBkYXRlZDos
CisgICAgICAgIC1kcmFnZ2luZ0VudGVyZWQ6IGFuZCAtZHJhZ2dpbmdFeGl0ZWQ6LgorCisgICAg
ICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgt
W1Rlc3REcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtU
ZXN0RHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2lu
Z0luZm8gc2V0RHJhZ2dpbmdTb3VyY2U6XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8g
ZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hP
cHRpb25zOnVzaW5nQmxvY2s6XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dp
bmdEZXN0aW5hdGlvbldpbmRvd10pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIGRyYWdn
ZWRJbWFnZV0pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIHNldERyYWdnZWRJbWFnZTpd
KToKKyAgICAgICAgKC1bVGVzdERyYWdnaW5nSW5mbyBzbGlkZURyYWdnZWRJbWFnZVRvOl0pOgor
ICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb246XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gcmVzZXRTcHJpbmdM
b2FkaW5nXSk6CisKKyAgICAgICAgRW1wdHkgbWV0aG9kIHN0dWJzLCB0byBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgZnV0dXJlIGFzIG5lZWRlZC4KKwogMjAxOC0wOC0xMCAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0LXBhdGNoIHNldHVwLWdpdC1jbG9u
ZSBzaG91bGQgc2V0IEdpdCBjb3JlIGVkaXRvciB0byBjb21taXQtbG9nLWVkaXRvcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxOThlYjdkN2RlN2M0NzUxYmUwZjdlZjY2YTA5MTc5ZjQ4YjRl
NWRjLi44MmNkOWY5NDRmZWIyMjQ0MDBhNzc1MGMyMmViMzdjNGU5NmQ1ZjFmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzAzLDcgKzMwMyw2IEBACiAJCTZCRkQyOTRDMUQ1RTZDMUQwMDhF
Qzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRT
ZXQuY3BwICovOyB9OwogCQk3NTFCMDVENjFGOEVBQzQxMDAyOEEwOUUgLyogRGF0YWJhc2VUcmFj
a2VyVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc1MUIwNUQ1MUY4RUFDMUEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNrZXJUZXN0Lm1tICovOyB9
OwogCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTRDRUM4MDFGNjcy
MkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi87IH07Ci0JCTc2NDMyMkQ3MUI2
MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY0MzIyRDUxQjYxQ0NBNDAw
MjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi87IH07CiAJCTc2NzM0
OTlEMTkzMEM1QkIwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25h
bExvYWRfYnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZh
aWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRGMTU0NzY3
RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYx
RkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OwpAQCAtNjYwLDcgKzY1OSw2
IEBACiAJCUExNzk5MThCMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk5MTg5MUUx
Q0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCAqLzsgfTsKIAkJQTE3RUFDNTUy
MDgzMDVBMDAwODRCNDFCIC8qIGZpbmQucGRmIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0VBQzU0MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5k
LnBkZiAqLzsgfTsKIAkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODBDMEY5
MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi87IH07Ci0JCUExODE5QjEzMjA4
OTc1RDMwMEMwOUI4MyAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgxOUIxMjIwODk0RDA0MDBD
MDlCODMgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi87IH07CiAJCUExQzRGQjczMUJBQ0Qx
Q0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMu
cGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzLm1tICovOyB9OwogCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xv
YWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi87IH07CkBAIC04
MTMsNiArODExLDkgQEAKIAkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5w
dXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NUUxNTcyMjExMkNFMjkwMDMwN0U4MiAvKiBLZXlib2FyZElucHV0VGVzdHNJT1MubW0g
Ki87IH07CiAJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUUxNTc1
MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJRjQ2MTI4
QjcyMTFDOEVENTAwRDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4QjYyMTFDOEVENTAw
RDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tICovOyB9OworCQlGNDYxMjhDQjIx
MUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NjEyOENBMjExRDQ3NTEwMEQ5RkFEQiAvKiBU
ZXN0RHJhZ2dpbmdJbmZvLm1tICovOyB9OworCQlGNDYxMjhENDIxMUU0MEZEMDBEOUZBREIgLyog
bGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxp
bmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sICovOyB9OworCQlGNDYxMjhENzIxMUU0ODlDMDBE
OUZBREIgLyogRHJhZ0FuZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NjEyOEQ2MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJv
cFRlc3RzLm1tICovOyB9OwogCQlGNDY0QUY5MjIwQkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5n
UHJvZ3Jlc3NUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NjRBRjkxMjBCQjY2RUEwMDdGOUIxOCAvKiBSZW5kZXJpbmdQcm9ncmVzc1Rlc3Rz
Lm1tICovOyB9OwogCQlGNDY4NDlCRTFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVz
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY4
NDlCRDFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi87IH07CiAJCUY0
Njg0OUMwMUVFRjVFRjMwMEI5MzdGRSAvKiByaWNoLWFuZC1wbGFpbi10ZXh0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2ODQ5QkYx
RUVGNUVEQzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCAqLzsgfTsKQEAgLTgy
OCw3ICs4MjksNyBAQAogCQlGNEFCNTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdn
YWJsZS1kaXYuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1k
aXYuaHRtbCAqLzsgfTsKIAkJRjRCODI1RDgxRUY0REJGQjAwNkU0MTdGIC8qIGNvbXByZXNzZWQt
ZmlsZXMuemlwIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0QjgyNUQ2MUVGNERCRDQwMDZFNDE3RiAvKiBjb21wcmVzc2VkLWZpbGVzLnppcCAq
LzsgfTsKIAkJRjRCODZENEYyMEJDRDVCMjAwOTlBN0U2IC8qIHBhaW50LXNpZ25pZmljYW50LWFy
ZWEtbWlsZXN0b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjRCODZENEUyMEJDRDU5NzAwOTlBN0U2IC8qIHBhaW50LXNpZ25pZmlj
YW50LWFyZWEtbWlsZXN0b25lLmh0bWwgKi87IH07Ci0JCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5
OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFn
QW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLzsgfTsKKwkJRjRCRkE2OEUxRTRBRDA4MDAwMTU0
Mjk4IC8qIExlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5
RHJhZ0FuZERyb3BUZXN0cy5tbSAqLzsgfTsKIAkJRjRDMkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8q
IGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEMyQUIyMTFERDZEOTQxMDBFMDZENUIgLyog
ZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovOyB9OwogCQlGNEM4Nzk3RjIwNTlEOEQz
MDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Ny
b2xsVmlld0luc2V0VGVzdHMubW0gKi87IH07CiAJCUY0Q0Q3NEM2MjBGREFDRkEwMERFMzc5NCAv
KiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRl
eHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLzsgfTsKQEAgLTgzOSw2ICs4NDAsOCBAQAogCQlG
NEQ1RTRFODFGMEM1RDM4MDA4QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RDVFNEU3MUYwQzVEMjcwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwg
Ki87IH07CiAJCUY0RDY1REE4MUY1RTQ3MDQwMDlEOEMyNyAvKiBzZWxlY3RlZC10ZXh0LWltYWdl
LWxpbmstYW5kLWVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENjVEQTcxRjVFNDZDMDAwOUQ4QzI3IC8qIHNlbGVjdGVk
LXRleHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCAqLzsgfTsKIAkJRjRERUY2RUQxRTlC
NERCNjAwNDhFRjYxIC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRERUY2RUMxRTlCNEQ5
NTAwNDhFRjYxIC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgKi87IH07CisJCUY0RTBB
MjhCMjExRTRBMkIwMEFGN0M3RiAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDYxMjhEODIxMUU0
OTYzMDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi87IH07CisJCUY0RTBBMjhG
MjExRTVENUIwMEFGN0M3RiAvKiBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFMEEyOEUyMTFFNUQ1QjAwQUY3QzdG
IC8qIERyYWdBbmREcm9wVGVzdHNNYWMubW0gKi87IH07CiAJCUY0RTNEODA4MjBGNzBCQjkwMDdC
NThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFM0Q4MDcyMEY3
MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAq
LzsgfTsKIAkJRjRGMTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93
LXBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1u
b3ctcGxheWluZy5odG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3
QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsg
fTsKQEAgLTkyMSw5ICs5MjQsNiBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlDRDU3Nzc5
QzIxMUNFOTFGMDAxQjM3MUUgLyogYXVkaW8td2l0aC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKLQkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8td2l0aC1h
dWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJQ0Q1Nzc3
OTkyMTFDRTBFNDAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyog
YWNjZXB0c0ZpcnN0TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4
NzFDODkyNUEwMDBBNTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC05
NDAsNiArOTQwLDcgQEAKIAkJCQk3QzlFRDk4QjE3QTE5RjRCMDBFNERDMzMgLyogYXR0cmlidXRl
ZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzEz
N0U0QjIxMTI0RDAxMDAyQkVFQTQgLyogQXR0clN0eWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQ0Q5RTI5MkUxQzkwQzMzRjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQlDRDU3Nzc5QzIxMUNFOTFGMDAxQjM3MUUgLyogYXVkaW8t
d2l0aC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NkUxODJERjE1
NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDFBQjk5RjFFRjQ2OTZCMDA4M0ZBMDggLyogYXV0b2ZvY3VzLWNvbnRl
bnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTkzQ0ZBODY3MUNFQjlF
MzgwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0LWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xMDE0LDcgKzEwMTUsNyBAQAogCQkJCTkzMkFFNTNEMUQzNzEwNDcwMDVERkZB
RiAvKiBmb2N1cy1pbnB1dHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTdFOEIz
NjE4MTIwQjJGMDBBRUI3NEEgLyogRnJhZ21lbnROYXZpZ2F0aW9uLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250
ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQlBMTgxOUIxMzIwODk3
NUQzMDBDMDlCODMgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJRjRFMEEyOEIyMTFFNEEyQjAwQUY3QzdGIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0RjQwNUJDMUQ0QzBEMUMwMDdBOTcwNyAv
KiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUNENzhFMTFFMURCN0VFMkEwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVs
ZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzRkJEMUI0QTFEM0Q2NkFCMDBF
NkQ2RkEgLyogRnVsbHNjcmVlbkxheW91dENvbnN0cmFpbnRzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xMDg2LDYgKzEwODcsNyBAQAogCQkJCUMyNUNDQTBCMUU1MTQwQzEwMDI2Q0I4
QSAvKiBMaW5lQnJlYWtpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
NjFFRjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNDFBQjlBNzFFRjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtdGFyZ2V0LWRp
di5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0NjEyOEQ0MjExRTQwRkQwMEQ5RkFE
QiAvKiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk4MzYxRjE3ODFFNjEwQjRFMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJp
YnV0ZS13aXRoLXNsYXNoZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzQ5RDND
NDFEQjk3MjhFMDA0QTlGNjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OEU2NDc5MTYzMjcwNzQwMEI2QzY3NiAvKiBsaW5r
LXdpdGgtdGl0bGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTExNzIsNiArMTE3NCw3
IEBACiAJCQkJRjQxQUI5QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8q
IHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8t
d2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
Q0RDOEU0OTQxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NTFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0
aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0QzMjFCMDQxRTNBODVGQTAw
RUIyMUM4IC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8tYW5kLXdlYmF1ZGlvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCkBAIC0xMTgwLDYgKzExODMsNyBAQAogCQkJCUNEQzhFNDk2MUJDNkYx
MDgwMDU5NEZFQyAvKiB2aWRlby13aXRob3V0LWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQ0RDOEU0OTcxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8u
bXA0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTA3Q0QzMkY4MjA2NUI3MkIwMDY0QTRCRSAv
KiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUNENTc3Nzk5MjExQ0UwRTQw
MDFCMzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTFDMkI4MTg2MUM4OTI1OUQwMEE1NTI5RiAvKiB3ZWJmb250Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURC
Q2xlYW51cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTE3MTRFQjUxQ0Y4Qzc4
QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0xNTgzLDcgKzE1ODcsNiBAQAogCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAz
OUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvRmls
bEF2YWlsYWJsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1
OUM1OTAwOUVGMDZFIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2Fj
aGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcw
MDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1
c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNzY0MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0
ZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRh
cnlUeXBpbmdBdHRyaWJ1dGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njcz
NDk5NzE5MzAxNkRDMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3BMb2Fk
aW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0Rp
ZEZhaWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUxODJEOTE1NDc1NTAxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3ODksNyArMTc5Miw2IEBACiAJCUExNzk5MThBMUUxQ0EyNDEwMEE1MDVF
RCAvKiBTaGFyZWRCdWZmZXJUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZEJ1ZmZlclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3RUFD
NTQyMDgzMDU2RTAwODRCNDFCIC8qIGZpbmQucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gZmluZC5wZGY7IHBhdGgg
PSBUZXN0cy9XZWJLaXQvZmluZC5wZGY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
QTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJ1bk9wZW5QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTE4MTlCMTIyMDg5NEQwNDAwQzA5QjgzIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImZ1bGwtcGFnZS1kcm9wem9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTE4QUE4Q0MxQzNGQTIxODAwOUIyQjk3IC8qIENvbnRlbnRGaWx0ZXJpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEZpbHRlcmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1RDE4REQzREI3MDBCNUVBOEEgLyogRG93bmxv
YWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNEZCNkMxQkFDQ0U1MDAwMzc0MkQw
IC8qIFF1aWNrTG9vay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1aWNrTG9vay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDYsNiArMjA0
OCwxMiBAQAogCQlGNDVFMTU3NTIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0SW5wdXREZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2MTI4QjQyMTFDODYxQTAwRDlGQURCIC8qIERyYWdBbmRE
cm9wU2ltdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERyYWdBbmRE
cm9wU2ltdWxhdG9yLmg7IHBhdGggPSBjb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDYxMjhCNjIxMUM4RUQ1MDBEOUZBREIgLyogRHJh
Z0FuZERyb3BTaW11bGF0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJv
cFNpbXVsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4Qzky
MTFENDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVz
dERyYWdnaW5nSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDYxMjhDQTIx
MUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFRlc3REcmFnZ2luZ0luZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
NjEyOEQxMjExRTJEMjUwMEQ5RkFEQiAvKiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NjEyOEQ1MjExRTQ4OUMwMEQ5RkFE
QiAvKiBEcmFnQW5kRHJvcFRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdBbmREcm9wVGVzdHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURC
IC8qIERyYWdBbmREcm9wVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJv
cFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDYxMjhEODIxMUU0OTYz
MDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdl
LWRyb3B6b25lLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDY0QUY5MTIw
QkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlbmRlcmluZ1Byb2dyZXNzVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJUGFzdGVib2FyZFRlc3RzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDY4NDlCRjFFRUY1RURDMDBCOTM3RkUgLyogcmljaC1hbmQt
cGxhaW4tdGV4dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDYyLDcgKzIwNzAsNyBAQAogCQlGNEFCNTc4
OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCODI1RDYxRUY0REJENDAwNkU0MTdGIC8qIGNvbXByZXNz
ZWQtZmlsZXMuemlwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gYXJjaGl2ZS56aXA7IHBhdGggPSAiY29tcHJlc3NlZC1maWxlcy56aXAiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEI4NkQ0RTIwQkNENTk3MDA5OUE3RTYgLyogcGFpbnQt
c2lnbmlmaWNhbnQtYXJlYS1taWxlc3RvbmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJwYWludC1zaWduaWZpY2FudC1hcmVhLW1pbGVzdG9uZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9w
UGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5RHJhZ0Fu
ZERyb3BUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDMkFCMjExREQ2
RDk0MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Ny
b2xsVmlld0luc2V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3SW5z
ZXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDRDc0QzUyMEZEQUNG
NTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJ0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3NCw2ICsyMDgyLDcgQEAKIAkJRjRENUU0RTcxRjBDNUQyNzAw
OEMxQTQ5IC8qIGRyYWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkcmFn
c3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEQ2NURBNzFGNUU0NkMwMDA5RDhDMjcgLyogc2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFu
ZC1lZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNlbGVjdGVkLXRl
eHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0REVGNkVDMUU5QjREOTUwMDQ4RUY2MSAvKiBpbWFnZS1pbi1saW5rLWFuZC1pbnB1
dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImltYWdlLWluLWxpbmstYW5kLWlu
cHV0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEUwQTI4RTIxMUU1RDVC
MDBBRjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERyYWdBbmREcm9wVGVzdHNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RTNEODA3MjBGNzA4RTQwMDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRp
Y2xlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2lnbmlmaWNhbnQtdGV4dC1t
aWxlc3RvbmUtYXJ0aWNsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRG
MTM3OTExRDlCNjgzMjAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5
aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY0MDVCQTFENEMwQ0Y4
MDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8t
d2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTYsNiAr
MjMwNSw4IEBACiAJCQkJNTE4RUU1MTYyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xv
YWRpbmcubW0gKi8sCiAJCQkJNTE4RUU1MTcyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVy
c0xvYWRpbmdQbHVnaW4ubW0gKi8sCiAJCQkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThBIC8qIERv
d25sb2FkLm1tICovLAorCQkJCUY0NjEyOEQ1MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJv
cFRlc3RzLmggKi8sCisJCQkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9w
VGVzdHMubW0gKi8sCiAJCQkJQTE1NTAyMjgxRTA1MDIwQjAwQTI0QzU3IC8qIER1cGxpY2F0ZUNv
bXBsZXRpb25IYW5kbGVyQ2FsbHMubW0gKi8sCiAJCQkJRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5
IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi8sCiAJCQkJQ0RBMjlCMjgyMEZEMkE5OTAwRjE1Q0VE
IC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbSAqLywKQEAgLTI1ODcsNiArMjU5OCw3IEBA
CiAJCQkJNUM5RTU5NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2Fs
ICovLAogCQkJCUY0ODU2Q0EyMUU2NDk4QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQu
aHRtbCAqLywKIAkJCQkzNzYwQzRGMjIxMTI0QkQwMDAyMzNBQ0MgLyogQXR0clN0eWxlLmh0bWwg
Ki8sCisJCQkJQ0Q1Nzc3OUEyMTFDRTZCNzAwMUIzNzFFIC8qIGF1ZGlvLXdpdGgtd2ViLWF1ZGlv
Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTgxRUY0NjkyQzAwODNGQTA4IC8qIGF1dG9mb2N1cy1jb250
ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQk5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyogYXV0
b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sICovLAogCQkJCTJFMTRBNTI4MUQzRkU4QjgwMDEwRjM1
QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8sCkBAIC0yNjI4LDYgKzI2
NDAsNyBAQAogCQkJCUExN0VBQzU0MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5kLnBkZiAqLywKIAkJ
CQlGNDNFM0JDMDIwREFEQjgwMDBBNEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovLAogCQkJ
CTkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAvKiBmb2N1cy1pbnB1dHMuaHRtbCAqLywKKwkJCQlG
NDYxMjhEODIxMUU0OTYzMDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8sCiAJ
CQkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRl
by13aXRoLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q3OEUxMUIxREI3RUEzNjAwMTRBMkRFIC8qIEZ1
bGxzY3JlZW5EZWxlZ2F0ZS5odG1sICovLAogCQkJCTNGQkQxQjQ5MUQzOUQxREIwMEU2RDZGQSAv
KiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMuaHRtbCAqLywKQEAgLTI2ODIsNiArMjY5NSw3
IEBACiAJCQkJQzI1Q0NBMEExRTUxM0Y0OTAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5odG1sICov
LAogCQkJCUY0MUFCOTk2MUVGNDY5MkMwMDgzRkEwOCAvKiBsaW5rLWFuZC1pbnB1dC5odG1sICov
LAogCQkJCUY0MUFCOTlEMUVGNDY5MkMwMDgzRkEwOCAvKiBsaW5rLWFuZC10YXJnZXQtZGl2Lmh0
bWwgKi8sCisJCQkJRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxpbmstaW4taWZyYW1lLWFu
ZC1pbnB1dC5odG1sICovLAogCQkJCThDMTBBRjk3MjA2NDY3ODMwMDE4RkQ5MCAvKiBsb2NhbHN0
b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi8sCiAJCQkJNTFFNkE4OTUxRDJGMUM3NzAw
QzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi8sCiAJCQkJNDZDNTE5RTIxRDM1NjI5
NjAwREFBNTFBIC8qIExvY2FsU3RvcmFnZU51bGxFbnRyaWVzLmh0bWwgKi8sCkBAIC0yNzI0LDEz
ICsyNzM4LDEyIEBACiAJCQkJRjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1k
ZWZlcnJlZC1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4M0ZBMDggLyog
dGV4dGFyZWEtdG8taW5wdXQuaHRtbCAqLywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEg
LyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKKwkJCQlDRDU3Nzc5QjIx
MUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8s
CisJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8s
CiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NL
aWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJCQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8q
IFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5odG1sICovLAogCQkJCTJFMTMxQzE3MUQ4M0E5
N0UwMDFCQTM2QyAvKiB3aWRlLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywK
LQkJCQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywK
LQkJCQlDRDU3Nzc5QTIxMUNFNkI3MDAxQjM3MUUgLyogYXVkaW8td2l0aC13ZWItYXVkaW8uaHRt
bCAqLywKLQkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1h
bmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTIzLDYgKzMxMzYsOCBAQAogCQkJCUMwODEyMjQ0
MTNGQzE5RUMwMERDMzlBRSAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3cubSAq
LywKIAkJCQkyOUFCOEFBMzE2NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZS5oICovLAogCQkJCTI5QUI4QUEyMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tICovLAorCQkJCUY0NjEyOEM5MjExRDQ3NTEwMEQ5
RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLmggKi8sCisJCQkJRjQ2MTI4Q0EyMTFENDc1MTAwRDlG
QURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gKi8sCiAJCQkJQzA4NTg3QkUxM0ZFOTU2QzAwMUVG
NEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5oICovLAogCQkJCUMwODU4N0JEMTNGRTk1NkMwMDFF
RjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rlc3QubW0gKi8sCiAJCQkpOwpAQCAtMzE2Nyw3ICszMTgy
LDcgQEAKIAkJCQk0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLywKIAkJ
CQkzNzUxQUY3QTE2OTUxOEY4MDA3NjQzMTkgLyogRE9NTm9kZUZyb21KU09iamVjdC5tbSAqLywK
IAkJCQkzN0RDNjc4QjE0MEQ3QzUwMDBBQkNDREIgLyogRE9NUmFuZ2VPZlN0cmluZy5tbSAqLywK
LQkJCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVz
dHMubW0gKi8sCisJCQkJRjRFMEEyOEUyMTFFNUQ1QjAwQUY3QzdGIC8qIERyYWdBbmREcm9wVGVz
dHNNYWMubW0gKi8sCiAJCQkJQzA3RTZDQUUxM0ZENjc2NTAwMzhCMjJCIC8qIER5bmFtaWNEZXZp
Y2VTY2FsZUZhY3Rvci5tbSAqLywKIAkJCQkxQTlGQjZDQzFDQTM0QkU1MDA5NjYxMjQgLyogRWFy
bHlLVk9DcmFzaC5tbSAqLywKIAkJCQk0QkI0MTYwMzE2ODE1RjkxMDA4MjQyMzggLyogRWxlbWVu
dEF0UG9pbnRJbldlYkZyYW1lLm1tICovLApAQCAtMzE4MCw2ICszMTk1LDcgQEAKIAkJCQlDNTA3
RThBNjE0QzY1NDVCMDA1RDZCM0IgLyogSW5zcGVjdG9yQmFyLm1tICovLAogCQkJCTU3RjEwRDky
MUM3RTdCMzgwMEVDREYzMCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tICovLAogCQkJ
CTRCQjQxNjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5t
bSAqLywKKwkJCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJhZ0FuZERyb3BU
ZXN0cy5tbSAqLywKIAkJCQk3QTdCMEU3RTFFQUZFNDU0MDA2QUI4QUUgLyogTGltaXRUaXRsZVNp
emUubW0gKi8sCiAJCQkJNTc5MDFGQUUxQ0FGMTM3MTAwRUQ2NEY5IC8qIExvYWRJbnZhbGlkVVJM
UmVxdWVzdC5tbSAqLywKIAkJCQlDREEzMTU5NjFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLm1tICovLApAQCAtMzIxNiw3ICszMjMyLDYgQEAKIAkJCQkxQTdC
RkMwQTE3MUEwQkRCMDBCQzVGNjQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSAqLywKIAkJCQlB
NUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0g
Ki8sCiAJCQkJRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdU
ZXN0cy5tbSAqLywKLQkJCQk3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5
VHlwaW5nQXR0cmlidXRlcy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyMzYsNyArMzI1MSw2IEBACiAJCQkJRjRGQTkxODIxRTYx
ODU2NjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3Bh
Y2UuaHRtbCAqLywKIAkJCQkxQTdFOEIzNTE4MTIwOTM2MDBBRUI3NEEgLyogRnJhZ21lbnROYXZp
Z2F0aW9uLmh0bWwgKi8sCiAJCQkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFn
ZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKLQkJCQlBMTgxOUIxMjIwODk0RDA0MDBDMDlCODMg
LyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8sCiAJCQkJQ0RCRkNDNDIxQTlGRjQ0ODAwQTdC
NjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi8sCiAJCQkJOUI0RjhGQTYx
NTlENTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8sCiAJCQkJ
OUIyNkZDQjQxNTlEMTVFNzAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5o
dG1sICovLApAQCAtMzcwOSwxMCArMzcyMywxMSBAQAogCQkJCTUxOEVFNTE4MjBBNzhDRTIwMEUw
MjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdG
MjMxQTQxMUFGNjAwNDQ3QzRDIC8qIERvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFRUUxQTQxMUFFNjAwNDQ3QzRDIC8qIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0Fu
ZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQ0RjNCNjFFNEUy
QkNCMDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNDYxMjhCNzIxMUM4RUQ1MDBEOUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlGNDYxMjhENzIxMUU0ODlDMDBEOUZBREIgLyogRHJhZ0Fu
ZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDRGM0I5MUU0RTM2RTQwMEJCMjc2
NyAvKiBEcmFnQW5kRHJvcFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjRFMEEyOEYy
MTFFNUQ1QjAwQUY3QzdGIC8qIERyYWdBbmREcm9wVGVzdHNNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTU1MDIyQTFFMDUwMjBCMDBBMjRDNTcgLyogRHVwbGljYXRlQ29tcGxldGlvbkhhbmRs
ZXJDYWxscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJFMUE0MTFBN0UwMDQ0N0M0QyAv
KiBEeW5hbWljRGV2aWNlU2NhbGVGYWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBCRjg5
MjFERDU5OUI2MDBCMDAzMjggLyogRWFybHlLVk9DcmFzaC5tbSBpbiBTb3VyY2VzICovLApAQCAt
Mzc0OCw3ICszNzYzLDYgQEAKIAkJCQlDRDc4RTExRDFEQjdFQTY2MDAxNEEyREUgLyogRnVsbHNj
cmVlbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkQxRDBBNjUwQzAwRkVC
Q0YzIC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
REJGQ0M0NTFBOUZGNDUzMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0g
aW4gU291cmNlcyAqLywKLQkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVk
QXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNEQjc5NjkxRUY2M0IzQzAw
QkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY4MUE0MTFB
RTYwMDQ0N0M0QyAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MzFFRkZG
NjFFN0I1RThEMDBEMkVCQjggLyogR2VvbG9jYXRpb24ubW0gaW4gU291cmNlcyAqLywKQEAgLTM3
OTksNiArMzgxMyw3IEBACiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJk
SW5wdXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA2MUE0MTFBRTYwMDQ0
N0M0QyAvKiBMYXlvdXRNaWxlc3RvbmVzV2l0aEFsbENvbnRlbnRJbkZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFn
QW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E2NkJEQjYxRUFGMTRFRjAwQ0ND
OTI0IC8qIExpbWl0VGl0bGVTaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBN0IwRTdGMUVB
RkU0QzMwMDZBQjhBRSAvKiBMaW1pdFRpdGxlU2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMy
NUNDQTA2MUU1MTM4MEIwMDI2Q0I4QSAvKiBMaW5lQnJlYWtpbmcubW0gaW4gU291cmNlcyAqLywK
QEAgLTM4NjcsNiArMzg4Miw3IEBACiAJCQkJN0NDRTdFQTcxQTQxMUExMzAwNDQ3QzRDIC8qIFBs
YXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzQkFFRThEMUVGNDYyNTUw
MERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YyNjFBNDExQUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAq
LywKKwkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVkQXVkaW9CdWZmZXJT
aXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MxQUY3OTUxRThEQ0JBQjAwMjY0NUI5IC8qIFBy
ZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQjFBNDEx
QUU2MDA0NDdDNEMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjJDMUE0MTFCMTAwMDQ0N0M0QyAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9S
ZXNpemluZy5tbSBpbiBTb3VyY2VzICovLApAQCAtMzkzNiw2ICszOTUyLDcgQEAKIAkJCQkxQzcz
NEI1MzIwNzg4QzQ4MDBGNDMwRUEgLyogU3lzdGVtQ29sb3JzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMTYxQTQxMUFFNjAwNDQ3QzRDIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUE5MUE0MTFBMUQwMDQ0N0M0QyAvKiBUZXN0QnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ2MTI4Q0IyMTFENDc1MTAw
RDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3
NjIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRDFDMDRBNzFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUExNEZDNTkwMUI4QUUzNkYwMEQxMDdFQiAvKiBUZXN0UHJv
dG9jb2wubW0gaW4gU291cmNlcyAqLywKQEAgLTQwMzIsNyArNDA0OSw2IEBACiAJCQkJRjRGQTkx
ODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hv
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dl
YlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKLQkJCQk3NjQzMjJENzFCNjFDQ0MzMDAy
NEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RyYWdBbmREcm9wVGVzdHMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNmVkMjBhNzY2MDUyNWYx
MzUwNGE4YzA0OTVmZWE1MGI4YTY5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMuaApAQCAtMCwwICsxLDI2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTcyZGIzZWE2ZjA0MDQ2M2IxODU3OTA3MDY4N2I3NjVkMDhhNzk3NwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BU
ZXN0cy5tbQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
KworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEcmFnSW1hZ2VMb2NhdGlvbkZvckxpbmtJblN1YmZy
YW1lKQoreworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXdGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDQwMCwgNDAw
KV0pOworICAgIFtbc2ltdWxhdG9yIHdlYlZpZXddIHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAImxpbmstaW4taWZyYW1lLWFuZC1pbnB1dCJdOworICAgIFtzaW11bGF0b3IgcnVuRnJv
bTpOU01ha2VQb2ludCgyMDAsIDM3NSkgdG86TlNNYWtlUG9pbnQoMjAwLCAxMjUpXTsKKworICAg
IEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFtbc2ltdWxhdG9yIHdl
YlZpZXddIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdpbnB1dCcpLnZhbHVlIl0pOworCisjaWYgUExBVEZPUk0oTUFDT1MpCisgICAgRVhQRUNU
X1RSVUUoTlNQb2ludEluUmVjdChbc2ltdWxhdG9yIGluaXRpYWxEcmFnSW1hZ2VMb2NhdGlvbklu
Vmlld10sIE5TTWFrZVJlY3QoMCwgMjUwLCA0MDAsIDI1MCkpKTsKKyNlbmRpZgorfQorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25l
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2Z1bGwtcGFnZS1k
cm9wem9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MzE5NzE4Yjk5ZTZjNGY0MWFmMjU1MWI0MDc0NzJk
ZmExNDA2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2Z1bGwtcGFnZS1kcm9wem9uZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoIj4KKzxib2R5IHN0eWxlPSJ3aWR0aDogMTAwdnc7IGhlaWdodDogMTAwdmg7IG1hcmdpbjog
MDsiCisgICAgb25kcmFnZW50ZXI9IndpbmRvdy5vYnNlcnZlZERyYWdFbnRlciA9IHRydWU7IHJl
dHVybiBmYWxzZTsiCisgICAgb25kcmFnb3Zlcj0id2luZG93Lm9ic2VydmVkRHJhZ092ZXIgPSB0
cnVlOyByZXR1cm4gZmFsc2U7IgorICAgIG9uZHJvcD0id2luZG93Lm9ic2VydmVkRHJvcCA9IHRy
dWU7IHJldHVybiBmYWxzZTsiPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sCmlu
ZGV4IDIwYmNlMjUwOGEwNTVjMjYwZTQ0NmQzOTI2NmI1M2NiOTdjNjg2MjkuLjk1MWNmNWNkMzIx
NWUwNWZjYjhjNjEyYWEyOTA3YTBkZjYwM2I5ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQuaHRtbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWluLWxpbmstYW5k
LWlucHV0Lmh0bWwKQEAgLTI1LDYgKzI1LDYgQEAKIDwvaGVhZD4KIAogPGJvZHk+Ci0gICAgPGRp
dj48YSBpZD0ibGluayIgaHJlZj0iaHR0cHM6Ly93d3cuYXBwbGUuY29tIj48aW1nIHNyYz0iaWNv
bi5wbmciPjwvaW1nPjwvYT48L2Rpdj4KLSAgICA8ZGl2PjxpbnB1dCBpZD0iZWRpdG9yIj48L2lu
cHV0PjwvZGl2PgorICAgIDxkaXYgaWQ9InRvcCI+PGEgaWQ9ImxpbmsiIGhyZWY9Imh0dHBzOi8v
d3d3LmFwcGxlLmNvbSI+PGltZyBzcmM9Imljb24ucG5nIj48L2ltZz48L2E+PC9kaXY+CisgICAg
PGRpdiBpZD0iYm90dG9tIj48aW5wdXQgaWQ9ImVkaXRvciI+PC9pbnB1dD48L2Rpdj4KIDwvYm9k
eT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGlu
ay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2xpbmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTgz
ZTZlZjk1Yzg1M2IzMDE2MWU2NTQzMzQ1ZGYwZjFhZDQyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2xpbmstaW4taWZyYW1lLWFuZC1p
bnB1dC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEiPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKworaWZyYW1lLCBpbnB1dCB7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgaGVpZ2h0OiAyNTBweDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBm
b250LXNpemU6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0Pjwv
aW5wdXQ+Cis8aWZyYW1lIHNyY2RvYz0iPGEgaHJlZj0naHR0cHM6Ly93d3cuYXBwbGUuY29tLycg
c3R5bGU9J2ZvbnQtc2l6ZTogMTAwcHg7Jz5MaW5rIHRvIGFwcGxlLmNvbTwvYT4iPgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BQ
YXN0ZWJvYXJkVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5k
RHJvcFBhc3RlYm9hcmRUZXN0cy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgx
YmJhZTBjN2FlNTQyNTI3NGNhYThhM2ExZjZmNGEwMTQ0NGRjZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDI4OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgUExBVEZPUk0o
TUFDKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgotI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4KLSNpbXBvcnQgPFdlYktpdC9X
ZWJWaWV3Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotQGludGVyZmFjZSBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgOiBOU09iamVj
dDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gewotICAgIEJsb2NrUHRyPHZvaWQgKHZvaWQpPiBfY29t
cGxldGlvbkJsb2NrOwotfQotKyAoaW5zdGFuY2V0eXBlKWxpc3RlbmVyV2l0aENvbXBsZXRpb25C
bG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxvY2s7Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIKLQotKyAoaW5zdGFuY2V0eXBlKWxp
c3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxv
Y2sKLXsKLSAgICByZXR1cm4gW1tbRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGFsbG9jXSBp
bml0V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdIGF1dG9yZWxlYXNlXTsKLX0K
LQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9j
a190KWNvbXBsZXRpb25CbG9jawotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKQotICAg
ICAgICBfY29tcGxldGlvbkJsb2NrID0gY29tcGxldGlvbkJsb2NrOwotCi0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKLXsKLSAgICBpZiAoX2NvbXBsZXRpb25CbG9jaykK
LSAgICAgICAgX2NvbXBsZXRpb25CbG9jaygpOwotfQotQGVuZAotCi1AaW50ZXJmYWNlIERyYWdT
b3VyY2UgOiBOU09iamVjdAotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza0ZvckxvY2FsOihCT09MKWZsYWc7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBEcmFn
U291cmNlCi0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tG
b3JMb2NhbDooQk9PTClmbGFnCi17Ci0gICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7Ci19
Ci0KLUBlbmQKLQotQGludGVyZmFjZSBEcmFnSW5mbyA6IE5TT2JqZWN0PE5TRHJhZ2dpbmdJbmZv
PiB7Ci0gICAgTlNQb2ludCBfbGFzdE1vdXNlUG9zaXRpb247Ci0gICAgUmV0YWluUHRyPE5TSW1h
Z2U+IF9pbWFnZTsKLSAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBfcGFzdGVib2FyZDsKLSAg
ICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gX3NvdXJjZTsKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+
IF93aW5kb3c7Ci0gICAgTlNTaXplIF9vZmZzZXQ7Ci0gICAgTlNJbnRlZ2VyIF9udW1iZXJPZlZh
bGlkSXRlbXNGb3JEcm9wOwotfQotQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgbGFzdE1v
dXNlUG9zaXRpb247Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBEcmFnSW5mbwotCi0tIChpZClp
bml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0OihOU1NpemUpb2Zmc2V0IHBhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgc291cmNlOihEcmFnU291cmNlICopc291
cmNlIGRlc3RpbmF0aW9uV2luZG93OihOU1dpbmRvdyAqKWRlc3RpbmF0aW9uV2luZG93Ci17Ci0g
ICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX2ltYWdlID0gaW1hZ2U7Ci0g
ICAgICAgIF9wYXN0ZWJvYXJkID0gcGFzdGVib2FyZDsKLSAgICAgICAgX3NvdXJjZSA9IHNvdXJj
ZTsKLSAgICAgICAgX3dpbmRvdyA9IGRlc3RpbmF0aW9uV2luZG93OwotICAgICAgICBfb2Zmc2V0
ID0gb2Zmc2V0OwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTlNQb2ludClsYXN0
TW91c2VQb3NpdGlvbgotewotICAgIHJldHVybiBfbGFzdE1vdXNlUG9zaXRpb247Ci19Ci0KLS0g
KHZvaWQpc2V0TGFzdE1vdXNlUG9zaXRpb246KE5TUG9pbnQpbGFzdE1vdXNlUG9zaXRpb24KLXsK
LSAgICBfbGFzdE1vdXNlUG9zaXRpb24gPSBsYXN0TW91c2VQb3NpdGlvbjsKLX0KLQotLSAoTlNX
aW5kb3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93Ci17Ci0gICAgcmV0dXJuIF93aW5kb3cu
Z2V0KCk7Ci19Ci0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2sKLXsKLSAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKLX0KLQotLSAoTlNQb2ludClk
cmFnZ2luZ0xvY2F0aW9uCi17Ci0gICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKLX0KLQot
LSAoTlNQb2ludClkcmFnZ2VkSW1hZ2VMb2NhdGlvbgotewotICAgIHJldHVybiBOU01ha2VQb2lu
dChfbGFzdE1vdXNlUG9zaXRpb24ueCArIF9vZmZzZXQud2lkdGgsIF9sYXN0TW91c2VQb3NpdGlv
bi55ICsgX29mZnNldC5oZWlnaHQpOwotfQotCi0tIChOU0ltYWdlICopZHJhZ2dlZEltYWdlCi17
Ci0gICAgcmV0dXJuIF9pbWFnZS5nZXQoKTsKLX0KLQotLSAoTlNQYXN0ZWJvYXJkICopZHJhZ2dp
bmdQYXN0ZWJvYXJkCi17Ci0gICAgcmV0dXJuIF9wYXN0ZWJvYXJkLmdldCgpOwotfQotCi0tIChp
ZClkcmFnZ2luZ1NvdXJjZQotewotICAgIHJldHVybiBfc291cmNlLmdldCgpOwotfQotCi0tIChO
U0ludGVnZXIpZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcgotewotICAgIHJldHVybiAwOwotfQotCi0t
ICh2b2lkKXNsaWRlRHJhZ2dlZEltYWdlVG86KE5TUG9pbnQpc2NyZWVuUG9pbnQKLXsKLX0KLQot
LSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5T
VVJMICopZHJvcERlc3RpbmF0aW9uCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNEcmFn
Z2luZ0Zvcm1hdGlvbilkcmFnZ2luZ0Zvcm1hdGlvbgotewotICAgIHJldHVybiBOU0RyYWdnaW5n
Rm9ybWF0aW9uRGVmYXVsdDsKLX0KLQotLSAodm9pZClzZXREcmFnZ2luZ0Zvcm1hdGlvbjooTlNE
cmFnZ2luZ0Zvcm1hdGlvbilmb3JtYXRpb24KLXsKLX0KLQotLSAoQk9PTClhbmltYXRlc1RvRGVz
dGluYXRpb24KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpc2V0QW5pbWF0ZXNUb0Rl
c3RpbmF0aW9uOihCT09MKWZsYWcKLXsKLX0KLQotLSAoTlNJbnRlZ2VyKW51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3AKLXsKLSAgICByZXR1cm4gX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7Ci19
Ci0KLS0gKHZvaWQpc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDooTlNJbnRlZ2VyKW51bWJl
cgotewotICAgIF9udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbnVtYmVyOwotfQotCi0tICh2
b2lkKWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNFbnVtZXJhdGlvbk9wdGlv
bnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmlldyBjbGFzc2VzOihOU0FycmF5ICopY2xh
c3NBcnJheSBzZWFyY2hPcHRpb25zOihOU0RpY3Rpb25hcnkgKilzZWFyY2hPcHRpb25zIHVzaW5n
QmxvY2s6KHZvaWQgKF4pKE5TRHJhZ2dpbmdJdGVtICpkcmFnZ2luZ0l0ZW0sIE5TSW50ZWdlciBp
ZHgsIEJPT0wgKnN0b3ApKWJsb2NrCi17Ci19Ci0KLS0gKE5TU3ByaW5nTG9hZGluZ0hpZ2hsaWdo
dClzcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Ci17Ci0gICAgcmV0dXJuIE5TU3ByaW5nTG9hZGluZ0hp
Z2hsaWdodE5vbmU7Ci19Ci0KLS0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5nCi17Ci19Ci0KLUBl
bmQKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgTlNJbWFnZSAqZ2V0VGVz
dEltYWdlKCkKLXsKLSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50
c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRo
RXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLXN0YXRpYyBXZWJWaWV3ICp3ZWJWaWV3QWZ0ZXJQZXJmb3Jt
aW5nRHJhZ09wZXJhdGlvbihOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCi17Ci0gICAgUmV0YWlu
UHRyPFdlYlZpZXc+IGRlc3RpbmF0aW9uID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAgICBSZXRhaW5QdHI8TlNX
aW5kb3c+IGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29u
dGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgc3R5bGVNYXNrOjAgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW2hvc3RXaW5kb3cgc2V0RnJh
bWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwotICAgIFtbaG9zdFdpbmRvdyBjb250ZW50Vmll
d10gYWRkU3VidmlldzpkZXN0aW5hdGlvbi5nZXQoKV07Ci0gICAgX19ibG9jayBib29sIGlzRG9u
ZSA9IGZhbHNlOwotICAgIFtkZXN0aW5hdGlvbiBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpbRnJhbWVM
b2FkQ29tcGxldGlvbkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpeKCkgewot
ICAgICAgICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gc291cmNlID0gYWRvcHROUyhbW0RyYWdTb3Vy
Y2UgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgUmV0YWluUHRyPERyYWdJbmZvPiBpbmZvID0gYWRv
cHROUyhbW0RyYWdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOmdldFRlc3RJbWFnZSgpIG9mZnNl
dDpOU01ha2VTaXplKDAsIDApIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlLmdl
dCgpIGRlc3RpbmF0aW9uV2luZG93Omhvc3RXaW5kb3cuZ2V0KCldKTsKLSAgICAgICAgW2luZm8g
c2V0TGFzdE1vdXNlUG9zaXRpb246TlNNYWtlUG9pbnQoMCwgMjAwKV07Ci0gICAgICAgIFtkZXN0
aW5hdGlvbiBkcmFnZ2luZ0VudGVyZWQ6aW5mby5nZXQoKV07Ci0gICAgICAgIFtpbmZvIHNldExh
c3RNb3VzZVBvc2l0aW9uOk5TTWFrZVBvaW50KDIwMCwgMjAwKV07Ci0gICAgICAgIFtkZXN0aW5h
dGlvbiBkcmFnZ2luZ1VwZGF0ZWQ6aW5mby5nZXQoKV07Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUo
W2Rlc3RpbmF0aW9uIHBlcmZvcm1EcmFnT3BlcmF0aW9uOmluZm8uZ2V0KCldKTsKLSAgICAgICAg
aXNEb25lID0gdHJ1ZTsKLSAgICB9XV07Ci0gICAgW1tkZXN0aW5hdGlvbiBtYWluRnJhbWVdIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgcmV0dXJuIGRl
c3RpbmF0aW9uLmdldCgpOwotfQotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLCBE
cm9wVVRGOFBsYWluVGV4dCkKLXsKLSAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQ
YXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTpbQCJJIGFtIGEgV2ViS2l0LiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHRd
OwotCi0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHJlc3VsdGluZ1dlYlZpZXcgPSB3ZWJWaWV3QWZ0
ZXJQZXJmb3JtaW5nRHJhZ09wZXJhdGlvbihwYXN0ZWJvYXJkKTsKLSAgICBFWFBFQ1RfVFJVRShb
W3Jlc3VsdGluZ1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6
QCJkb2N1bWVudC5ib2R5LnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJJIGFtIGEgV2Vi
S2l0LiJdKTsKLX0KLQotVEVTVChEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cywgRHJvcEpQRUcp
Ci17Ci0gICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJv
YXJkV2l0aFVuaXF1ZU5hbWVdOwotICAgIE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2UoKTsK
LSAgICBOU0JpdG1hcEltYWdlUmVwICppbWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdl
UmVwV2l0aERhdGE6aWNvbi5USUZGUmVwcmVzZW50YXRpb25dOwotICAgIFtwYXN0ZWJvYXJkIHNl
dERhdGE6W2ltYWdlUmVwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHBy
b3BlcnRpZXM6QHsgTlNJbWFnZUNvbXByZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlwZToo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFR107Ci0KLSAgICBSZXRhaW5QdHI8V2ViVmll
dz4gcmVzdWx0aW5nV2ViVmlldyA9IHdlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9u
KHBhc3RlYm9hcmQpOwotICAgIEVYUEVDVF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2ltZycpLnRhZ05hbWUgPT09ICdJTUcnIl0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsKLX0K
LSAgICAKLSNpZiBXS19BUElfRU5BQkxFRAotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRl
c3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQotewotICAgIE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKLSAgICBb
cGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVyOm5p
bF07Ci0gICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCJmaWxlLW5hbWUiXSBmb3JU
eXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKV0pOwotICAgIGF1dG8gaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxv
Y10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1h
c2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbaG9z
dFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQb2ludCgwLCAwKV07Ci0gICAgW1tob3N0V2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZnVsbC1wYWdlLWRyb3B6b25lIl07
Ci0KLSAgICBhdXRvIGRyYWdTb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gZHJhZ0luZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8gYWxsb2NdIGluaXRX
aXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwgMCkgcGFzdGVib2Fy
ZDpwYXN0ZWJvYXJkIHNvdXJjZTpkcmFnU291cmNlLmdldCgpIGRlc3RpbmF0aW9uV2luZG93Omhv
c3RXaW5kb3cuZ2V0KCldKTsKLQotICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpO
U01ha2VQb2ludCgwLCAyMDApXTsKLSAgICBbd2ViVmlldyBkcmFnZ2luZ0VudGVyZWQ6ZHJhZ0lu
Zm8uZ2V0KCldOwotICAgIEVYUEVDVF9XS19TVFJFUShAIjEiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmRyYWdFbnRlcmVkRm9yVGVzdGluZyJdKTsKLQot
ICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgyMDAsIDIwMCld
OwotICAgIFt3ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpkcmFnSW5mby5nZXQoKV07Ci0gICAgRVhQ
RUNUX0VRKDFVLCBbZHJhZ0luZm8gbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcF0pOwotfQotCi0j
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdB
bmREcm9wVGVzdHNNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5k
RHJvcFRlc3RzTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMzc3MmE0NDUzMjg3YjQ2Nzc3NjU1ZGExN2Fl
Mjk4ZjNkM2MwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFRlc3RzTWFjLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3IuaCIK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBF
TkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUNPUykKKworVEVTVChEcmFnQW5kRHJv
cFRlc3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQoreworICAgIE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKKyAg
ICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVy
Om5pbF07CisgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCJmaWxlLW5hbWUiXSBm
b3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFk
b3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3RnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3
ID0gW3NpbXVsYXRvciB3ZWJWaWV3XTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsRHJhZ1Bh
c3RlYm9hcmQ6cGFzdGVib2FyZF07CisKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCkgc3R5bGVNYXNrOjAgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5P
XSk7CisgICAgW2hvc3RXaW5kb3cgc2V0RnJhbWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwor
ICAgIFtbaG9zdFdpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3XTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmdWxsLXBhZ2UtZHJvcHpv
bmUiXTsKKworICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gMDsKKyAg
ICBbc2ltdWxhdG9yIHNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6WyZudW1iZXJPZlZhbGlkSXRl
bXNGb3JEcm9wLCBzaW11bGF0b3JdIHsKKyAgICAgICAgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJv
cCA9IFtzaW11bGF0b3IgZHJhZ2dpbmdJbmZvXS5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwor
ICAgIH1dOworCisgICAgW3NpbXVsYXRvciBydW5Gcm9tOk5TTWFrZVBvaW50KDAsIDApIHRvOk5T
TWFrZVBvaW50KDIwMCwgMjAwKV07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAib2JzZXJ2ZWREcmFnRW50ZXIiXS5ib29sVmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJv
YnNlcnZlZERyYWdPdmVyIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAib2JzZXJ2ZWREcm9wIl0uYm9vbFZhbHVlKTsK
KyAgICBFWFBFQ1RfRVEoMVUsIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApOworfQorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0o
TUFDT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lE
cmFnQW5kRHJvcFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5
RHJhZ0FuZERyb3BUZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmI2YzQwMTc4Mzk1ZTY1NzlhNTdmZjY4
YzhmZDUyMjAzNzBmYmZkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbQpAQCAtMCwwICsxLDI1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNp
bXBvcnQgPEFwcEtpdC9OU0RyYWdnaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgor
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0Bp
bnRlcmZhY2UgRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIDogTlNPYmplY3Q8V2ViRnJhbWVM
b2FkRGVsZWdhdGU+IHsKKyAgICBCbG9ja1B0cjx2b2lkKCk+IF9jb21wbGV0aW9uQmxvY2s7Cit9
CisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9i
bG9ja190KWNvbXBsZXRpb25CbG9jazsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lTG9h
ZENvbXBsZXRpb25MaXN0ZW5lcgorCisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxl
dGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jaworeworICAgIHJldHVy
biBbW1tGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlv
bkJsb2NrOmNvbXBsZXRpb25CbG9ja10gYXV0b3JlbGVhc2VdOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJs
b2NrCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF9jb21wbGV0aW9u
QmxvY2sgPSBjb21wbGV0aW9uQmxvY2s7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJh
bWUgKilmcmFtZQoreworICAgIGlmIChfY29tcGxldGlvbkJsb2NrKQorICAgICAgICBfY29tcGxl
dGlvbkJsb2NrKCk7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgRHJhZ1NvdXJjZSA6IE5TT2JqZWN0
CistIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6
KEJPT0wpZmxhZzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERyYWdTb3VyY2UKKworLSAoTlNE
cmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOihCT09MKWZs
YWcKK3sKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKK30KKworQGVuZAorCitAaW50
ZXJmYWNlIERyYWdJbmZvIDogTlNPYmplY3Q8TlNEcmFnZ2luZ0luZm8+IHsKKyAgICBOU1BvaW50
IF9sYXN0TW91c2VQb3NpdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX2ltYWdlOworICAg
IFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+IF9wYXN0ZWJvYXJkOworICAgIFJldGFpblB0cjxEcmFn
U291cmNlPiBfc291cmNlOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gX3dpbmRvdzsKKyAgICBO
U1NpemUgX29mZnNldDsKKyAgICBOU0ludGVnZXIgX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7
Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIERyYWdJbmZvCisKKy0gKGlkKWluaXRXaXRoSW1hZ2U6KE5T
SW1hZ2UgKilpbWFnZSBvZmZzZXQ6KE5TU2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJv
YXJkICopcGFzdGVib2FyZCBzb3VyY2U6KERyYWdTb3VyY2UgKilzb3VyY2UgZGVzdGluYXRpb25X
aW5kb3c6KE5TV2luZG93ICopZGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICBpZiAoc2VsZiA9IFtz
dXBlciBpbml0XSkgeworICAgICAgICBfaW1hZ2UgPSBpbWFnZTsKKyAgICAgICAgX3Bhc3RlYm9h
cmQgPSBwYXN0ZWJvYXJkOworICAgICAgICBfc291cmNlID0gc291cmNlOworICAgICAgICBfd2lu
ZG93ID0gZGVzdGluYXRpb25XaW5kb3c7CisgICAgICAgIF9vZmZzZXQgPSBvZmZzZXQ7CisgICAg
fQorICAgIHJldHVybiBzZWxmOworfQorCistIChOU1BvaW50KWxhc3RNb3VzZVBvc2l0aW9uCit7
CisgICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKK30KKworLSAodm9pZClzZXRMYXN0TW91
c2VQb3NpdGlvbjooTlNQb2ludClsYXN0TW91c2VQb3NpdGlvbgoreworICAgIF9sYXN0TW91c2VQ
b3NpdGlvbiA9IGxhc3RNb3VzZVBvc2l0aW9uOworfQorCistIChOU1dpbmRvdyAqKWRyYWdnaW5n
RGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICByZXR1cm4gX3dpbmRvdy5nZXQoKTsKK30KKworLSAo
TlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaworeworICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25Db3B5OworfQorCistIChOU1BvaW50KWRyYWdnaW5nTG9jYXRpb24K
K3sKKyAgICByZXR1cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQorCistIChOU1BvaW50KWRyYWdn
ZWRJbWFnZUxvY2F0aW9uCit7CisgICAgcmV0dXJuIE5TTWFrZVBvaW50KF9sYXN0TW91c2VQb3Np
dGlvbi54ICsgX29mZnNldC53aWR0aCwgX2xhc3RNb3VzZVBvc2l0aW9uLnkgKyBfb2Zmc2V0Lmhl
aWdodCk7Cit9CisKKy0gKE5TSW1hZ2UgKilkcmFnZ2VkSW1hZ2UKK3sKKyAgICByZXR1cm4gX2lt
YWdlLmdldCgpOworfQorCistIChOU1Bhc3RlYm9hcmQgKilkcmFnZ2luZ1Bhc3RlYm9hcmQKK3sK
KyAgICByZXR1cm4gX3Bhc3RlYm9hcmQuZ2V0KCk7Cit9CisKKy0gKGlkKWRyYWdnaW5nU291cmNl
Cit7CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCk7Cit9CisKKy0gKE5TSW50ZWdlcilkcmFnZ2lu
Z1NlcXVlbmNlTnVtYmVyCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy0gKHZvaWQpc2xpZGVEcmFn
Z2VkSW1hZ2VUbzooTlNQb2ludClzY3JlZW5Qb2ludAoreworfQorCistIChOU0FycmF5ICopbmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGlu
YXRpb24KK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0RyYWdnaW5nRm9ybWF0aW9uKWRy
YWdnaW5nRm9ybWF0aW9uCit7CisgICAgcmV0dXJuIE5TRHJhZ2dpbmdGb3JtYXRpb25EZWZhdWx0
OworfQorCistICh2b2lkKXNldERyYWdnaW5nRm9ybWF0aW9uOihOU0RyYWdnaW5nRm9ybWF0aW9u
KWZvcm1hdGlvbgoreworfQorCistIChCT09MKWFuaW1hdGVzVG9EZXN0aW5hdGlvbgoreworICAg
IHJldHVybiBOTzsKK30KKworLSAodm9pZClzZXRBbmltYXRlc1RvRGVzdGluYXRpb246KEJPT0wp
ZmxhZworeworfQorCistIChOU0ludGVnZXIpbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcAorewor
ICAgIHJldHVybiBfbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKK30KKworLSAodm9pZClzZXRO
dW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOihOU0ludGVnZXIpbnVtYmVyCit7CisgICAgX251bWJl
ck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBudW1iZXI7Cit9CisKKy0gKHZvaWQpZW51bWVyYXRlRHJh
Z2dpbmdJdGVtc1dpdGhPcHRpb25zOihOU0VudW1lcmF0aW9uT3B0aW9ucyllbnVtT3B0cyBmb3JW
aWV3OihOU1ZpZXcgKil2aWV3IGNsYXNzZXM6KE5TQXJyYXkgKiljbGFzc0FycmF5IHNlYXJjaE9w
dGlvbnM6KE5TRGljdGlvbmFyeSAqKXNlYXJjaE9wdGlvbnMgdXNpbmdCbG9jazoodm9pZCAoXiko
TlNEcmFnZ2luZ0l0ZW0gKmRyYWdnaW5nSXRlbSwgTlNJbnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkp
YmxvY2sKK3sKK30KKworLSAoTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0KXNwcmluZ0xvYWRpbmdI
aWdobGlnaHQKK3sKKyAgICByZXR1cm4gTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Tm9uZTsKK30K
KworLSAodm9pZClyZXNldFNwcmluZ0xvYWRpbmcKK3sKK30KKworQGVuZAorCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU0ltYWdlICpnZXRUZXN0SW1hZ2UoKQoreworICAg
IHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmci
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsK
K30KKworc3RhdGljIFdlYlZpZXcgKndlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9u
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCkKK3sKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gZGVz
dGluYXRpb24gPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gaG9zdFdpbmRv
dyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1hc2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBbaG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQ
b2ludCgwLCAwKV07CisgICAgW1tob3N0V2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OmRl
c3RpbmF0aW9uLmdldCgpXTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAg
W2Rlc3RpbmF0aW9uIHNldEZyYW1lTG9hZERlbGVnYXRlOltGcmFtZUxvYWRDb21wbGV0aW9uTGlz
dGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl4oKSB7CisgICAgICAgIFJldGFpblB0
cjxEcmFnU291cmNlPiBzb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5pdF0p
OworICAgICAgICBSZXRhaW5QdHI8RHJhZ0luZm8+IGluZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8g
YWxsb2NdIGluaXRXaXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwg
MCkgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCkgZGVzdGluYXRpb25X
aW5kb3c6aG9zdFdpbmRvdy5nZXQoKV0pOworICAgICAgICBbaW5mbyBzZXRMYXN0TW91c2VQb3Np
dGlvbjpOU01ha2VQb2ludCgwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5n
RW50ZXJlZDppbmZvLmdldCgpXTsKKyAgICAgICAgW2luZm8gc2V0TGFzdE1vdXNlUG9zaXRpb246
TlNNYWtlUG9pbnQoMjAwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5nVXBk
YXRlZDppbmZvLmdldCgpXTsKKworICAgICAgICBFWFBFQ1RfVFJVRShbZGVzdGluYXRpb24gcGVy
Zm9ybURyYWdPcGVyYXRpb246aW5mby5nZXQoKV0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dXTsKKyAgICBbW2Rlc3RpbmF0aW9uIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICByZXR1cm4gZGVzdGluYXRpb24uZ2V0KCk7
Cit9CisKK1RFU1QoTGVnYWN5RHJhZ0FuZERyb3BUZXN0cywgRHJvcFVURjhQbGFpblRleHQpCit7
CisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJk
V2l0aFVuaXF1ZU5hbWVdOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W0AiSSBhbSBhIFdlYktp
dC4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JUeXBlOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0XTsKKworICAgIFJldGFpblB0cjxX
ZWJWaWV3PiByZXN1bHRpbmdXZWJWaWV3ID0gd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVy
YXRpb24ocGFzdGVib2FyZCk7CisgICAgRVhQRUNUX1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1lbnQuYm9keS50ZXh0
Q29udGVudCJdIGNvbnRhaW5zU3RyaW5nOkAiSSBhbSBhIFdlYktpdC4iXSk7Cit9CisKK1RFU1Qo
TGVnYWN5RHJhZ0FuZERyb3BUZXN0cywgRHJvcEpQRUcpCit7CisgICAgTlNQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOworICAg
IE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2UoKTsKKyAgICBOU0JpdG1hcEltYWdlUmVwICpp
bWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdlUmVwV2l0aERhdGE6aWNvbi5USUZGUmVw
cmVzZW50YXRpb25dOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W2ltYWdlUmVwIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHByb3BlcnRpZXM6QHsgTlNJbWFnZUNvbXBy
ZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlSlBFR107CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gcmVzdWx0aW5nV2ViVmlldyA9IHdl
YlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKHBhc3RlYm9hcmQpOworICAgIEVYUEVD
VF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLnRhZ05hbWUgPT09ICdJTUcn
Il0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL2Z1bGwtcGFnZS1kcm9wem9uZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA5NDU5OGEwYmRjMTQwMTQ0NGVkNDMxZmUxNzUzMjExZDY1MzUzYzcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGJvZHkgc3R5bGU9IndpZHRoOiAxMDB2dzsgaGVpZ2h0OiAx
MDB2aDsgbWFyZ2luOiAwOyIgb25kcmFnZW50ZXI9IndpbmRvdy5kcmFnRW50ZXJlZEZvclRlc3Rp
bmcgPSB0cnVlOyByZXR1cm4gZmFsc2U7Ij4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAppbmRleCBmM2IxMjg4Njc1YWEzNzRlY2IxZDEzY2Vm
YzM1N2E3MGQ0YzE5NjkxLi44NGM4YmUzZmQ3OTQ1NDQyZTQ5ZmMyYmY0N2ExMDVlOTQwYmMzNzM2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxh
dG9yLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRv
ci5oCkBAIC0zNyw2ICszNyw4IEBACiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtp
dEFkZGl0aW9ucy5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisKIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIERyYWdBbmREcm9wUGhhc2UpIHsKICAgICBEcmFnQW5kRHJvcFBoYXNl
Q2FuY2VsbGVkID0gMCwKICAgICBEcmFnQW5kRHJvcFBoYXNlQmVnaW5uaW5nID0gMSwKQEAgLTQ1
LDggKzQ3LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRHJhZ0FuZERyb3BQaGFzZSkg
ewogICAgIERyYWdBbmREcm9wUGhhc2VQZXJmb3JtaW5nRHJvcCA9IDQKIH07CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi0KIHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4g
KlByb2dyZXNzVG9DR1BvaW50VmFsdWVNYXA7CiAKIEBpbnRlcmZhY2UgTW9ja0RyYWdEcm9wU2Vz
c2lvbiA6IE5TT2JqZWN0IDxVSURyYWdEcm9wU2Vzc2lvbj4gewpAQCAtNzUsMTkgKzc1LDIyIEBA
IHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9D
R1BvaW50VmFsdWVNYXA7CiAKIEBpbnRlcmZhY2UgRHJhZ0FuZERyb3BTaW11bGF0b3IgOiBOU09i
amVjdDxXS1VJRGVsZWdhdGVQcml2YXRlLCBfV0tJbnB1dERlbGVnYXRlPgogCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CiAvLyBUaGUgc3RhcnQgbG9jYXRp
b24sIGVuZCBsb2NhdGlvbiwgYW5kIGxvY2F0aW9ucyBvZiBhZGRpdGlvbmFsIGl0ZW0gcmVxdWVz
dHMgYXJlIGFsbCBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuCiAtICh2b2lkKXJ1bkZyb206KENHUG9p
bnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2NhdGlvbjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNBcnJheTxfV0tBdHRhY2htZW50ICo+ICppbnNlcnRlZEF0dGFj
aG1lbnRzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PF9XS0F0dGFj
aG1lbnQgKj4gKnJlbW92ZWRBdHRhY2htZW50czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgRHJhZ0FuZERyb3BQaGFzZSBwaGFzZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgVGVzdFdLV2ViVmlldyAqd2ViVmlldzsKIAogI2lmIFBMQVRGT1JNKElPUykKIAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXc7CiAt
ICh2b2lkKXJ1bkZyb206KENHUG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2Nh
dGlvbiBhZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM6KFByb2dyZXNzVG9DR1BvaW50VmFs
dWVNYXApYWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zOwogLSAodm9pZCl3YWl0Rm9ySW5w
dXRTZXNzaW9uOwogLSAodm9pZCllbmREYXRhVHJhbnNmZXI7CiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgRHJhZ0FuZERyb3BQaGFzZSBwaGFzZTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGFsbG93c0ZvY3VzVG9TdGFydElucHV0U2Vzc2lvbjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIHNob3VsZEVuc3VyZVVJQXBwbGljYXRpb247CiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBzaG91bGRBbGxvd01vdmVPcGVyYXRpb247CkBAIC0xMDYsNiArMTA5LDE3IEBA
IHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9D
R1BvaW50VmFsdWVNYXA7CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKKyNpZiBQTEFURk9S
TShNQUMpCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQgPE5TRHJhZ2dpbmdJ
bmZvPiBkcmFnZ2luZ0luZm87CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TUG9p
bnQgaW5pdGlhbERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3OworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0RyYWdPcGVyYXRpb24gY3VycmVudERyYWdPcGVyYXRpb247CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1Bhc3RlYm9hcmQgKmV4dGVybmFsRHJhZ1Bhc3RlYm9h
cmQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0ltYWdlICpleHRlcm5hbERyYWdJ
bWFnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBkaXNwYXRjaF9ibG9ja190IHdpbGxF
bmREcmFnZ2luZ0hhbmRsZXI7CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIEBlbmQKIAog
I2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGNmOThkYWEyMzRjMDk4NTdh
NjVlNTZhMmIyOGUyZWUwOTBhN2U5NDcuLjA1MWZhMjkyZGM3Y2IwNjNmMzIyYTk0NzllMTc2ZDg3
NTI0ZTBjNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBA
IC03MiwxMCArNzIsMTIgQEAKICNpZiBQTEFURk9STShNQUMpCiBAaW50ZXJmYWNlIFRlc3RXS1dl
YlZpZXcgKE1hY09ubHkpCiAvLyBTaW11bGF0ZXMgY2xpY2tpbmcgd2l0aCBhIHByZXNzdXJlLXNl
bnNpdGl2ZSBkZXZpY2UsIGlmIHBvc3NpYmxlLgotLSAodm9pZCltb3VzZURvd25BdFBvaW50OihO
U1BvaW50KXBvaW50IHNpbXVsYXRlUHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZTsKLS0g
KHZvaWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKW1vdXNlTW92ZVRv
UG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFn
czsKLS0gKHZvaWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgbnVtYmVyT2ZDbGlj
a3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3M7CistICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6
KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOihCT09MKXNpbXVsYXRlUHJl
c3N1cmU7CistICh2b2lkKW1vdXNlRHJhZ1RvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsK
Ky0gKHZvaWQpbW91c2VFbnRlckF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsKKy0gKHZv
aWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsKKy0gKHZvaWQpbW91c2VN
b3ZlVG9Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93IHdpdGhGbGFnczooTlNFdmVudE1vZGlm
aWVyRmxhZ3MpZmxhZ3M7CistICh2b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1BvaW50KXBvaW50
SW5XaW5kb3cgbnVtYmVyT2ZDbGlja3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3M7CiAtIChO
U1dpbmRvdyAqKWhvc3RXaW5kb3c7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFj
dGVyOwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmlu
ZGV4IDM3NDBkNTgyZjNmNTFlYjdkZDcwMTY0YmRlYjNlNzExYmU1N2Y4MDUuLmQwOTZjZjA5YzU1
Y2RmMWM2MjQ0NjYyZDMxYWRhYjE2YjI3OGVjOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTM3MiwyNiArMzcyLDUyIEBAIE5TRXZlbnRNYXNrIF9f
c2ltdWxhdGVkX2ZvcmNlQ2xpY2tBc3NvY2lhdGVkRXZlbnRzTWFzayhpZCBzZWxmLCBTRUwgX2Nt
ZCkKIAogI2lmIFBMQVRGT1JNKE1BQykKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChN
YWNPbmx5KQotLSAodm9pZCltb3VzZURvd25BdFBvaW50OihOU1BvaW50KXBvaW50IHNpbXVsYXRl
UHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZQorLSAodm9pZCltb3VzZURvd25BdFBvaW50
OihOU1BvaW50KXBvaW50SW5XaW5kb3cgc2ltdWxhdGVQcmVzc3VyZTooQk9PTClzaW11bGF0ZVBy
ZXNzdXJlCiB7Ci0gICAgW19ob3N0V2luZG93IF9tb3VzZURvd25BdFBvaW50OnBvaW50IHNpbXVs
YXRlUHJlc3N1cmU6c2ltdWxhdGVQcmVzc3VyZSBjbGlja0NvdW50OjFdOworICAgIFtfaG9zdFdp
bmRvdyBfbW91c2VEb3duQXRQb2ludDpwb2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6c2lt
dWxhdGVQcmVzc3VyZSBjbGlja0NvdW50OjFdOwogfQogCi0tICh2b2lkKW1vdXNlVXBBdFBvaW50
OihOU1BvaW50KXBvaW50CistICh2b2lkKW1vdXNlVXBBdFBvaW50OihOU1BvaW50KXBvaW50SW5X
aW5kb3cKIHsKLSAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBvaW50OnBvaW50IGNsaWNrQ291
bnQ6MV07CisgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpwb2ludEluV2luZG93IGNs
aWNrQ291bnQ6MV07CiB9CiAKLS0gKHZvaWQpbW91c2VNb3ZlVG9Qb2ludDooTlNQb2ludClwb2lu
dCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzCistICh2b2lkKW1vdXNlTW92
ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmll
ckZsYWdzKWZsYWdzCiB7Ci0gICAgW3NlbGYgbW91c2VNb3ZlZDpbTlNFdmVudCBtb3VzZUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZU1vdmVkIGxvY2F0aW9uOnBvaW50IG1vZGlmaWVyRmxh
Z3M6ZmxhZ3MgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSB3aW5kb3dOdW1iZXI6W19o
b3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3Vy
ZTowXV07CisgICAgW3NlbGYgbW91c2VNb3ZlZDpbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlTW91c2VNb3ZlZCBhdExvY2F0aW9uOnBvaW50SW5XaW5kb3cgZmxhZ3M6ZmxhZ3Mg
dGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSBjbGlja0NvdW50OjBdXTsKIH0KIAotLSAo
dm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClwb2ludCBudW1iZXJPZkNsaWNrczooTlNV
SW50ZWdlciludW1iZXJPZkNsaWNrcworLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2lu
dClwb2ludEluV2luZG93IG51bWJlck9mQ2xpY2tzOihOU1VJbnRlZ2VyKW51bWJlck9mQ2xpY2tz
CiB7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGNsaWNrQ291bnQgPSAxOyBjbGlja0NvdW50IDw9IG51
bWJlck9mQ2xpY2tzOyArK2NsaWNrQ291bnQpIHsKLSAgICAgICAgW19ob3N0V2luZG93IF9tb3Vz
ZURvd25BdFBvaW50OnBvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk8gY2xpY2tDb3VudDpjbGlja0Nv
dW50XTsKLSAgICAgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpwb2ludCBjbGlja0Nv
dW50OmNsaWNrQ291bnRdOworICAgICAgICBbX2hvc3RXaW5kb3cgX21vdXNlRG93bkF0UG9pbnQ6
cG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOk5PIGNsaWNrQ291bnQ6Y2xpY2tDb3VudF07
CisgICAgICAgIFtfaG9zdFdpbmRvdyBfbW91c2VVcEF0UG9pbnQ6cG9pbnRJbldpbmRvdyBjbGlj
a0NvdW50OmNsaWNrQ291bnRdOworICAgIH0KK30KKworLSAodm9pZCltb3VzZUVudGVyQXRQb2lu
dDooTlNQb2ludClwb2ludEluV2luZG93Cit7CisgICAgW3NlbGYgbW91c2VFbnRlcmVkOltzZWxm
IF9tb3VzZUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZUVudGVyZWQgYXRMb2NhdGlvbjpw
b2ludEluV2luZG93XV07Cit9CisKKy0gKHZvaWQpbW91c2VEcmFnVG9Qb2ludDooTlNQb2ludClw
b2ludEluV2luZG93Cit7CisgICAgW3NlbGYgbW91c2VEcmFnZ2VkOltzZWxmIF9tb3VzZUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkIGF0TG9jYXRpb246cG9pbnRJbldp
bmRvd11dOworfQorCistIChOU0V2ZW50ICopX21vdXNlRXZlbnRXaXRoVHlwZTooTlNFdmVudFR5
cGUpdHlwZSBhdExvY2F0aW9uOihOU1BvaW50KXBvaW50SW5XaW5kb3cKK3sKKyAgICByZXR1cm4g
W3NlbGYgX21vdXNlRXZlbnRXaXRoVHlwZTp0eXBlIGF0TG9jYXRpb246cG9pbnRJbldpbmRvdyBm
bGFnczowIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgY2xpY2tDb3VudDowXTsKK30K
KworLSAoTlNFdmVudCAqKV9tb3VzZUV2ZW50V2l0aFR5cGU6KE5TRXZlbnRUeXBlKXR5cGUgYXRM
b2NhdGlvbjooTlNQb2ludClsb2NhdGlvbkluV2luZG93IGZsYWdzOihOU0V2ZW50TW9kaWZpZXJG
bGFncylmbGFncyB0aW1lc3RhbXA6KE5TVGltZUludGVydmFsKXRpbWVzdGFtcCBjbGlja0NvdW50
OihOU1VJbnRlZ2VyKWNsaWNrQ291bnQKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IE5TRXZlbnRUeXBlTW91c2VFbnRlcmVkOgorICAgIGNhc2UgTlNFdmVudFR5cGVNb3VzZUV4aXRl
ZDoKKyAgICAgICAgcmV0dXJuIFtOU0V2ZW50IGVudGVyRXhpdEV2ZW50V2l0aFR5cGU6dHlwZSBs
b2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6ZmxhZ3MgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6W19ob3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVt
YmVyIHRyYWNraW5nTnVtYmVyOjEgdXNlckRhdGE6bmlsXTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnR5cGUgbG9jYXRpb246bG9jYXRp
b25JbldpbmRvdyBtb2RpZmllckZsYWdzOmZsYWdzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOltfaG9zdFdpbmRvdyB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6W05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XSBldmVudE51bWJlcjorK2dFdmVudE51bWJlciBjbGlja0NvdW50
OmNsaWNrQ291bnQgcHJlc3N1cmU6MF07CiAgICAgfQogfQogCkBAIC00MDAsNyArNDI2LDggQEAg
TlNFdmVudE1hc2sgX19zaW11bGF0ZWRfZm9yY2VDbGlja0Fzc29jaWF0ZWRFdmVudHNNYXNrKGlk
IHNlbGYsIFNFTCBfY21kKQogICAgIHJldHVybiBfaG9zdFdpbmRvdy5nZXQoKTsKIH0KIAotLSAo
dm9pZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlciB7CistICh2b2lkKXR5cGVDaGFyYWN0
ZXI6KGNoYXIpY2hhcmFjdGVyCit7CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlckFzU3RyaW5nID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlYyIgLCBjaGFyYWN0ZXJdOwogICAgIE5TRXZl
bnRUeXBlIGtleURvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZUtleURvd247CiAgICAgTlNFdmVu
dFR5cGUga2V5VXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUtleVVwOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCA0M2VlY2Q5
NDk0ZDU5NjRmNTA3MTE3MDlkNjAyZjEzZDY4OTRjYWJlLi45ZTFmMjFlZTFkNTNiZGQ0NmMzMzM4
MTAyMTBlZDA3MGRmMTMyYzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
cmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
cmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpAQCAtMzE4LDYgKzMxOCwxOSBAQCBzdGF0aWMgTlNB
cnJheSAqZHJhZ0FuZERyb3BFdmVudE5hbWVzKCkKICAgICBSZXRhaW5QdHI8VUlEcm9wUHJvcG9z
YWw+IF9jdXJyZW50RHJvcFByb3Bvc2FsOwogfQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdl
YlZpZXdGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOm5pbF07Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7CisgICAgaWYgKGNvbmZpZ3VyYXRp
b24pCisgICAgICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZpZXc6W1tbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXV07CisKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWJWaWV3OltbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdIGF1dG9yZWxlYXNlXV07Cit9
CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3CiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKQEAgLTYyMyw2ICs2MzYsMTEg
QEAgc3RhdGljIE5TQXJyYXkgKmRyYWdBbmREcm9wRXZlbnROYW1lcygpCiAgICAgW1tfd2ViVmll
dyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJhZ0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFn
SW50ZXJhY3Rpb25dIHNlc3Npb25EaWRUcmFuc2Zlckl0ZW1zOl9kcmFnU2Vzc2lvbi5nZXQoKV07
CiB9CiAKKy0gKFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJuIF93ZWJWaWV3
LmdldCgpOworfQorCiAjcHJhZ21hIG1hcmsgLSBXS1VJRGVsZWdhdGVQcml2YXRlCiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9u
V2FzSGFuZGxlZDooQk9PTCloYW5kbGVkIGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3Zp
ZGVyczooTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KaW5kZXgg
OWE3OTE4Y2M0ODM5YTg3NTdiYWY2MGI4OGYyMzg2MWFkMjJkMGE1Zi4uYjM5MTdjZDk2MjFmMDIz
ZTI0YjhiMDY2NThmM2U5N2YwNjFkMjI2MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KQEAgLTI4LDM4ICsyOCwxNzEgQEAKIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJM
RUQKIAorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3REcmFnZ2lu
Z0luZm8uaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPGNtYXRoPgorI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBEcmFnQW5kRHJvcFRlc3RXS1dlYlZp
ZXc7CisKK0BpbnRlcmZhY2UgRHJhZ0FuZERyb3BTaW11bGF0b3IgKCkKKy0gKHZvaWQpcGVyZm9y
bURyYWdJbldlYlZpZXc6KERyYWdBbmREcm9wVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcgYXRMb2Nh
dGlvbjooTlNQb2ludCl2aWV3TG9jYXRpb24gd2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2UgcGFz
dGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBzb3VyY2U6KGlkKXNvdXJjZTsKK0Bl
bmQKKworQGludGVyZmFjZSBEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgOiBUZXN0V0tXZWJWaWV3
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgeworICAg
IFdlYWtPYmpDUHRyPERyYWdBbmREcm9wU2ltdWxhdG9yPiBfc2ltdWxhdG9yOworfQorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIHNpbXVsYXRvcjooRHJhZ0FuZERy
b3BTaW11bGF0b3IgKilzaW11bGF0b3IKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0V2l0
aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pCisgICAgICAgIF9zaW11
bGF0b3IgPSBzaW11bGF0b3I7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZHJhZ0lt
YWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDooTlNT
aXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09MKXNs
aWRlRmxhZworeworICAgIFtfc2ltdWxhdG9yIHBlcmZvcm1EcmFnSW5XZWJWaWV3OnNlbGYgYXRM
b2NhdGlvbjp2aWV3TG9jYXRpb24gd2l0aEltYWdlOmltYWdlIHBhc3RlYm9hcmQ6cGJvYXJkIHNv
dXJjZTpzb3VyY2VPYmpdOworfQorCistICh2b2lkKXdhaXRGb3JQZW5kaW5nTW91c2VFdmVudHMK
K3sKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZVByb2Nlc3NNb3VzZUV2ZW50cyA9IGZhbHNlOworICAg
IFtzZWxmIF9kb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50czpeeworICAgICAg
ICBkb25lUHJvY2Vzc01vdXNlRXZlbnRzID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVQcm9jZXNzTW91c2VFdmVudHMpOworfQorCitAZW5kCisKKy8v
IFRoaXMgZXhjZWVkcyB0aGUgZGVmYXVsdCBkcmFnIGh5c3RlcmVzaXMgb2YgYWxsIHBvdGVudGlh
bCBkcmFnIHR5cGVzLgorY29uc3QgZG91YmxlIGluaXRpYWxNb3VzZURyYWdEaXN0YW5jZSA9IDQ1
OworY29uc3QgZG91YmxlIGRyYWdVcGRhdGVQcm9ncmVzc0luY3JlbWVudCA9IDAuMDU7CisKK3N0
YXRpYyBOU0ltYWdlICpkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKQoreworICAgIHJldHVybiBb
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKK30KIAogQGlt
cGxlbWVudGF0aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsKLSAgICBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dz4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPFRlc3REcmFnZ2luZ0luZm8+IF9kcmFnZ2luZ0lu
Zm87CisgICAgUmV0YWluUHRyPE5TUGFzdGVib2FyZD4gX2V4dGVybmFsRHJhZ1Bhc3RlYm9hcmQ7
CisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9leHRlcm5hbERyYWdJbWFnZTsKKyAgICBCbG9ja1B0
cjx2b2lkKCk+IF93aWxsRW5kRHJhZ2dpbmdIYW5kbGVyOworICAgIE5TUG9pbnQgX3N0YXJ0TG9j
YXRpb25JbldpbmRvdzsKKyAgICBOU1BvaW50IF9lbmRMb2NhdGlvbkluV2luZG93OworICAgIGRv
dWJsZSBfcHJvZ3Jlc3M7Cit9CisKK0BzeW50aGVzaXplIGN1cnJlbnREcmFnT3BlcmF0aW9uPV9j
dXJyZW50RHJhZ09wZXJhdGlvbjsKK0BzeW50aGVzaXplIGluaXRpYWxEcmFnSW1hZ2VMb2NhdGlv
bkluVmlldz1faW5pdGlhbERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3OworCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aFdlYlZpZXdGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOm5pbF07CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1
cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewogICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKKyAg
ICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiA/OiBbW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0gc2ltdWxhdG9y
OnNlbGZdKTsKICAgICAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07Ci0gICAgICAg
IFtfd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpzZWxmXTsKICAgICB9CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYworLSAoTlNQb2ludClmbGlwQWJvdXRYQXhpc0luSG9z
dFdpbmRvdzooTlNQb2ludClwb2ludAogewotICAgIGlmIChbX3dlYlZpZXcgVUlEZWxlZ2F0ZV0g
PT0gc2VsZikKLSAgICAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6bmlsXTsKKyAgICByZXR1
cm4geyBwb2ludC54LCBOU0hlaWdodChbW193ZWJWaWV3IGhvc3RXaW5kb3ddIGZyYW1lXSkgLSBw
b2ludC55IH07Cit9CiAKLSAgICBpZiAoW193ZWJWaWV3IF9pbnB1dERlbGVnYXRlXSA9PSBzZWxm
KQotICAgICAgICBbX3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6bmlsXTsKKy0gKE5TUG9pbnQp
bG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3MKK3sKKyAgICByZXR1cm4geworICAgICAg
ICBfc3RhcnRMb2NhdGlvbkluV2luZG93LnggKyAoX2VuZExvY2F0aW9uSW5XaW5kb3cueCAtIF9z
dGFydExvY2F0aW9uSW5XaW5kb3cueCkgKiBfcHJvZ3Jlc3MsCisgICAgICAgIF9zdGFydExvY2F0
aW9uSW5XaW5kb3cueSArIChfZW5kTG9jYXRpb25JbldpbmRvdy55IC0gX3N0YXJ0TG9jYXRpb25J
bldpbmRvdy55KSAqIF9wcm9ncmVzcworICAgIH07Cit9CiAKLSAgICBbc3VwZXIgZGVhbGxvY107
CistIChkb3VibGUpaW5pdGlhbFByb2dyZXNzRm9yTW91c2VEcmFnCit7CisgICAgZG91YmxlIHRv
dGFsRGlzdGFuY2UgPSBzdGQ6OnNxcnQoc3RkOjpwb3coX3N0YXJ0TG9jYXRpb25JbldpbmRvdy54
IC0gX2VuZExvY2F0aW9uSW5XaW5kb3cueCwgMikgKyBzdGQ6OnBvdyhfc3RhcnRMb2NhdGlvbklu
V2luZG93LnkgLSBfZW5kTG9jYXRpb25JbldpbmRvdy55LCAyKSk7CisgICAgcmV0dXJuICF0b3Rh
bERpc3RhbmNlID8gMSA6IHN0ZDo6bWluPGRvdWJsZT4oMSwgaW5pdGlhbE1vdXNlRHJhZ0Rpc3Rh
bmNlIC8gdG90YWxEaXN0YW5jZSk7CiB9CiAKLS0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClzdGFy
dExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uCistICh2b2lkKXJ1bkZyb206KENHUG9p
bnQpZmxpcHBlZFN0YXJ0TG9jYXRpb24gdG86KENHUG9pbnQpZmxpcHBlZEVuZExvY2F0aW9uCiB7
Ci0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSB0byBzaW11bGF0ZSBkcmFnZ2luZyBvbiBt
YWNPUy4KLSAgICBVTlVTRURfUEFSQU0oc3RhcnRMb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGVuZExvY2F0aW9uKTsKKyAgICBfc3RhcnRMb2NhdGlvbkluV2luZG93ID0gW3NlbGYgZmxpcEFi
b3V0WEF4aXNJbkhvc3RXaW5kb3c6ZmxpcHBlZFN0YXJ0TG9jYXRpb25dOworICAgIF9lbmRMb2Nh
dGlvbkluV2luZG93ID0gW3NlbGYgZmxpcEFib3V0WEF4aXNJbkhvc3RXaW5kb3c6ZmxpcHBlZEVu
ZExvY2F0aW9uXTsKKyAgICBfY3VycmVudERyYWdPcGVyYXRpb24gPSBOU0RyYWdPcGVyYXRpb25O
b25lOworICAgIF9kcmFnZ2luZ0luZm8gPSBuaWw7CisgICAgX3Byb2dyZXNzID0gMDsKKworICAg
IGlmIChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBzZWxmLmV4dGVybmFsRHJhZ1Bhc3RlYm9h
cmQpIHsKKyAgICAgICAgTlNQb2ludCBzdGFydExvY2F0aW9uSW5WaWV3ID0gW193ZWJWaWV3IGNv
bnZlcnRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IGZyb21WaWV3Om5pbF07CisgICAgICAg
IE5TSW1hZ2UgKmRyYWdJbWFnZSA9IHNlbGYuZXh0ZXJuYWxEcmFnSW1hZ2UgPzogZGVmYXVsdEV4
dGVybmFsRHJhZ0ltYWdlKCk7CisgICAgICAgIFtzZWxmIHBlcmZvcm1EcmFnSW5XZWJWaWV3Ol93
ZWJWaWV3LmdldCgpIGF0TG9jYXRpb246c3RhcnRMb2NhdGlvbkluVmlldyB3aXRoSW1hZ2U6ZHJh
Z0ltYWdlIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6bmlsXTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIF9wcm9ncmVzcyA9IFtzZWxmIGluaXRpYWxQcm9ncmVzc0Zvck1vdXNl
RHJhZ107CisgICAgaWYgKF9wcm9ncmVzcyA9PSAxKSB7CisgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpAIkRyYWdBbmREcm9wU2ltdWxhdG9yIiBmb3JtYXQ6QCJEcmFnIHN0YXJ0ICglQCkgYW5k
IGRyYWcgZW5kICglQCkgbG9jYXRpb25zIGFyZSB0b28gY2xvc2UhIiwgTlNTdHJpbmdGcm9tUG9p
bnQoZmxpcHBlZFN0YXJ0TG9jYXRpb24pLCBOU1N0cmluZ0Zyb21Qb2ludChmbGlwcGVkRW5kTG9j
YXRpb24pXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtfd2ViVmlldyBtb3VzZUVu
dGVyQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93XTsKKyAgICBbX3dlYlZpZXcgbW91c2VN
b3ZlVG9Qb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IHdpdGhGbGFnczowXTsKKyAgICBbX3dl
YlZpZXcgbW91c2VEb3duQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IHNpbXVsYXRlUHJl
c3N1cmU6Tk9dOworICAgIFtfd2ViVmlldyBtb3VzZURyYWdUb1BvaW50OltzZWxmIGxvY2F0aW9u
SW5WaWV3Rm9yQ3VycmVudFByb2dyZXNzXV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JQZW5kaW5n
TW91c2VFdmVudHNdOworCisgICAgW193ZWJWaWV3IG1vdXNlVXBBdFBvaW50Ol9lbmRMb2NhdGlv
bkluV2luZG93XTsKKyAgICBbX3dlYlZpZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c107Cit9
CisKKy0gKHZvaWQpcGVyZm9ybURyYWdJbldlYlZpZXc6KERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dyAqKXdlYlZpZXcgYXRMb2NhdGlvbjooTlNQb2ludCl2aWV3TG9jYXRpb24gd2l0aEltYWdlOihO
U0ltYWdlICopaW1hZ2UgcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBzb3Vy
Y2U6KGlkKXNvdXJjZQoreworICAgIF9pbml0aWFsRHJhZ0ltYWdlTG9jYXRpb25JblZpZXcgPSB2
aWV3TG9jYXRpb247CisgICAgX2RyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tUZXN0RHJhZ2dpbmdJ
bmZvIGFsbG9jXSBpbml0XSk7CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dlZEltYWdlOmlt
YWdlXTsKKyAgICBbX2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ1Bhc3RlYm9hcmQ6cGFzdGVib2Fy
ZF07CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdTb3VyY2U6c291cmNlXTsKKyAgICBb
X2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0xvY2F0aW9uOltzZWxmIGxvY2F0aW9uSW5WaWV3Rm9y
Q3VycmVudFByb2dyZXNzXV07CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrOk5TRHJhZ09wZXJhdGlvbkV2ZXJ5XTsKKyAgICBbX2RyYWdnaW5nSW5mbyBz
ZXROdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOnBhc3RlYm9hcmQucGFzdGVib2FyZEl0ZW1zLmNv
dW50XTsKKworICAgIF9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFtfd2ViVmlldyBkcmFnZ2luZ0Vu
dGVyZWQ6X2RyYWdnaW5nSW5mby5nZXQoKV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIHdoaWxlIChfcHJvZ3Jlc3MgIT0gMSkgeworICAgICAg
ICBfcHJvZ3Jlc3MgPSBzdGQ6Om1pbjxkb3VibGU+KDEsIF9wcm9ncmVzcyArIGRyYWdVcGRhdGVQ
cm9ncmVzc0luY3JlbWVudCk7CisgICAgICAgIFtfZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nTG9j
YXRpb246W3NlbGYgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdXTsKKyAgICAgICAg
X2N1cnJlbnREcmFnT3BlcmF0aW9uID0gW193ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpfZHJhZ2dp
bmdJbmZvLmdldCgpXTsKKyAgICAgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKKyAgICB9CisKKyAgICBbX2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0xvY2F0aW9u
Ol9lbmRMb2NhdGlvbkluV2luZG93XTsKKworICAgIGlmIChfd2lsbEVuZERyYWdnaW5nSGFuZGxl
cikKKyAgICAgICAgX3dpbGxFbmREcmFnZ2luZ0hhbmRsZXIoKTsKKworICAgIGlmIChfY3VycmVu
dERyYWdPcGVyYXRpb24gIT0gTlNEcmFnT3BlcmF0aW9uTm9uZSAmJiBbX3dlYlZpZXcgcHJlcGFy
ZUZvckRyYWdPcGVyYXRpb246X2RyYWdnaW5nSW5mby5nZXQoKV0pCisgICAgICAgIFtfd2ViVmll
dyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpfZHJhZ2dpbmdJbmZvLmdldCgpXTsKKyAgICBlbHNlIGlm
IChfY3VycmVudERyYWdPcGVyYXRpb24gPT0gTlNEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICAgICAg
W193ZWJWaWV3IGRyYWdnaW5nRXhpdGVkOl9kcmFnZ2luZ0luZm8uZ2V0KCldOworICAgIFtfd2Vi
VmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBpZiAoIXNlbGYuZXh0
ZXJuYWxEcmFnUGFzdGVib2FyZCkgeworICAgICAgICBbX3dlYlZpZXcgZHJhZ2dlZEltYWdlOltf
ZHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0gZW5kZWRBdDpfZW5kTG9jYXRpb25JbldpbmRvdyBv
cGVyYXRpb246X2N1cnJlbnREcmFnT3BlcmF0aW9uXTsKKyAgICAgICAgW193ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICB9CiB9CiAKIC0gKE5TQXJyYXk8X1dLQXR0
YWNobWVudCAqPiAqKWluc2VydGVkQXR0YWNobWVudHMKQEAgLTcyLDkgKzIwNSw0NCBAQAogICAg
IHJldHVybiBAWyBdOwogfQogCi0tIChEcmFnQW5kRHJvcFBoYXNlKXBoYXNlCistIChUZXN0V0tX
ZWJWaWV3ICopd2ViVmlldworeworICAgIHJldHVybiBfd2ViVmlldy5nZXQoKTsKK30KKworLSAo
dm9pZClzZXRFeHRlcm5hbERyYWdQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilleHRlcm5hbERy
YWdQYXN0ZWJvYXJkCit7CisgICAgX2V4dGVybmFsRHJhZ1Bhc3RlYm9hcmQgPSBleHRlcm5hbERy
YWdQYXN0ZWJvYXJkOworfQorCistIChOU1Bhc3RlYm9hcmQgKilleHRlcm5hbERyYWdQYXN0ZWJv
YXJkCit7CisgICAgcmV0dXJuIF9leHRlcm5hbERyYWdQYXN0ZWJvYXJkLmdldCgpOworfQorCist
ICh2b2lkKXNldEV4dGVybmFsRHJhZ0ltYWdlOihOU0ltYWdlICopZXh0ZXJuYWxEcmFnSW1hZ2UK
K3sKKyAgICBfZXh0ZXJuYWxEcmFnSW1hZ2UgPSBleHRlcm5hbERyYWdJbWFnZTsKK30KKworLSAo
TlNJbWFnZSAqKWV4dGVybmFsRHJhZ0ltYWdlCit7CisgICAgcmV0dXJuIF9leHRlcm5hbERyYWdJ
bWFnZS5nZXQoKTsKK30KKworLSAoaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KK3sK
KyAgICByZXR1cm4gX2RyYWdnaW5nSW5mby5nZXQoKTsKK30KKworLSAoZGlzcGF0Y2hfYmxvY2tf
dCl3aWxsRW5kRHJhZ2dpbmdIYW5kbGVyCit7CisgICAgcmV0dXJuIF93aWxsRW5kRHJhZ2dpbmdI
YW5kbGVyLmdldCgpOworfQorCistICh2b2lkKXNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6KGRp
c3BhdGNoX2Jsb2NrX3Qpd2lsbEVuZERyYWdnaW5nSGFuZGxlcgogewotICAgIHJldHVybiBEcmFn
QW5kRHJvcFBoYXNlQ2FuY2VsbGVkOworICAgIF93aWxsRW5kRHJhZ2dpbmdIYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKHdpbGxFbmREcmFnZ2luZ0hhbmRsZXIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZhNmRlNTcyZjU3
ZDg4ZmY1OThlZmU4NjVkZDJkMjZjOTA3ZDIxNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8uaApAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEFwcEtpdC9OU0RyYWdnaW5nLmg+CisK
K0BpbnRlcmZhY2UgVGVzdERyYWdnaW5nSW5mbyA6IE5TT2JqZWN0IDxOU0RyYWdnaW5nSW5mbz4K
KworQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgZHJhZ2dpbmdMb2NhdGlvbjsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljKSBOU1BvaW50IGRyYWdnZWRJbWFnZUxvY2F0aW9uOworQHByb3BlcnR5
IChub25hdG9taWMpIE5TSW50ZWdlciBkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyOworQHByb3BlcnR5
IChub25hdG9taWMpIE5TRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1Bhc3RlYm9hcmQgKmRyYWdnaW5nUGFz
dGVib2FyZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TSW1hZ2UgKmRyYWdnZWRJ
bWFnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCBkcmFnZ2luZ1NvdXJjZTsKKwor
QGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdERyYWdnaW5nSW5m
by5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8ubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDU4ZDZiNDFlMDZiNDdkNDFmMjI0Njc1ZjIxZmRhMzYxZjg4ZmMwMgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8ubW0KQEAg
LTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IlRlc3REcmFnZ2luZ0luZm8uaCIKKworI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0Bp
bXBsZW1lbnRhdGlvbiBUZXN0RHJhZ2dpbmdJbmZvIHsKKyAgICBXZWFrT2JqQ1B0cjxpZD4gX3Nv
dXJjZTsKKyAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBfcGFzdGVib2FyZDsKKyAgICBSZXRh
aW5QdHI8TlNJbWFnZT4gX2RyYWdnZWRJbWFnZTsKK30KKworQHN5bnRoZXNpemUgZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrPV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CitAc3ludGhl
c2l6ZSBkcmFnZ2luZ0xvY2F0aW9uPV9kcmFnZ2luZ0xvY2F0aW9uOworQHN5bnRoZXNpemUgZHJh
Z2dpbmdGb3JtYXRpb249X2RyYWdnaW5nRm9ybWF0aW9uOworQHN5bnRoZXNpemUgbnVtYmVyT2ZW
YWxpZEl0ZW1zRm9yRHJvcD1fbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKKworLSAoTlNQYXN0
ZWJvYXJkICopZHJhZ2dpbmdQYXN0ZWJvYXJkCit7CisgICAgcmV0dXJuIF9wYXN0ZWJvYXJkLmdl
dCgpOworfQorCistICh2b2lkKXNldERyYWdnaW5nUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICop
ZHJhZ2dpbmdQYXN0ZWJvYXJkCit7CisgICAgX3Bhc3RlYm9hcmQgPSBkcmFnZ2luZ1Bhc3RlYm9h
cmQ7Cit9CisKKy0gKGlkKWRyYWdnaW5nU291cmNlCit7CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0
KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RHJhZ2dpbmdTb3VyY2U6KGlkKWRyYWdnaW5nU291
cmNlCit7CisgICAgX3NvdXJjZSA9IGRyYWdnaW5nU291cmNlOworfQorCistICh2b2lkKWVudW1l
cmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNEcmFnZ2luZ0l0ZW1FbnVtZXJhdGlvbk9w
dGlvbnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmlldyBjbGFzc2VzOihOU0FycmF5PENs
YXNzPiAqKWNsYXNzQXJyYXkgc2VhcmNoT3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IGlkPiAqKXNlYXJjaE9wdGlvbnMgdXNpbmdCbG9jazoodm9pZCAoXikoTlNEcmFnZ2luZ0l0ZW0g
KiwgTlNJbnRlZ2VyLCBCT09MICopKWJsb2NrCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHRvIHRlc3QgZmlsZSBwcm9taXNlIGRyb3AgaGFuZGxpbmcuCit9CisKKy8vIFRoZSBmb2xs
b3dpbmcgbWV0aG9kcyBhcmUgbm90IGN1cnJlbnRseSB1c2VkIGJ5IFdlYktpdC4KKworQHN5bnRo
ZXNpemUgZHJhZ2dlZEltYWdlTG9jYXRpb249X2RyYWdnZWRJbWFnZUxvY2F0aW9uOworQHN5bnRo
ZXNpemUgZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcj1fZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcjsKK0Bz
eW50aGVzaXplIGFuaW1hdGVzVG9EZXN0aW5hdGlvbj1fYW5pbWF0ZXNUb0Rlc3RpbmF0aW9uOwor
QHN5bnRoZXNpemUgc3ByaW5nTG9hZGluZ0hpZ2hsaWdodD1fc3ByaW5nTG9hZGluZ0hpZ2hsaWdo
dDsKKworLSAoTlNXaW5kb3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93Cit7CisgICAgcmV0
dXJuIG5pbDsKK30KKworLSAoTlNJbWFnZSAqKWRyYWdnZWRJbWFnZQoreworICAgIHJldHVybiBf
ZHJhZ2dlZEltYWdlLmdldCgpOworfQorCistICh2b2lkKXNldERyYWdnZWRJbWFnZTooTlNJbWFn
ZSAqKWRyYWdnZWRJbWFnZQoreworICAgIF9kcmFnZ2VkSW1hZ2UgPSBkcmFnZ2VkSW1hZ2U7Cit9
CisKKy0gKHZvaWQpc2xpZGVEcmFnZ2VkSW1hZ2VUbzooTlNQb2ludClzY3JlZW5Qb2ludAorewor
fQorCistIChOU0FycmF5PE5TU3RyaW5nICo+ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVk
QXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRpb24KK3sKKyAgICByZXR1cm4gQFsg
XTsKK30KKworLSAodm9pZClyZXNldFNwcmluZ0xvYWRpbmcKK3sKK30KKworQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346957</attachid>
            <date>2018-08-10 20:36:57 -0700</date>
            <delta_ts>2018-08-13 10:48:36 -0700</delta_ts>
            <desc>Fix 32-bit macOS build</desc>
            <filename>bug-181898-20180810203656.patch</filename>
            <type>text/plain</type>
            <size>103655</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3OWFkODQ1MWVmNTg4YWRm
Y2UwN2Q3ZDdlMjJkOGJjZGIwZjY4MTkuLmNiMWJlNDEwYzZhZWRlOGNkOTk2NDhmNjNiODJiYzk2
NTJhMzYwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMDgtMTAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09TXSBJ
bXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYSBuZXcgU1BJIG1ldGhvZCwgYC1fZG9BZnRlclByb2Nlc3NpbmdB
bGxQZW5kaW5nTW91c2VFdmVudHM6YCwgdG8gV0tXZWJWaWV3LiBUaGlzIGludm9rZXMgdGhlIGdp
dmVuCisgICAgICAgIGNhbGxiYWNrIGFmdGVyIGFsbCBxdWV1ZWQgbW91c2UgZXZlbnRzIGhhdmUg
YmVlbiBoYW5kbGVkIGJ5IHRoZSB3ZWIgcHJvY2Vzcy4gU2VlIFRvb2xzL0NoYW5nZUxvZyBmb3Ig
bW9yZQorICAgICAgICBkZXRhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyUHJvY2Vzc2luZ0FsbFBl
bmRpbmdNb3VzZUV2ZW50czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJv
Y2Vzc0RpZEV4aXQpOgorCisgICAgICAgIEludm9rZSBhbnkgb3V0c3RhbmRpbmcgY2FsbGJhY2tz
IGZvciBwcm9jZXNzaW5nIHBlbmRpbmcgbW91c2UgZXZlbnRzIHdoZW4gdGhlIHdlYiBwcm9jZXNz
IGlzIHRlcm1pbmF0ZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQWZ0ZXJQ
cm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKToKKworICAgICAgICBFaXRoZXIgaW52b2tl
IHRoZSBjYWxsYmFjayBpbW1lZGlhdGVseSBpZiB0aGVyZSBhcmUgbm8gbW91c2UgZXZlbnRzIHRv
IGJlIHByb2Nlc3NlZCwgb3IgaW5zZXJ0IHRoZSBjYWxsYmFjayBpbgorICAgICAgICBhIHF1ZXVl
IHRoYXQgd2lsbCBiZSBmbHVzaGVkIG9uY2UgYWxsIG1vdXNlIGV2ZW50cyBoYXZlIGJlZW4gaGFu
ZGxlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkRmluaXNoUHJvY2Vzc2lu
Z0FsbFBlbmRpbmdNb3VzZUV2ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpm
bHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpwaW5uZWRTdGF0ZVdpbGxD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpwaW5uZWRTdGF0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlk
Q2hhbmdlKToKKworICAgICAgICBEcml2ZS1ieSB0d2Vha3M6IHJlbW92ZSB1bm5lY2Vzc2FyeSBz
ZW1pY29sb25zIGFmdGVyIGVtcHR5IGltcGxlbWVudGF0aW9uIHN0dWJzLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZUV2ZW50KToKKworICAgICAgICBOb3RpZnkgdGhlIHBhZ2UgY2xpZW50IHdo
ZW4gdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBtb3VzZSBldmVudHMgbGVmdCBpbiB0aGUgcXVldWUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKToKKworICAgICAg
ICBBZGQgc29tZSBwbHVtYmluZyB0aHJvdWdoIFBhZ2VDbGllbnQsIHNvIHRoYXQgV2ViUGFnZVBy
b3h5IGNhbiB0ZWxsIFdlYlZpZXdJbXBsIHdoZW4gaXQgaXMgZmluaXNoZWQgcHJvY2Vzc2luZwor
ICAgICAgICBhbGwgbW91c2UgZXZlbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdl
Q2xpZW50SW1wbC5oOgorCiAyMDE4LTA4LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0
VG9Eb3dubG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCBiMTBhMDFjMDRhNzE4MDAxMmRlOWM2NTFkMDc0NjFhNDQyNGJjYTE3Li41
MmY3ODEyY2NjNTM2OWU1OTk3MTI0NzI4MWU5MjhmOTllMWExNGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYzMzcsNiArNjMzNywx
MSBAQCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogICAgIF9wYWdlLT5zZXRGb290ZXJCYW5uZXJI
ZWlnaHRGb3JUZXN0aW5nKGhlaWdodCk7CiB9CiAKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5n
QWxsUGVuZGluZ01vdXNlRXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgoreworICAgIF9p
bXBsLT5kb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cyhhY3Rpb24pOworfQor
CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAtICh2b2lkKV9yZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvOih2b2lkKF4pKEJPT0wsIEJPT0wsIE5TU3RyaW5nKiwgZG91YmxlLCBk
b3VibGUsIE5TSW50ZWdlcikpY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY1MjgxMmIxY2M5MzdkZjEy
OTkxNTVjZWIwOWUxN2UzMWEzYzY3N2QuLjU4MWE0YTY3ZDE4Njg2YjYxMTI4Zjg2N2ZiNDk4MWE3
YzZmN2ZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiAtICh2b2lkKV9zZXRIZWFkZXJCYW5uZXJI
ZWlnaHQ6KGludCloZWlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMykpOwogLSAo
dm9pZClfc2V0Rm9vdGVyQmFubmVySGVpZ2h0OihpbnQpaGVpZ2h0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEyLjMpKTsKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVuZGluZ01v
dXNlRXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAjZW5kaWYKIAogLSAodm9pZClfcmVxdWVzdEFjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uSW5mbzoodm9pZCheKShCT09MLCBCT09MLCBOU1N0cmluZyosIGRvdWJsZSwgZG91
YmxlLCBOU0ludGVnZXIpKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzLjQp
LCBpb3MoMTEuMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCmluZGV4IDBjNWIxZDU0NTI0NGZiOTVmNDE1ODU2MjE5Y2FiMGE2MTM5ODE4
YzAuLmQzNjUzOWY2OWE4ZjNkN2Q0MWIzMDY2OGFiZTM2MGU1MTkxZjE1MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0NSw2
ICsxNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsIHsgfQog
CisgICAgdm9pZCBkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKCkgZmlu
YWwgeyB9CisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKSBvdmVycmlkZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdl
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5oCmluZGV4IDI0ZDlmODMzZmMxMTg4YTlmNWE0ODgxZjY3MDlkMmUwZjEwOWQ2MDIuLmNh
MjFkOGJlNmUxNTA0YzIxOTcyMDE1ZTEzNmMxOWVlZjVjNDc2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEzOSw2ICsxMzks
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJh
bWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQ
ZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRl
OwogCiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDI2ZGI2YmQwYTUyMjk5N2MxZGY4Yjg3NDBjOTBjNTMz
YzkzMTk3MmEuLjQyOGFlYzNlZmEyZmQwYTJmMDIxMzc0NDZiNDIwNzJlZDBkNzk0MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTI2LDYgKzUy
Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoTlNUZXh0
Q2hlY2tpbmdSZXN1bHQgKmFjY2VwdGVkQ2FuZGlkYXRlKTsKIAorICAgIHZvaWQgZG9BZnRlclBy
b2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoZGlzcGF0Y2hfYmxvY2tfdCBhY3Rpb24pOwor
ICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOworCiAj
aWYgSEFWRShUT1VDSF9CQVIpCiAgICAgTlNUb3VjaEJhciAqbWFrZVRvdWNoQmFyKCk7CiAgICAg
dm9pZCB1cGRhdGVUb3VjaEJhcigpOwpAQCAtNjIyLDYgKzYyNSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtaWdodEJlZ2luU2Nyb2xsV2hpbGVJbmFjdGl2ZSgpOwogCiAgICAgdm9pZCBoYW5kbGVS
ZXF1ZXN0ZWRDYW5kaWRhdGVzKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1Rl
eHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlkYXRlcyk7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdN
b3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc8V2ViVmlld0lt
cGxEZWxlZ2F0ZT4+IG1fdmlldzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNsaWVudD4gbV9w
YWdlQ2xpZW50OwpAQCAtNzMyLDYgKzczNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBoYXMg
YmVlbiBhbHJlYWR5IHNlbnQgdG8gV2ViQ29yZS4KICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9r
ZXlEb3duRXZlbnRCZWluZ1Jlc2VudDsKICAgICBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiogbV9jb2xsZWN0ZWRLZXlwcmVzc0NvbW1hbmRzIHsgbnVsbHB0ciB9OworICAgIFZlY3Rv
cjxCbG9ja1B0cjx2b2lkKCk+PiBtX2NhbGxiYWNrSGFuZGxlcnNBZnRlclByb2Nlc3NpbmdQZW5k
aW5nTW91c2VFdmVudHM7CiAKICAgICBTdHJpbmcgbV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVx
dWVzdDsKICAgICBOU0ludGVnZXIgbV9sYXN0Q2FuZGlkYXRlUmVxdWVzdFNlcXVlbmNlTnVtYmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAx
ODA5ODlkN2JkMGQ1MTk3OGNjMzNhNzdiYzdjMmM0ZGRmODkxNjRhLi41NmRlMjNjMzZlNDQ4MTli
ZGQ4ZThjMWMyNjEyNGM5Y2VhZGRiY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTM3OCw2ICsxMzc4LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cHJvY2Vzc0RpZEV4aXQoKQogICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9v
dExheWVyKG5pbCk7CiAKICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9u
KGZhbHNlKTsKKyAgICBmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBt
X2dlc3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKIH0KQEAgLTMxNDQsNiArMzE0NSwyOSBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShOU1RleHRDaGVja2luZ1Jl
c3VsdCAqYWNjZXB0ZWRDYW5kaWRhdAogICAgIG1fcGFnZS0+aGFuZGxlQWNjZXB0ZWRDYW5kaWRh
dGUodGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KGFjY2VwdGVkQ2Fu
ZGlkYXRlKSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVu
ZGluZ01vdXNlRXZlbnRzKGRpc3BhdGNoX2Jsb2NrX3QgYWN0aW9uKQoreworICAgIGlmICghbV9w
YWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgIGFjdGlvbigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9jZXNz
aW5nUGVuZGluZ01vdXNlRXZlbnRzLmFwcGVuZChtYWtlQmxvY2tQdHIoYWN0aW9uKSk7Cit9CisK
K3ZvaWQgV2ViVmlld0ltcGw6OmRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVu
dHMoKQoreworICAgIGZsdXNoUGVuZGluZ01vdXNlRXZlbnRDYWxsYmFja3MoKTsKK30KKwordm9p
ZCBXZWJWaWV3SW1wbDo6Zmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpCit7CisgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IG1fY2FsbGJhY2tIYW5kbGVyc0FmdGVyUHJvY2Vzc2luZ1Bl
bmRpbmdNb3VzZUV2ZW50cykKKyAgICAgICAgY2FsbGJhY2soKTsKKworICAgIG1fY2FsbGJhY2tI
YW5kbGVyc0FmdGVyUHJvY2Vzc2luZ1BlbmRpbmdNb3VzZUV2ZW50cy5jbGVhcigpOworfQorCiB2
b2lkIFdlYlZpZXdJbXBsOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiB7CiAgICAgQk9PTCBuZWVk
c1ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMgPSBtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1
Z2luc0VuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZWE4
MmJhZjBkNzk3YzAyZTUzNmM0MGE5NTQ1ODVmNWRkMGMwMmE2Li5lMmM2OTFlMWNkYzU0MGM0MmNm
OGQ1MTUwNzgyOGJhYzU3NDAxNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0zOTMsOCArMzkzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VC
YWNrZ3JvdW5kQ29sb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ0F1ZGlvV2ls
bENoYW5nZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2Uo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2
b2lkIHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwaW5uZWRT
dGF0ZURpZENoYW5nZSgpIHsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgQVBJOjpPYmplY3QqKSA9IDA7CkBA
IC00MDMsOCArNDAzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlKCkgPSAwOwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkgeyB9CiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbWVkaWFTZXNzaW9uTWFuYWdlcigpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdhNmYyNzUzMmY2MDMz
OTE0ZDc4M2MwNjQ5MmU5ZGY3YzJlYzkxYTAuLjEzMTA1YzlhYTUzYjVhMDgyYTI0OTZkZDE4YWE3
NjcyMGVmZjg5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNTU0Myw4ICs1NTQzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQo
dWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBpZiAoIW1fbW91c2VF
dmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICIg
VUlQcm9jZXNzOiBoYW5kbGluZyBhIHF1ZXVlZCBtb3VzZSBldmVudCBmcm9tIGRpZFJlY2VpdmVF
dmVudCIpOwogICAgICAgICAgICAgcHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQotICAgICAgICAgICAgYXV0b21hdGlvblNlc3Np
b24tPm1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoKnRoaXMpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nl
c3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKKyAgICAgICAgICAgICAgICBhdXRvbWF0aW9u
U2Vzc2lvbi0+bW91c2VFdmVudHNGbHVzaGVkRm9yUGFnZSgqdGhpcyk7CisgICAgICAgICAgICBt
X3BhZ2VDbGllbnQuZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOwor
ICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBhNzFmZDQyNjg4NmNhNzAyOTU5
MmQ3MzYxOGY0ZmRlZWIwNDY5NDg0Li4xYzdhYmZjMjZjNjM2ZDk0ODBlM2ZkZGM3YzZiZWE1MTMz
MmYyNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VE
YXRhSW50ZXJhY3Rpb25DYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXND
YXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAorICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50
cygpIGZpbmFsIHsgfQorCiAgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKICAgICBS
ZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZWFl
MTYwNTMzMjc5MWM4OTM0YjNjYjQ4Y2U2YzU5N2E1ZDk4OTExZi4uOTcyY2E2NGZmN2M3NWJjZDg0
YzE3MzkxMmNlMDZjNmJkNWY0NzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTIzOCw2ICsyMzgsOCBAQCBwcml2YXRlOgogICAg
IF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSgpIG92ZXJyaWRl
OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VF
dmVudHMoKSBmaW5hbDsKKwogICAgIE5TVmlldyAqbV92aWV3OwogICAgIFdlYlZpZXdJbXBsKiBt
X2ltcGwgeyBudWxscHRyIH07CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDQ3
OTgyNzExNjE4NTIzMTlmNzcwZWQwN2MwMWYyYWI2NWJkYWM4OTUuLjNhNTkzNzkzNGQ4YjhkMDY0
NDIzZTc1MTY2YTY2YjU4YTA1OTM0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTg4OCw2ICs4ODgsMTEgQEAgX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgKlBhZ2VDbGllbnRJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB9
CiAjZW5kaWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBl
bmRpbmdNb3VzZUV2ZW50cygpCit7CisgICAgbV9pbXBsLT5kaWRGaW5pc2hQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzKCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiB7CiAgICAgbV9pbXBsLT5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKaW5k
ZXggZWFkNzE3YmRlY2FjNzQxZjg3NDY5MzQ0ODFiNjlmODFhMjM0ZmMwYy4uMTRmYTljNjRhOGQz
NWNiZmFhODM5ZWQ0OWUyMThlOTY0MDc0MTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gV2ViQ29yZTo6VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjo6TFRSOyB9CiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQ
ZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNs
aWVudEltcGwgY2xhc3MKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxl
cjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGNmMmE0YTU3ZTI1Y2NhYzQ2Mzg2ZDg4N2Y5Njk2ZTE4Y2U5MzA3NjUuLmM1YjNjMmVlNTJmYTFk
ZDM4NThhYTEyNGY1ZTE3MDZmODUyYjQ3ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODggQEAKKzIwMTgtMDgtMTAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09T
XSBJbXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudHMgdGhlIGN1cnJlbnRseSBzdHViYmVkIERyYWdBbmRE
cm9wU2ltdWxhdG9yIG9uIG1hY09TLCBhbmQgaW50cm9kdWNlcyBhIG5ldyBBUEkgdGVzdCBmb3Ig
cjIyNzI2Ni4gU2VlCisgICAgICAgIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0Fu
ZERyb3BUZXN0cy5oOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5k
RHJvcFNpbXVsYXRvck1hYy5tbS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RyYWdBbmREcm9wVGVzdHMubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tLgorCisgICAgICAgIEludHJvZHVjZSBh
IGZpbGUgZm9yIGNyb3NzLXBsYXRmb3JtIGRyYWcgYW5kIGRyb3AgdGVzdHMsIGN1cnJlbnRseSBm
b3IgaU9TIGFuZCBtYWNPUy4gQWRkaXRpb25hbGx5IGFkZCBhIHRlc3QKKyAgICAgICAgZm9yIHIy
MjcyNjYsIHdoaWNoIHdhcyBmaXhlZCBlYXJsaWVyIHRoaXMgeWVhciBidXQgY291bGQgbm90IGJl
IHRlc3RlZCBkdWUgdG8gYSBsYWNrIG9mIHRlc3RpbmcgbWVjaGFuaXNtIG9uCisgICAgICAgIG1h
Y09TIGluIFdlYktpdDIuCisKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWw6IEFkZGVkLgorCisg
ICAgICAgIE1pbm9yIHR3ZWFrcyB0byB0aGlzIHRlc3QgcGFnZSB0byBhZGQgImRyYWdvdmVyIiBh
bmQgImRyb3AiIGV2ZW50IGhhbmRsZXJzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0
bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHBhZ2UgdGhhdCBpbmNsdWRlcyBh
IGxpbmsgZW1iZWRkZWQgd2l0aGluIGFuIGlmcmFtZSBiZWxvdyBhIHBsYWluIHRleHQgaW5wdXQu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFRlc3RzTWFj
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMubW06IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbS4KKworICAg
ICAgICBNb3ZlIG9ubHkgZXhpc3RpbmcgV2ViS2l0MiBtYWNPUyBkcmFnIGFuZCBkcm9wIHRlc3Qg
KERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLk51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApIG91
dAorICAgICAgICBvZiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBhbmQgaW50byBhIG5l
dyBmaWxlLCBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tLiBBZGRpdGlvbmFsbHksIHJlbmFtZQorICAg
ICAgICBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cyB0byBMZWdhY3lEcmFnQW5kRHJvcFRlc3Rz
LCBzaW5jZSBpdCBub3cgb25seSBjb250YWlucyB0d28gbGVnYWN5IFdlYlZpZXcgdGVzdHMgZm9y
CisgICAgICAgIGRyYWcgYW5kIGRyb3AuCisKKyAgICAgICAgKCtbRnJhbWVMb2FkQ29tcGxldGlv
bkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpdKToKKyAgICAgICAgKC1bRnJh
bWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGluaXRXaXRoQ29tcGxldGlvbkJsb2NrOl0pOgorICAg
ICAgICAoLVtGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgd2ViVmlldzpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICgtW0RyYWdTb3VyY2UgZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrRm9yTG9jYWw6XSk6CisgICAgICAgICgtW0RyYWdJbmZvIGluaXRXaXRoSW1hZ2U6b2Zm
c2V0OnBhc3RlYm9hcmQ6c291cmNlOmRlc3RpbmF0aW9uV2luZG93Ol0pOgorICAgICAgICAoLVtE
cmFnSW5mbyBsYXN0TW91c2VQb3NpdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRMYXN0
TW91c2VQb3NpdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlv
bldpbmRvd10pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBkcmFnZ2VkSW1hZ2VMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBk
cmFnZ2VkSW1hZ2VdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6
CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIGRyYWdnaW5nU2VxdWVuY2VOdW1iZXJdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2xpZGVE
cmFnZ2VkSW1hZ2VUbzpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gbmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdG
b3JtYXRpb25dKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246XSk6
CisgICAgICAgICgtW0RyYWdJbmZvIGFuaW1hdGVzVG9EZXN0aW5hdGlvbl0pOgorICAgICAgICAo
LVtEcmFnSW5mbyBzZXRBbmltYXRlc1RvRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3BdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0
TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZW51bWVy
YXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25z
OnVzaW5nQmxvY2s6XSk6CisgICAgICAgICgtW0RyYWdJbmZvIHNwcmluZ0xvYWRpbmdIaWdobGln
aHRdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpnZXRUZXN0SW1hZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
d2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdl
LWRyb3B6b25lLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9E
cmFnQW5kRHJvcFNpbXVsYXRvci5oOgorCisgICAgICAgIEZsZXNoIG91dCBzb21lIG9mIHRoZSBE
cmFnQW5kRHJvcFNpbXVsYXRvciBBUEkgZm9yIG1hY09TLCBleHBvc2luZyAoYW1vbmcgb3RoZXIg
dGhpbmdzKSB0aGUgZHJhZyBwYXN0ZWJvYXJkLAorICAgICAgICB0aGUgY3VycmVudCBOU0RyYWdn
aW5nSW5mbywgdGhlIGluaXRpYWwgbG9jYXRpb24gb2YgdGhlIGRyYWcgaW1hZ2UsIGFuZCB0aGUg
ZHJhZyBpbWFnZSBpdHNlbGYuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpzaW11bGF0ZVBy
ZXNzdXJlOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlVXBBdFBvaW50Ol0pOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlTW92ZVRvUG9pbnQ6d2l0aEZsYWdzOl0pOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Om51bWJlck9mQ2xpY2tz
Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlRW50ZXJBdFBvaW50Ol0pOgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlRXhpdEF0UG9pbnQ6XSk6CisgICAgICAgICgtW1Rl
c3RXS1dlYlZpZXcgbW91c2VEcmFnVG9Qb2ludDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmll
dyBfbW91c2VFdmVudFdpdGhUeXBlOmF0TG9jYXRpb246XSk6CisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXcgX21vdXNlRXZlbnRXaXRoVHlwZTphdExvY2F0aW9uOmZsYWdzOnRpbWVzdGFtcDpjbGlj
a0NvdW50Ol0pOgorCisgICAgICAgIEFkZCBUZXN0V0tXZWJWaWV3IGhlbHBlcnMgdG8gc2VuZCBN
b3VzZU1vdmUsIE1vdXNlRW50ZXIgYW5kIE1vdXNlRHJhZyBOU0V2ZW50cyB0byB0aGUgd2ViIHZp
ZXcuIEFkZGl0aW9uYWxseSwKKyAgICAgICAgcmVuYW1lIHBhcmFtZXRlciBuYW1lcyB0byB0aGVz
ZSBoZWxwZXJzIHRvIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlc2UgbG9jYXRpb25zIGFy
ZSBhbGwgaW4gTlNXaW5kb3cKKyAgICAgICAgY29vcmRpbmF0ZXMuCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlldyB0eXBlQ2hhcmFjdGVyOl0pOgorCisgICAgICAgIERyaXZlLWJ5IHN0eWxlIGZp
eDogcHV0IHRoaXMgb3BlbmluZyBicmFjZSBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxp
bmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklP
Uy5tbToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJh
bWU6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRXaXRoV2ViVmlld0Zy
YW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdl
YlZpZXddKToKKworICAgICAgICBTbWFsbCBpT1MgRHJhZ0FuZERyb3BTaW11bGF0b3IgYWRqdXN0
bWVudHMgZm9yIG5ldyBEcmFnQW5kRHJvcFNpbXVsYXRvciBpbnRlcmZhY2VzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW06CisgICAgICAg
ICgtW0RyYWdBbmREcm9wVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246
c2ltdWxhdG9yOl0pOgorCisgICAgICAgIEludHJvZHVjZSBhIFdLV2ViVmlldyBzdWJjbGFzcyBm
b3IgdGVzdGluZyBkcmFnIGFuZCBkcm9wIHRoYXQgb3ZlcnJpZGVzIGAtZHJhZ0ltYWdlOmF0Om9m
ZnNldDrigKZgLCBhbmQgaW5zdGVhZAorICAgICAgICBhbGxvd3MgRHJhZ0FuZERyb3BTaW11bGF0
b3IgdG8gdGFrZSBvdmVyIHRoZSBkcmFnLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wVGVzdFdL
V2ViVmlldyBkcmFnSW1hZ2U6YXQ6b2Zmc2V0OmV2ZW50OnBhc3RlYm9hcmQ6c291cmNlOnNsaWRl
QmFjazpdKToKKworICAgICAgICBPdmVycmlkZSB0aGlzIGVudHJ5IHBvaW50IGludG8gZHJhZyBh
bmQgZHJvcCBjb2RlLCBhbmQgaW5zdGVhZCBjYWxsIG91dCB0byB0aGUgRHJhZ0FuZERyb3BTaW11
bGF0b3IgdG8KKyAgICAgICAgY29vcmRpbmF0ZSB0aGUgZHJhZy4KKworICAgICAgICAoLVtEcmFn
QW5kRHJvcFRlc3RXS1dlYlZpZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c10pOgorCisgICAg
ICAgIEhlbHBlciBtZXRob2QgdG8gd2FpdCBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGZpbmlzaCBo
YW5kbGluZyBhbGwgaW4tZmxpZ2h0IG1vdXNlIGV2ZW50cy4KKworICAgICAgICAoZGVmYXVsdEV4
dGVybmFsRHJhZ0ltYWdlKToKKworICAgICAgICBTZXQgdGhpcyBpbWFnZSBhcyB0aGUgZGVmYXVs
dCBkcmFnIGltYWdlIHdoZW4gc2ltdWxhdGluZyBhbiBpbmNvbWluZyBkcmFnIHNlc3Npb24gZnJv
bSBvdXRzaWRlIG9mIHRoZSB3ZWIgdmlldy4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBpbml0V2l0aFdlYlZpZXdGcmFtZTpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11
bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BTaW11bGF0b3IgZmxpcEFib3V0WEF4aXNJbkhvc3RXaW5kb3c6XSk6CisKKyAg
ICAgICAgSGVscGVyIG1ldGhvZCB0byBmbGlwIGEgZ2l2ZW4gcG9pbnQgYWJvdXQgdGhlIFggYXhp
cyBvZiB0aGUgd2luZG93LgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGxvY2F0
aW9uSW5WaWV3Rm9yQ3VycmVudFByb2dyZXNzXSk6CisKKyAgICAgICAgTWFwIGEgcHJvZ3Jlc3Mg
dmFsdWUgKGJldHdlZW4gMCBhbmQgMSkgdG8gYSBkcmFnIGxvY2F0aW9uLgorCisgICAgICAgICgt
W0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRpYWxQcm9ncmVzc0Zvck1vdXNlRHJhZ10pOgorCisg
ICAgICAgIERldGVybWluZXMgdGhlIGluaXRpYWwgcHJvZ3Jlc3MgdmFsdWUgd2hlbiBpbml0aWF0
aW9uIGEgZHJhZyBpbiB3ZWIgY29udGVudC4gVGhpcyBpcyB0aGUgaW5pdGlhbCBwcm9ncmVzcwor
ICAgICAgICByZXF1aXJlZCB0byBlbnN1cmUgdGhhdCB0aGUgZmlyc3QgbW91c2UgZHJhZyBldmVu
dCBleGNlZWRzIHRoZSBkcmFnIGRpc3RhbmNlIGh5c3RlcmVzaXMgYW5kIGNhdXNlcyBhbnkgZHJh
ZworICAgICAgICAoaWYgYXBwbGljYWJsZSkgdG8gYmVnaW4uCisKKyAgICAgICAgKC1bRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgcnVuRnJvbTp0bzpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11
bGF0b3IgcGVyZm9ybURyYWdJbldlYlZpZXc6YXRMb2NhdGlvbjp3aXRoSW1hZ2U6cGFzdGVib2Fy
ZDpzb3VyY2U6XSk6CisKKyAgICAgICAgSGVscGVyIHRvIGNvb3JkaW5hdGUgZHJhZyB1cGRhdGVz
IGluIGJvdGggdGhlIGNhc2VzIHdoZXJlIHdlJ3JlIHNpbXVsYXRpbmcgYSBkcmFnIHNlc3Npb24g
ZW50ZXJpbmcgZnJvbSBvdXRzaWRlCisgICAgICAgIG9mIHRoZSB3ZWIgdmlldywgYW5kIGluIHRo
ZSBjYXNlIHdoZXJlIHdlJ3ZlIGluaXRpYXRlZCBhIGRyYWcgZnJvbSB0aGUgd2ViIHZpZXcgaXRz
ZWxmLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdlYlZpZXddKToKKyAgICAg
ICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Igc2V0RXh0ZXJuYWxEcmFnUGFzdGVib2FyZDpdKToK
KyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgZXh0ZXJuYWxEcmFnUGFzdGVib2FyZF0p
OgorCisgICAgICAgIEp1c3QgbGlrZSBpdHMgaU9TIGNvdW50ZXJwYXJ0IChzZXRFeHRlcm5hbEl0
ZW1Qcm92aWRlcnM6KSwgc2V0dGluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgb24gbWFj
T1MgcHV0cyB0aGUKKyAgICAgICAgRHJhZ0FuZERyb3BTaW11bGF0b3IgaW4gYSBtb2RlIHRoYXQg
c2ltdWxhdGVzIGEgZHJhZyBjb21pbmcgaW4gZnJvbSBvdXRzaWRlIHRoZSB3ZWIgdmlldywgdXNp
bmcgdGhlIGdpdmVuCisgICAgICAgIHBhc3RlYm9hcmQuCisKKyAgICAgICAgKC1bRHJhZ0FuZERy
b3BTaW11bGF0b3Igc2V0RXh0ZXJuYWxEcmFnSW1hZ2U6XSk6CisgICAgICAgICgtW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGV4dGVybmFsRHJhZ0ltYWdlXSk6CisKKyAgICAgICAgTWF5IGJlIG9wdGlv
bmFsbHkgc2V0IHdoZW4gc3BlY2lmeWluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgdG8g
c3BlY2lmeSB0aGUgZHJhZyBpbWFnZSB1c2VkLiBJZiBubyBleHRlcm5hbAorICAgICAgICBkcmFn
IGltYWdlIGlzIHNwZWNpZmllZCwgZmFsbHMgYmFjayB0byB0aGUgZGVmYXVsdCBpbWFnZSByZXR1
cm5lZCBieSBgZGVmYXVsdEV4dGVybmFsRHJhZ0ltYWdlKClgLgorCisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGRyYWdnaW5nSW5mb10pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNp
bXVsYXRvciB3aWxsRW5kRHJhZ2dpbmdIYW5kbGVyXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9w
U2ltdWxhdG9yIHNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6XSk6CisKKyAgICAgICAgSG9vayB0
byBhbGxvdyB0ZXN0cyB0byBydW4gbG9naWMgcmlnaHQgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRy
b3AgKGlmIHRoZSBjdXJyZW50IGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBub25lKSBvcgorICAgICAg
ICBlbmRpbmcgdGhlIGRyYWcgc2Vzc2lvbiB3aXRob3V0IHBlcmZvcm1pbmcgYSBkcmFnIG9wZXJh
dGlvbi4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZpZXc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGRlYWxsb2NdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcGhhc2VdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmg6IENvcGll
ZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1t
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8ubW06IEFkZGVk
LgorCisgICAgICAgIE1vY2sgb2JqZWN0IGNvbmZvcm1pbmcgdG8gTlNEcmFnZ2luZ0luZm8gdGhh
dCBpcyBwYXNzZWQgdG8gV0tXZWJWaWV3IHdoZW4gaW52b2tpbmcgLWRyYWdnaW5nVXBkYXRlZDos
CisgICAgICAgIC1kcmFnZ2luZ0VudGVyZWQ6IGFuZCAtZHJhZ2dpbmdFeGl0ZWQ6LgorCisgICAg
ICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgt
W1Rlc3REcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtU
ZXN0RHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2lu
Z0luZm8gc2V0RHJhZ2dpbmdTb3VyY2U6XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8g
ZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hP
cHRpb25zOnVzaW5nQmxvY2s6XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dp
bmdEZXN0aW5hdGlvbldpbmRvd10pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIGRyYWdn
ZWRJbWFnZV0pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIHNldERyYWdnZWRJbWFnZTpd
KToKKyAgICAgICAgKC1bVGVzdERyYWdnaW5nSW5mbyBzbGlkZURyYWdnZWRJbWFnZVRvOl0pOgor
ICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb246XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gcmVzZXRTcHJpbmdM
b2FkaW5nXSk6CisKKyAgICAgICAgRW1wdHkgbWV0aG9kIHN0dWJzLCB0byBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgZnV0dXJlIGFzIG5lZWRlZC4KKwogMjAxOC0wOC0xMCAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0LXBhdGNoIHNldHVwLWdpdC1jbG9u
ZSBzaG91bGQgc2V0IEdpdCBjb3JlIGVkaXRvciB0byBjb21taXQtbG9nLWVkaXRvcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxOThlYjdkN2RlN2M0NzUxYmUwZjdlZjY2YTA5MTc5ZjQ4YjRl
NWRjLi44MmNkOWY5NDRmZWIyMjQ0MDBhNzc1MGMyMmViMzdjNGU5NmQ1ZjFmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzAzLDcgKzMwMyw2IEBACiAJCTZCRkQyOTRDMUQ1RTZDMUQwMDhF
Qzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRT
ZXQuY3BwICovOyB9OwogCQk3NTFCMDVENjFGOEVBQzQxMDAyOEEwOUUgLyogRGF0YWJhc2VUcmFj
a2VyVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc1MUIwNUQ1MUY4RUFDMUEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNrZXJUZXN0Lm1tICovOyB9
OwogCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTRDRUM4MDFGNjcy
MkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi87IH07Ci0JCTc2NDMyMkQ3MUI2
MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY0MzIyRDUxQjYxQ0NBNDAw
MjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi87IH07CiAJCTc2NzM0
OTlEMTkzMEM1QkIwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25h
bExvYWRfYnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZh
aWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRGMTU0NzY3
RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYx
RkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OwpAQCAtNjYwLDcgKzY1OSw2
IEBACiAJCUExNzk5MThCMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk5MTg5MUUx
Q0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCAqLzsgfTsKIAkJQTE3RUFDNTUy
MDgzMDVBMDAwODRCNDFCIC8qIGZpbmQucGRmIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0VBQzU0MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5k
LnBkZiAqLzsgfTsKIAkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODBDMEY5
MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi87IH07Ci0JCUExODE5QjEzMjA4
OTc1RDMwMEMwOUI4MyAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgxOUIxMjIwODk0RDA0MDBD
MDlCODMgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi87IH07CiAJCUExQzRGQjczMUJBQ0Qx
Q0EwMDM3NDJEMCAvKiBwYWdlcy5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMu
cGFnZXMgKi87IH07CiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzLm1tICovOyB9OwogCQlBMUVDMTE4ODFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xv
YWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUVDMTE4NzFGNDI1NDEyMDBEMDE0NkUgLyogUHJldmlld0xvYWRlci5jcHAgKi87IH07CkBAIC04
MTMsNiArODExLDkgQEAKIAkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5w
dXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NUUxNTcyMjExMkNFMjkwMDMwN0U4MiAvKiBLZXlib2FyZElucHV0VGVzdHNJT1MubW0g
Ki87IH07CiAJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUUxNTc1
MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJRjQ2MTI4
QjcyMTFDOEVENTAwRDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4QjYyMTFDOEVENTAw
RDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tICovOyB9OworCQlGNDYxMjhDQjIx
MUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NjEyOENBMjExRDQ3NTEwMEQ5RkFEQiAvKiBU
ZXN0RHJhZ2dpbmdJbmZvLm1tICovOyB9OworCQlGNDYxMjhENDIxMUU0MEZEMDBEOUZBREIgLyog
bGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxp
bmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sICovOyB9OworCQlGNDYxMjhENzIxMUU0ODlDMDBE
OUZBREIgLyogRHJhZ0FuZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NjEyOEQ2MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJv
cFRlc3RzLm1tICovOyB9OwogCQlGNDY0QUY5MjIwQkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5n
UHJvZ3Jlc3NUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NjRBRjkxMjBCQjY2RUEwMDdGOUIxOCAvKiBSZW5kZXJpbmdQcm9ncmVzc1Rlc3Rz
Lm1tICovOyB9OwogCQlGNDY4NDlCRTFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVz
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY4
NDlCRDFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi87IH07CiAJCUY0
Njg0OUMwMUVFRjVFRjMwMEI5MzdGRSAvKiByaWNoLWFuZC1wbGFpbi10ZXh0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2ODQ5QkYx
RUVGNUVEQzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCAqLzsgfTsKQEAgLTgy
OCw3ICs4MjksNyBAQAogCQlGNEFCNTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdn
YWJsZS1kaXYuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1k
aXYuaHRtbCAqLzsgfTsKIAkJRjRCODI1RDgxRUY0REJGQjAwNkU0MTdGIC8qIGNvbXByZXNzZWQt
ZmlsZXMuemlwIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0QjgyNUQ2MUVGNERCRDQwMDZFNDE3RiAvKiBjb21wcmVzc2VkLWZpbGVzLnppcCAq
LzsgfTsKIAkJRjRCODZENEYyMEJDRDVCMjAwOTlBN0U2IC8qIHBhaW50LXNpZ25pZmljYW50LWFy
ZWEtbWlsZXN0b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjRCODZENEUyMEJDRDU5NzAwOTlBN0U2IC8qIHBhaW50LXNpZ25pZmlj
YW50LWFyZWEtbWlsZXN0b25lLmh0bWwgKi87IH07Ci0JCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5
OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFn
QW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLzsgfTsKKwkJRjRCRkE2OEUxRTRBRDA4MDAwMTU0
Mjk4IC8qIExlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5
RHJhZ0FuZERyb3BUZXN0cy5tbSAqLzsgfTsKIAkJRjRDMkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8q
IGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEMyQUIyMTFERDZEOTQxMDBFMDZENUIgLyog
ZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovOyB9OwogCQlGNEM4Nzk3RjIwNTlEOEQz
MDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Ny
b2xsVmlld0luc2V0VGVzdHMubW0gKi87IH07CiAJCUY0Q0Q3NEM2MjBGREFDRkEwMERFMzc5NCAv
KiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRl
eHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLzsgfTsKQEAgLTgzOSw2ICs4NDAsOCBAQAogCQlG
NEQ1RTRFODFGMEM1RDM4MDA4QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RDVFNEU3MUYwQzVEMjcwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwg
Ki87IH07CiAJCUY0RDY1REE4MUY1RTQ3MDQwMDlEOEMyNyAvKiBzZWxlY3RlZC10ZXh0LWltYWdl
LWxpbmstYW5kLWVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENjVEQTcxRjVFNDZDMDAwOUQ4QzI3IC8qIHNlbGVjdGVk
LXRleHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCAqLzsgfTsKIAkJRjRERUY2RUQxRTlC
NERCNjAwNDhFRjYxIC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRERUY2RUMxRTlCNEQ5
NTAwNDhFRjYxIC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgKi87IH07CisJCUY0RTBB
MjhCMjExRTRBMkIwMEFGN0M3RiAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDYxMjhEODIxMUU0
OTYzMDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi87IH07CisJCUY0RTBBMjhG
MjExRTVENUIwMEFGN0M3RiAvKiBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFMEEyOEUyMTFFNUQ1QjAwQUY3QzdG
IC8qIERyYWdBbmREcm9wVGVzdHNNYWMubW0gKi87IH07CiAJCUY0RTNEODA4MjBGNzBCQjkwMDdC
NThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFM0Q4MDcyMEY3
MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAq
LzsgfTsKIAkJRjRGMTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93
LXBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1u
b3ctcGxheWluZy5odG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3
QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsg
fTsKQEAgLTkyMSw5ICs5MjQsNiBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlDRDU3Nzc5
QzIxMUNFOTFGMDAxQjM3MUUgLyogYXVkaW8td2l0aC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKLQkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8td2l0aC1h
dWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJQ0Q1Nzc3
OTkyMTFDRTBFNDAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyog
YWNjZXB0c0ZpcnN0TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4
NzFDODkyNUEwMDBBNTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC05
NDAsNiArOTQwLDcgQEAKIAkJCQk3QzlFRDk4QjE3QTE5RjRCMDBFNERDMzMgLyogYXR0cmlidXRl
ZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzEz
N0U0QjIxMTI0RDAxMDAyQkVFQTQgLyogQXR0clN0eWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQ0Q5RTI5MkUxQzkwQzMzRjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQlDRDU3Nzc5QzIxMUNFOTFGMDAxQjM3MUUgLyogYXVkaW8t
d2l0aC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3NkUxODJERjE1
NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDFBQjk5RjFFRjQ2OTZCMDA4M0ZBMDggLyogYXV0b2ZvY3VzLWNvbnRl
bnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTkzQ0ZBODY3MUNFQjlF
MzgwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0LWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xMDE0LDcgKzEwMTUsNyBAQAogCQkJCTkzMkFFNTNEMUQzNzEwNDcwMDVERkZB
RiAvKiBmb2N1cy1pbnB1dHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTdFOEIz
NjE4MTIwQjJGMDBBRUI3NEEgLyogRnJhZ21lbnROYXZpZ2F0aW9uLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250
ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQlBMTgxOUIxMzIwODk3
NUQzMDBDMDlCODMgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJRjRFMEEyOEIyMTFFNEEyQjAwQUY3QzdGIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0RjQwNUJDMUQ0QzBEMUMwMDdBOTcwNyAv
KiBmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUNENzhFMTFFMURCN0VFMkEwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVs
ZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzRkJEMUI0QTFEM0Q2NkFCMDBF
NkQ2RkEgLyogRnVsbHNjcmVlbkxheW91dENvbnN0cmFpbnRzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xMDg2LDYgKzEwODcsNyBAQAogCQkJCUMyNUNDQTBCMUU1MTQwQzEwMDI2Q0I4
QSAvKiBMaW5lQnJlYWtpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
NjFFRjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNDFBQjlBNzFFRjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtdGFyZ2V0LWRp
di5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0NjEyOEQ0MjExRTQwRkQwMEQ5RkFE
QiAvKiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk4MzYxRjE3ODFFNjEwQjRFMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJp
YnV0ZS13aXRoLXNsYXNoZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzQ5RDND
NDFEQjk3MjhFMDA0QTlGNjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OEU2NDc5MTYzMjcwNzQwMEI2QzY3NiAvKiBsaW5r
LXdpdGgtdGl0bGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTExNzIsNiArMTE3NCw3
IEBACiAJCQkJRjQxQUI5QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8q
IHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8t
d2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
Q0RDOEU0OTQxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDREM4RTQ5NTFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0
aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0QzMjFCMDQxRTNBODVGQTAw
RUIyMUM4IC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8tYW5kLXdlYmF1ZGlvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCkBAIC0xMTgwLDYgKzExODMsNyBAQAogCQkJCUNEQzhFNDk2MUJDNkYx
MDgwMDU5NEZFQyAvKiB2aWRlby13aXRob3V0LWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQ0RDOEU0OTcxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGhvdXQtYXVkaW8u
bXA0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTA3Q0QzMkY4MjA2NUI3MkIwMDY0QTRCRSAv
KiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUNENTc3Nzk5MjExQ0UwRTQw
MDFCMzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTFDMkI4MTg2MUM4OTI1OUQwMEE1NTI5RiAvKiB3ZWJmb250Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURC
Q2xlYW51cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTE3MTRFQjUxQ0Y4Qzc4
QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0xNTgzLDcgKzE1ODcsNiBAQAogCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAz
OUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvRmls
bEF2YWlsYWJsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1
OUM1OTAwOUVGMDZFIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2Fj
aGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcw
MDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1
c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNzY0MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0
ZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRh
cnlUeXBpbmdBdHRyaWJ1dGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Njcz
NDk5NzE5MzAxNkRDMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3BMb2Fk
aW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0Rp
ZEZhaWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUxODJEOTE1NDc1NTAxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3ODksNyArMTc5Miw2IEBACiAJCUExNzk5MThBMUUxQ0EyNDEwMEE1MDVF
RCAvKiBTaGFyZWRCdWZmZXJUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZEJ1ZmZlclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3RUFD
NTQyMDgzMDU2RTAwODRCNDFCIC8qIGZpbmQucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gZmluZC5wZGY7IHBhdGgg
PSBUZXN0cy9XZWJLaXQvZmluZC5wZGY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
QTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJ1bk9wZW5QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTE4MTlCMTIyMDg5NEQwNDAwQzA5QjgzIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImZ1bGwtcGFnZS1kcm9wem9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTE4QUE4Q0MxQzNGQTIxODAwOUIyQjk3IC8qIENvbnRlbnRGaWx0ZXJpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEZpbHRlcmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1RDE4REQzREI3MDBCNUVBOEEgLyogRG93bmxv
YWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNEZCNkMxQkFDQ0U1MDAwMzc0MkQw
IC8qIFF1aWNrTG9vay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1aWNrTG9vay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDYsNiArMjA0
OCwxMiBAQAogCQlGNDVFMTU3NTIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0SW5wdXREZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2MTI4QjQyMTFDODYxQTAwRDlGQURCIC8qIERyYWdBbmRE
cm9wU2ltdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERyYWdBbmRE
cm9wU2ltdWxhdG9yLmg7IHBhdGggPSBjb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDYxMjhCNjIxMUM4RUQ1MDBEOUZBREIgLyogRHJh
Z0FuZERyb3BTaW11bGF0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJv
cFNpbXVsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4Qzky
MTFENDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVz
dERyYWdnaW5nSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDYxMjhDQTIx
MUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFRlc3REcmFnZ2luZ0luZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
NjEyOEQxMjExRTJEMjUwMEQ5RkFEQiAvKiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NjEyOEQ1MjExRTQ4OUMwMEQ5RkFE
QiAvKiBEcmFnQW5kRHJvcFRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdBbmREcm9wVGVzdHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURC
IC8qIERyYWdBbmREcm9wVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJv
cFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDYxMjhEODIxMUU0OTYz
MDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdl
LWRyb3B6b25lLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDY0QUY5MTIw
QkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlbmRlcmluZ1Byb2dyZXNzVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJUGFzdGVib2FyZFRlc3RzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDY4NDlCRjFFRUY1RURDMDBCOTM3RkUgLyogcmljaC1hbmQt
cGxhaW4tdGV4dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDYyLDcgKzIwNzAsNyBAQAogCQlGNEFCNTc4
OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCODI1RDYxRUY0REJENDAwNkU0MTdGIC8qIGNvbXByZXNz
ZWQtZmlsZXMuemlwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gYXJjaGl2ZS56aXA7IHBhdGggPSAiY29tcHJlc3NlZC1maWxlcy56aXAiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEI4NkQ0RTIwQkNENTk3MDA5OUE3RTYgLyogcGFpbnQt
c2lnbmlmaWNhbnQtYXJlYS1taWxlc3RvbmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJwYWludC1zaWduaWZpY2FudC1hcmVhLW1pbGVzdG9uZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9w
UGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5RHJhZ0Fu
ZERyb3BUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDMkFCMjExREQ2
RDk0MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Ny
b2xsVmlld0luc2V0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3SW5z
ZXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDRDc0QzUyMEZEQUNG
NTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJ0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3NCw2ICsyMDgyLDcgQEAKIAkJRjRENUU0RTcxRjBDNUQyNzAw
OEMxQTQ5IC8qIGRyYWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkcmFn
c3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEQ2NURBNzFGNUU0NkMwMDA5RDhDMjcgLyogc2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFu
ZC1lZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNlbGVjdGVkLXRl
eHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0REVGNkVDMUU5QjREOTUwMDQ4RUY2MSAvKiBpbWFnZS1pbi1saW5rLWFuZC1pbnB1
dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImltYWdlLWluLWxpbmstYW5kLWlu
cHV0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEUwQTI4RTIxMUU1RDVC
MDBBRjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERyYWdBbmREcm9wVGVzdHNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RTNEODA3MjBGNzA4RTQwMDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRp
Y2xlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2lnbmlmaWNhbnQtdGV4dC1t
aWxlc3RvbmUtYXJ0aWNsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRG
MTM3OTExRDlCNjgzMjAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5
aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY0MDVCQTFENEMwQ0Y4
MDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8t
d2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTYsNiAr
MjMwNSw4IEBACiAJCQkJNTE4RUU1MTYyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xv
YWRpbmcubW0gKi8sCiAJCQkJNTE4RUU1MTcyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVy
c0xvYWRpbmdQbHVnaW4ubW0gKi8sCiAJCQkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThBIC8qIERv
d25sb2FkLm1tICovLAorCQkJCUY0NjEyOEQ1MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJv
cFRlc3RzLmggKi8sCisJCQkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9w
VGVzdHMubW0gKi8sCiAJCQkJQTE1NTAyMjgxRTA1MDIwQjAwQTI0QzU3IC8qIER1cGxpY2F0ZUNv
bXBsZXRpb25IYW5kbGVyQ2FsbHMubW0gKi8sCiAJCQkJRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5
IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi8sCiAJCQkJQ0RBMjlCMjgyMEZEMkE5OTAwRjE1Q0VE
IC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbSAqLywKQEAgLTI1ODcsNiArMjU5OCw3IEBA
CiAJCQkJNUM5RTU5NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2Fs
ICovLAogCQkJCUY0ODU2Q0EyMUU2NDk4QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQu
aHRtbCAqLywKIAkJCQkzNzYwQzRGMjIxMTI0QkQwMDAyMzNBQ0MgLyogQXR0clN0eWxlLmh0bWwg
Ki8sCisJCQkJQ0Q1Nzc3OUEyMTFDRTZCNzAwMUIzNzFFIC8qIGF1ZGlvLXdpdGgtd2ViLWF1ZGlv
Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTgxRUY0NjkyQzAwODNGQTA4IC8qIGF1dG9mb2N1cy1jb250
ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQk5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyogYXV0
b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sICovLAogCQkJCTJFMTRBNTI4MUQzRkU4QjgwMDEwRjM1
QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8sCkBAIC0yNjI4LDYgKzI2
NDAsNyBAQAogCQkJCUExN0VBQzU0MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5kLnBkZiAqLywKIAkJ
CQlGNDNFM0JDMDIwREFEQjgwMDBBNEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovLAogCQkJ
CTkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAvKiBmb2N1cy1pbnB1dHMuaHRtbCAqLywKKwkJCQlG
NDYxMjhEODIxMUU0OTYzMDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8sCiAJ
CQkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRl
by13aXRoLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q3OEUxMUIxREI3RUEzNjAwMTRBMkRFIC8qIEZ1
bGxzY3JlZW5EZWxlZ2F0ZS5odG1sICovLAogCQkJCTNGQkQxQjQ5MUQzOUQxREIwMEU2RDZGQSAv
KiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMuaHRtbCAqLywKQEAgLTI2ODIsNiArMjY5NSw3
IEBACiAJCQkJQzI1Q0NBMEExRTUxM0Y0OTAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5odG1sICov
LAogCQkJCUY0MUFCOTk2MUVGNDY5MkMwMDgzRkEwOCAvKiBsaW5rLWFuZC1pbnB1dC5odG1sICov
LAogCQkJCUY0MUFCOTlEMUVGNDY5MkMwMDgzRkEwOCAvKiBsaW5rLWFuZC10YXJnZXQtZGl2Lmh0
bWwgKi8sCisJCQkJRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxpbmstaW4taWZyYW1lLWFu
ZC1pbnB1dC5odG1sICovLAogCQkJCThDMTBBRjk3MjA2NDY3ODMwMDE4RkQ5MCAvKiBsb2NhbHN0
b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi8sCiAJCQkJNTFFNkE4OTUxRDJGMUM3NzAw
QzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi8sCiAJCQkJNDZDNTE5RTIxRDM1NjI5
NjAwREFBNTFBIC8qIExvY2FsU3RvcmFnZU51bGxFbnRyaWVzLmh0bWwgKi8sCkBAIC0yNzI0LDEz
ICsyNzM4LDEyIEBACiAJCQkJRjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1k
ZWZlcnJlZC1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4M0ZBMDggLyog
dGV4dGFyZWEtdG8taW5wdXQuaHRtbCAqLywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEg
LyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKKwkJCQlDRDU3Nzc5QjIx
MUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8s
CisJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAwMUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8s
CiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NL
aWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCiAJCQkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8q
IFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5odG1sICovLAogCQkJCTJFMTMxQzE3MUQ4M0E5
N0UwMDFCQTM2QyAvKiB3aWRlLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywK
LQkJCQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywK
LQkJCQlDRDU3Nzc5QTIxMUNFNkI3MDAxQjM3MUUgLyogYXVkaW8td2l0aC13ZWItYXVkaW8uaHRt
bCAqLywKLQkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1h
bmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTIzLDYgKzMxMzYsOCBAQAogCQkJCUMwODEyMjQ0
MTNGQzE5RUMwMERDMzlBRSAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3cubSAq
LywKIAkJCQkyOUFCOEFBMzE2NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZS5oICovLAogCQkJCTI5QUI4QUEyMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tICovLAorCQkJCUY0NjEyOEM5MjExRDQ3NTEwMEQ5
RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLmggKi8sCisJCQkJRjQ2MTI4Q0EyMTFENDc1MTAwRDlG
QURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gKi8sCiAJCQkJQzA4NTg3QkUxM0ZFOTU2QzAwMUVG
NEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5oICovLAogCQkJCUMwODU4N0JEMTNGRTk1NkMwMDFF
RjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rlc3QubW0gKi8sCiAJCQkpOwpAQCAtMzE2Nyw3ICszMTgy
LDcgQEAKIAkJCQk0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLywKIAkJ
CQkzNzUxQUY3QTE2OTUxOEY4MDA3NjQzMTkgLyogRE9NTm9kZUZyb21KU09iamVjdC5tbSAqLywK
IAkJCQkzN0RDNjc4QjE0MEQ3QzUwMDBBQkNDREIgLyogRE9NUmFuZ2VPZlN0cmluZy5tbSAqLywK
LQkJCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVz
dHMubW0gKi8sCisJCQkJRjRFMEEyOEUyMTFFNUQ1QjAwQUY3QzdGIC8qIERyYWdBbmREcm9wVGVz
dHNNYWMubW0gKi8sCiAJCQkJQzA3RTZDQUUxM0ZENjc2NTAwMzhCMjJCIC8qIER5bmFtaWNEZXZp
Y2VTY2FsZUZhY3Rvci5tbSAqLywKIAkJCQkxQTlGQjZDQzFDQTM0QkU1MDA5NjYxMjQgLyogRWFy
bHlLVk9DcmFzaC5tbSAqLywKIAkJCQk0QkI0MTYwMzE2ODE1RjkxMDA4MjQyMzggLyogRWxlbWVu
dEF0UG9pbnRJbldlYkZyYW1lLm1tICovLApAQCAtMzE4MCw2ICszMTk1LDcgQEAKIAkJCQlDNTA3
RThBNjE0QzY1NDVCMDA1RDZCM0IgLyogSW5zcGVjdG9yQmFyLm1tICovLAogCQkJCTU3RjEwRDky
MUM3RTdCMzgwMEVDREYzMCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tICovLAogCQkJ
CTRCQjQxNjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5t
bSAqLywKKwkJCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJhZ0FuZERyb3BU
ZXN0cy5tbSAqLywKIAkJCQk3QTdCMEU3RTFFQUZFNDU0MDA2QUI4QUUgLyogTGltaXRUaXRsZVNp
emUubW0gKi8sCiAJCQkJNTc5MDFGQUUxQ0FGMTM3MTAwRUQ2NEY5IC8qIExvYWRJbnZhbGlkVVJM
UmVxdWVzdC5tbSAqLywKIAkJCQlDREEzMTU5NjFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLm1tICovLApAQCAtMzIxNiw3ICszMjMyLDYgQEAKIAkJCQkxQTdC
RkMwQTE3MUEwQkRCMDBCQzVGNjQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSAqLywKIAkJCQlB
NUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0g
Ki8sCiAJCQkJRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdU
ZXN0cy5tbSAqLywKLQkJCQk3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5
VHlwaW5nQXR0cmlidXRlcy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyMzYsNyArMzI1MSw2IEBACiAJCQkJRjRGQTkxODIxRTYx
ODU2NjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3Bh
Y2UuaHRtbCAqLywKIAkJCQkxQTdFOEIzNTE4MTIwOTM2MDBBRUI3NEEgLyogRnJhZ21lbnROYXZp
Z2F0aW9uLmh0bWwgKi8sCiAJCQkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFn
ZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKLQkJCQlBMTgxOUIxMjIwODk0RDA0MDBDMDlCODMg
LyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgKi8sCiAJCQkJQ0RCRkNDNDIxQTlGRjQ0ODAwQTdC
NjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi8sCiAJCQkJOUI0RjhGQTYx
NTlENTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8sCiAJCQkJ
OUIyNkZDQjQxNTlEMTVFNzAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5o
dG1sICovLApAQCAtMzcwOSwxMCArMzcyMywxMSBAQAogCQkJCTUxOEVFNTE4MjBBNzhDRTIwMEUw
MjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdG
MjMxQTQxMUFGNjAwNDQ3QzRDIC8qIERvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFRUUxQTQxMUFFNjAwNDQ3QzRDIC8qIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0Fu
ZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQ0RjNCNjFFNEUy
QkNCMDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNDYxMjhCNzIxMUM4RUQ1MDBEOUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlGNDYxMjhENzIxMUU0ODlDMDBEOUZBREIgLyogRHJhZ0Fu
ZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDRGM0I5MUU0RTM2RTQwMEJCMjc2
NyAvKiBEcmFnQW5kRHJvcFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjRFMEEyOEYy
MTFFNUQ1QjAwQUY3QzdGIC8qIERyYWdBbmREcm9wVGVzdHNNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTU1MDIyQTFFMDUwMjBCMDBBMjRDNTcgLyogRHVwbGljYXRlQ29tcGxldGlvbkhhbmRs
ZXJDYWxscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJFMUE0MTFBN0UwMDQ0N0M0QyAv
KiBEeW5hbWljRGV2aWNlU2NhbGVGYWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBCRjg5
MjFERDU5OUI2MDBCMDAzMjggLyogRWFybHlLVk9DcmFzaC5tbSBpbiBTb3VyY2VzICovLApAQCAt
Mzc0OCw3ICszNzYzLDYgQEAKIAkJCQlDRDc4RTExRDFEQjdFQTY2MDAxNEEyREUgLyogRnVsbHNj
cmVlbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkQxRDBBNjUwQzAwRkVC
Q0YzIC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
REJGQ0M0NTFBOUZGNDUzMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0g
aW4gU291cmNlcyAqLywKLQkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVk
QXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNEQjc5NjkxRUY2M0IzQzAw
QkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY4MUE0MTFB
RTYwMDQ0N0M0QyAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MzFFRkZG
NjFFN0I1RThEMDBEMkVCQjggLyogR2VvbG9jYXRpb24ubW0gaW4gU291cmNlcyAqLywKQEAgLTM3
OTksNiArMzgxMyw3IEBACiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJk
SW5wdXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA2MUE0MTFBRTYwMDQ0
N0M0QyAvKiBMYXlvdXRNaWxlc3RvbmVzV2l0aEFsbENvbnRlbnRJbkZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFn
QW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E2NkJEQjYxRUFGMTRFRjAwQ0ND
OTI0IC8qIExpbWl0VGl0bGVTaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBN0IwRTdGMUVB
RkU0QzMwMDZBQjhBRSAvKiBMaW1pdFRpdGxlU2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMy
NUNDQTA2MUU1MTM4MEIwMDI2Q0I4QSAvKiBMaW5lQnJlYWtpbmcubW0gaW4gU291cmNlcyAqLywK
QEAgLTM4NjcsNiArMzg4Miw3IEBACiAJCQkJN0NDRTdFQTcxQTQxMUExMzAwNDQ3QzRDIC8qIFBs
YXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzQkFFRThEMUVGNDYyNTUw
MERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YyNjFBNDExQUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAq
LywKKwkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVkQXVkaW9CdWZmZXJT
aXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MxQUY3OTUxRThEQ0JBQjAwMjY0NUI5IC8qIFBy
ZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQjFBNDEx
QUU2MDA0NDdDNEMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjJDMUE0MTFCMTAwMDQ0N0M0QyAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9S
ZXNpemluZy5tbSBpbiBTb3VyY2VzICovLApAQCAtMzkzNiw2ICszOTUyLDcgQEAKIAkJCQkxQzcz
NEI1MzIwNzg4QzQ4MDBGNDMwRUEgLyogU3lzdGVtQ29sb3JzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMTYxQTQxMUFFNjAwNDQ3QzRDIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUE5MUE0MTFBMUQwMDQ0N0M0QyAvKiBUZXN0QnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ2MTI4Q0IyMTFENDc1MTAw
RDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3
NjIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRDFDMDRBNzFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUExNEZDNTkwMUI4QUUzNkYwMEQxMDdFQiAvKiBUZXN0UHJv
dG9jb2wubW0gaW4gU291cmNlcyAqLywKQEAgLTQwMzIsNyArNDA0OSw2IEBACiAJCQkJRjRGQTkx
ODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hv
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dl
YlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKLQkJCQk3NjQzMjJENzFCNjFDQ0MzMDAy
NEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RyYWdBbmREcm9wVGVzdHMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNmVkMjBhNzY2MDUyNWYx
MzUwNGE4YzA0OTVmZWE1MGI4YTY5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMuaApAQCAtMCwwICsxLDI2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTcyZGIzZWE2ZjA0MDQ2M2IxODU3OTA3MDY4N2I3NjVkMDhhNzk3NwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BU
ZXN0cy5tbQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
KworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEcmFnSW1hZ2VMb2NhdGlvbkZvckxpbmtJblN1YmZy
YW1lKQoreworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXdGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDQwMCwgNDAw
KV0pOworICAgIFtbc2ltdWxhdG9yIHdlYlZpZXddIHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAImxpbmstaW4taWZyYW1lLWFuZC1pbnB1dCJdOworICAgIFtzaW11bGF0b3IgcnVuRnJv
bTpOU01ha2VQb2ludCgyMDAsIDM3NSkgdG86TlNNYWtlUG9pbnQoMjAwLCAxMjUpXTsKKworICAg
IEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFtbc2ltdWxhdG9yIHdl
YlZpZXddIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdpbnB1dCcpLnZhbHVlIl0pOworCisjaWYgUExBVEZPUk0oTUFDT1MpCisgICAgRVhQRUNU
X1RSVUUoTlNQb2ludEluUmVjdChbc2ltdWxhdG9yIGluaXRpYWxEcmFnSW1hZ2VMb2NhdGlvbklu
Vmlld10sIE5TTWFrZVJlY3QoMCwgMjUwLCA0MDAsIDI1MCkpKTsKKyNlbmRpZgorfQorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6b25l
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2Z1bGwtcGFnZS1k
cm9wem9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MzE5NzE4Yjk5ZTZjNGY0MWFmMjU1MWI0MDc0NzJk
ZmExNDA2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2Z1bGwtcGFnZS1kcm9wem9uZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoIj4KKzxib2R5IHN0eWxlPSJ3aWR0aDogMTAwdnc7IGhlaWdodDogMTAwdmg7IG1hcmdpbjog
MDsiCisgICAgb25kcmFnZW50ZXI9IndpbmRvdy5vYnNlcnZlZERyYWdFbnRlciA9IHRydWU7IHJl
dHVybiBmYWxzZTsiCisgICAgb25kcmFnb3Zlcj0id2luZG93Lm9ic2VydmVkRHJhZ092ZXIgPSB0
cnVlOyByZXR1cm4gZmFsc2U7IgorICAgIG9uZHJvcD0id2luZG93Lm9ic2VydmVkRHJvcCA9IHRy
dWU7IHJldHVybiBmYWxzZTsiPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sCmlu
ZGV4IDIwYmNlMjUwOGEwNTVjMjYwZTQ0NmQzOTI2NmI1M2NiOTdjNjg2MjkuLjk1MWNmNWNkMzIx
NWUwNWZjYjhjNjEyYWEyOTA3YTBkZjYwM2I5ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQuaHRtbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWluLWxpbmstYW5k
LWlucHV0Lmh0bWwKQEAgLTI1LDYgKzI1LDYgQEAKIDwvaGVhZD4KIAogPGJvZHk+Ci0gICAgPGRp
dj48YSBpZD0ibGluayIgaHJlZj0iaHR0cHM6Ly93d3cuYXBwbGUuY29tIj48aW1nIHNyYz0iaWNv
bi5wbmciPjwvaW1nPjwvYT48L2Rpdj4KLSAgICA8ZGl2PjxpbnB1dCBpZD0iZWRpdG9yIj48L2lu
cHV0PjwvZGl2PgorICAgIDxkaXYgaWQ9InRvcCI+PGEgaWQ9ImxpbmsiIGhyZWY9Imh0dHBzOi8v
d3d3LmFwcGxlLmNvbSI+PGltZyBzcmM9Imljb24ucG5nIj48L2ltZz48L2E+PC9kaXY+CisgICAg
PGRpdiBpZD0iYm90dG9tIj48aW5wdXQgaWQ9ImVkaXRvciI+PC9pbnB1dD48L2Rpdj4KIDwvYm9k
eT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbGlu
ay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2xpbmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTgz
ZTZlZjk1Yzg1M2IzMDE2MWU2NTQzMzQ1ZGYwZjFhZDQyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2xpbmstaW4taWZyYW1lLWFuZC1p
bnB1dC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEiPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVp
Z2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKworaWZyYW1lLCBpbnB1dCB7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgaGVpZ2h0OiAyNTBweDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBm
b250LXNpemU6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0Pjwv
aW5wdXQ+Cis8aWZyYW1lIHNyY2RvYz0iPGEgaHJlZj0naHR0cHM6Ly93d3cuYXBwbGUuY29tLycg
c3R5bGU9J2ZvbnQtc2l6ZTogMTAwcHg7Jz5MaW5rIHRvIGFwcGxlLmNvbTwvYT4iPgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BQ
YXN0ZWJvYXJkVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5k
RHJvcFBhc3RlYm9hcmRUZXN0cy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgx
YmJhZTBjN2FlNTQyNTI3NGNhYThhM2ExZjZmNGEwMTQ0NGRjZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDI4OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgUExBVEZPUk0o
TUFDKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgotI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4KLSNpbXBvcnQgPFdlYktpdC9X
ZWJWaWV3Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotQGludGVyZmFjZSBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgOiBOU09iamVj
dDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gewotICAgIEJsb2NrUHRyPHZvaWQgKHZvaWQpPiBfY29t
cGxldGlvbkJsb2NrOwotfQotKyAoaW5zdGFuY2V0eXBlKWxpc3RlbmVyV2l0aENvbXBsZXRpb25C
bG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxvY2s7Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIKLQotKyAoaW5zdGFuY2V0eXBlKWxp
c3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxv
Y2sKLXsKLSAgICByZXR1cm4gW1tbRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGFsbG9jXSBp
bml0V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdIGF1dG9yZWxlYXNlXTsKLX0K
LQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9j
a190KWNvbXBsZXRpb25CbG9jawotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKQotICAg
ICAgICBfY29tcGxldGlvbkJsb2NrID0gY29tcGxldGlvbkJsb2NrOwotCi0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKLXsKLSAgICBpZiAoX2NvbXBsZXRpb25CbG9jaykK
LSAgICAgICAgX2NvbXBsZXRpb25CbG9jaygpOwotfQotQGVuZAotCi1AaW50ZXJmYWNlIERyYWdT
b3VyY2UgOiBOU09iamVjdAotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza0ZvckxvY2FsOihCT09MKWZsYWc7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBEcmFn
U291cmNlCi0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tG
b3JMb2NhbDooQk9PTClmbGFnCi17Ci0gICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7Ci19
Ci0KLUBlbmQKLQotQGludGVyZmFjZSBEcmFnSW5mbyA6IE5TT2JqZWN0PE5TRHJhZ2dpbmdJbmZv
PiB7Ci0gICAgTlNQb2ludCBfbGFzdE1vdXNlUG9zaXRpb247Ci0gICAgUmV0YWluUHRyPE5TSW1h
Z2U+IF9pbWFnZTsKLSAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBfcGFzdGVib2FyZDsKLSAg
ICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gX3NvdXJjZTsKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+
IF93aW5kb3c7Ci0gICAgTlNTaXplIF9vZmZzZXQ7Ci0gICAgTlNJbnRlZ2VyIF9udW1iZXJPZlZh
bGlkSXRlbXNGb3JEcm9wOwotfQotQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgbGFzdE1v
dXNlUG9zaXRpb247Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBEcmFnSW5mbwotCi0tIChpZClp
bml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0OihOU1NpemUpb2Zmc2V0IHBhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgc291cmNlOihEcmFnU291cmNlICopc291
cmNlIGRlc3RpbmF0aW9uV2luZG93OihOU1dpbmRvdyAqKWRlc3RpbmF0aW9uV2luZG93Ci17Ci0g
ICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX2ltYWdlID0gaW1hZ2U7Ci0g
ICAgICAgIF9wYXN0ZWJvYXJkID0gcGFzdGVib2FyZDsKLSAgICAgICAgX3NvdXJjZSA9IHNvdXJj
ZTsKLSAgICAgICAgX3dpbmRvdyA9IGRlc3RpbmF0aW9uV2luZG93OwotICAgICAgICBfb2Zmc2V0
ID0gb2Zmc2V0OwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTlNQb2ludClsYXN0
TW91c2VQb3NpdGlvbgotewotICAgIHJldHVybiBfbGFzdE1vdXNlUG9zaXRpb247Ci19Ci0KLS0g
KHZvaWQpc2V0TGFzdE1vdXNlUG9zaXRpb246KE5TUG9pbnQpbGFzdE1vdXNlUG9zaXRpb24KLXsK
LSAgICBfbGFzdE1vdXNlUG9zaXRpb24gPSBsYXN0TW91c2VQb3NpdGlvbjsKLX0KLQotLSAoTlNX
aW5kb3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93Ci17Ci0gICAgcmV0dXJuIF93aW5kb3cu
Z2V0KCk7Ci19Ci0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2sKLXsKLSAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKLX0KLQotLSAoTlNQb2ludClk
cmFnZ2luZ0xvY2F0aW9uCi17Ci0gICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKLX0KLQot
LSAoTlNQb2ludClkcmFnZ2VkSW1hZ2VMb2NhdGlvbgotewotICAgIHJldHVybiBOU01ha2VQb2lu
dChfbGFzdE1vdXNlUG9zaXRpb24ueCArIF9vZmZzZXQud2lkdGgsIF9sYXN0TW91c2VQb3NpdGlv
bi55ICsgX29mZnNldC5oZWlnaHQpOwotfQotCi0tIChOU0ltYWdlICopZHJhZ2dlZEltYWdlCi17
Ci0gICAgcmV0dXJuIF9pbWFnZS5nZXQoKTsKLX0KLQotLSAoTlNQYXN0ZWJvYXJkICopZHJhZ2dp
bmdQYXN0ZWJvYXJkCi17Ci0gICAgcmV0dXJuIF9wYXN0ZWJvYXJkLmdldCgpOwotfQotCi0tIChp
ZClkcmFnZ2luZ1NvdXJjZQotewotICAgIHJldHVybiBfc291cmNlLmdldCgpOwotfQotCi0tIChO
U0ludGVnZXIpZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcgotewotICAgIHJldHVybiAwOwotfQotCi0t
ICh2b2lkKXNsaWRlRHJhZ2dlZEltYWdlVG86KE5TUG9pbnQpc2NyZWVuUG9pbnQKLXsKLX0KLQot
LSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5T
VVJMICopZHJvcERlc3RpbmF0aW9uCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNEcmFn
Z2luZ0Zvcm1hdGlvbilkcmFnZ2luZ0Zvcm1hdGlvbgotewotICAgIHJldHVybiBOU0RyYWdnaW5n
Rm9ybWF0aW9uRGVmYXVsdDsKLX0KLQotLSAodm9pZClzZXREcmFnZ2luZ0Zvcm1hdGlvbjooTlNE
cmFnZ2luZ0Zvcm1hdGlvbilmb3JtYXRpb24KLXsKLX0KLQotLSAoQk9PTClhbmltYXRlc1RvRGVz
dGluYXRpb24KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpc2V0QW5pbWF0ZXNUb0Rl
c3RpbmF0aW9uOihCT09MKWZsYWcKLXsKLX0KLQotLSAoTlNJbnRlZ2VyKW51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3AKLXsKLSAgICByZXR1cm4gX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7Ci19
Ci0KLS0gKHZvaWQpc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDooTlNJbnRlZ2VyKW51bWJl
cgotewotICAgIF9udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbnVtYmVyOwotfQotCi0tICh2
b2lkKWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNFbnVtZXJhdGlvbk9wdGlv
bnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmlldyBjbGFzc2VzOihOU0FycmF5ICopY2xh
c3NBcnJheSBzZWFyY2hPcHRpb25zOihOU0RpY3Rpb25hcnkgKilzZWFyY2hPcHRpb25zIHVzaW5n
QmxvY2s6KHZvaWQgKF4pKE5TRHJhZ2dpbmdJdGVtICpkcmFnZ2luZ0l0ZW0sIE5TSW50ZWdlciBp
ZHgsIEJPT0wgKnN0b3ApKWJsb2NrCi17Ci19Ci0KLS0gKE5TU3ByaW5nTG9hZGluZ0hpZ2hsaWdo
dClzcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Ci17Ci0gICAgcmV0dXJuIE5TU3ByaW5nTG9hZGluZ0hp
Z2hsaWdodE5vbmU7Ci19Ci0KLS0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5nCi17Ci19Ci0KLUBl
bmQKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgTlNJbWFnZSAqZ2V0VGVz
dEltYWdlKCkKLXsKLSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50
c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRo
RXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLXN0YXRpYyBXZWJWaWV3ICp3ZWJWaWV3QWZ0ZXJQZXJmb3Jt
aW5nRHJhZ09wZXJhdGlvbihOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCi17Ci0gICAgUmV0YWlu
UHRyPFdlYlZpZXc+IGRlc3RpbmF0aW9uID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAgICBSZXRhaW5QdHI8TlNX
aW5kb3c+IGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29u
dGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgc3R5bGVNYXNrOjAgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW2hvc3RXaW5kb3cgc2V0RnJh
bWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwotICAgIFtbaG9zdFdpbmRvdyBjb250ZW50Vmll
d10gYWRkU3VidmlldzpkZXN0aW5hdGlvbi5nZXQoKV07Ci0gICAgX19ibG9jayBib29sIGlzRG9u
ZSA9IGZhbHNlOwotICAgIFtkZXN0aW5hdGlvbiBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpbRnJhbWVM
b2FkQ29tcGxldGlvbkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpeKCkgewot
ICAgICAgICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gc291cmNlID0gYWRvcHROUyhbW0RyYWdTb3Vy
Y2UgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgUmV0YWluUHRyPERyYWdJbmZvPiBpbmZvID0gYWRv
cHROUyhbW0RyYWdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOmdldFRlc3RJbWFnZSgpIG9mZnNl
dDpOU01ha2VTaXplKDAsIDApIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlLmdl
dCgpIGRlc3RpbmF0aW9uV2luZG93Omhvc3RXaW5kb3cuZ2V0KCldKTsKLSAgICAgICAgW2luZm8g
c2V0TGFzdE1vdXNlUG9zaXRpb246TlNNYWtlUG9pbnQoMCwgMjAwKV07Ci0gICAgICAgIFtkZXN0
aW5hdGlvbiBkcmFnZ2luZ0VudGVyZWQ6aW5mby5nZXQoKV07Ci0gICAgICAgIFtpbmZvIHNldExh
c3RNb3VzZVBvc2l0aW9uOk5TTWFrZVBvaW50KDIwMCwgMjAwKV07Ci0gICAgICAgIFtkZXN0aW5h
dGlvbiBkcmFnZ2luZ1VwZGF0ZWQ6aW5mby5nZXQoKV07Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUo
W2Rlc3RpbmF0aW9uIHBlcmZvcm1EcmFnT3BlcmF0aW9uOmluZm8uZ2V0KCldKTsKLSAgICAgICAg
aXNEb25lID0gdHJ1ZTsKLSAgICB9XV07Ci0gICAgW1tkZXN0aW5hdGlvbiBtYWluRnJhbWVdIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgcmV0dXJuIGRl
c3RpbmF0aW9uLmdldCgpOwotfQotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLCBE
cm9wVVRGOFBsYWluVGV4dCkKLXsKLSAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQ
YXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTpbQCJJIGFtIGEgV2ViS2l0LiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHRd
OwotCi0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHJlc3VsdGluZ1dlYlZpZXcgPSB3ZWJWaWV3QWZ0
ZXJQZXJmb3JtaW5nRHJhZ09wZXJhdGlvbihwYXN0ZWJvYXJkKTsKLSAgICBFWFBFQ1RfVFJVRShb
W3Jlc3VsdGluZ1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6
QCJkb2N1bWVudC5ib2R5LnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJJIGFtIGEgV2Vi
S2l0LiJdKTsKLX0KLQotVEVTVChEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cywgRHJvcEpQRUcp
Ci17Ci0gICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJv
YXJkV2l0aFVuaXF1ZU5hbWVdOwotICAgIE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2UoKTsK
LSAgICBOU0JpdG1hcEltYWdlUmVwICppbWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdl
UmVwV2l0aERhdGE6aWNvbi5USUZGUmVwcmVzZW50YXRpb25dOwotICAgIFtwYXN0ZWJvYXJkIHNl
dERhdGE6W2ltYWdlUmVwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHBy
b3BlcnRpZXM6QHsgTlNJbWFnZUNvbXByZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlwZToo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFR107Ci0KLSAgICBSZXRhaW5QdHI8V2ViVmll
dz4gcmVzdWx0aW5nV2ViVmlldyA9IHdlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9u
KHBhc3RlYm9hcmQpOwotICAgIEVYUEVDVF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2ltZycpLnRhZ05hbWUgPT09ICdJTUcnIl0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsKLX0K
LSAgICAKLSNpZiBXS19BUElfRU5BQkxFRAotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRl
c3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQotewotICAgIE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKLSAgICBb
cGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVyOm5p
bF07Ci0gICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCJmaWxlLW5hbWUiXSBmb3JU
eXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKV0pOwotICAgIGF1dG8gaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxv
Y10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1h
c2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbaG9z
dFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQb2ludCgwLCAwKV07Ci0gICAgW1tob3N0V2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZnVsbC1wYWdlLWRyb3B6b25lIl07
Ci0KLSAgICBhdXRvIGRyYWdTb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gZHJhZ0luZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8gYWxsb2NdIGluaXRX
aXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwgMCkgcGFzdGVib2Fy
ZDpwYXN0ZWJvYXJkIHNvdXJjZTpkcmFnU291cmNlLmdldCgpIGRlc3RpbmF0aW9uV2luZG93Omhv
c3RXaW5kb3cuZ2V0KCldKTsKLQotICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpO
U01ha2VQb2ludCgwLCAyMDApXTsKLSAgICBbd2ViVmlldyBkcmFnZ2luZ0VudGVyZWQ6ZHJhZ0lu
Zm8uZ2V0KCldOwotICAgIEVYUEVDVF9XS19TVFJFUShAIjEiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmRyYWdFbnRlcmVkRm9yVGVzdGluZyJdKTsKLQot
ICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgyMDAsIDIwMCld
OwotICAgIFt3ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpkcmFnSW5mby5nZXQoKV07Ci0gICAgRVhQ
RUNUX0VRKDFVLCBbZHJhZ0luZm8gbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcF0pOwotfQotCi0j
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdB
bmREcm9wVGVzdHNNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5k
RHJvcFRlc3RzTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMzc3MmE0NDUzMjg3YjQ2Nzc3NjU1ZGExN2Fl
Mjk4ZjNkM2MwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFRlc3RzTWFjLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3IuaCIK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBF
TkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUNPUykKKworVEVTVChEcmFnQW5kRHJv
cFRlc3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQoreworICAgIE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKKyAg
ICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVy
Om5pbF07CisgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCJmaWxlLW5hbWUiXSBm
b3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFk
b3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3RnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3
ID0gW3NpbXVsYXRvciB3ZWJWaWV3XTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsRHJhZ1Bh
c3RlYm9hcmQ6cGFzdGVib2FyZF07CisKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCkgc3R5bGVNYXNrOjAgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5P
XSk7CisgICAgW2hvc3RXaW5kb3cgc2V0RnJhbWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwor
ICAgIFtbaG9zdFdpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3XTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmdWxsLXBhZ2UtZHJvcHpv
bmUiXTsKKworICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gMDsKKyAg
ICBbc2ltdWxhdG9yIHNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6WyZudW1iZXJPZlZhbGlkSXRl
bXNGb3JEcm9wLCBzaW11bGF0b3JdIHsKKyAgICAgICAgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJv
cCA9IFtzaW11bGF0b3IgZHJhZ2dpbmdJbmZvXS5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwor
ICAgIH1dOworCisgICAgW3NpbXVsYXRvciBydW5Gcm9tOk5TTWFrZVBvaW50KDAsIDApIHRvOk5T
TWFrZVBvaW50KDIwMCwgMjAwKV07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAib2JzZXJ2ZWREcmFnRW50ZXIiXS5ib29sVmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJv
YnNlcnZlZERyYWdPdmVyIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAib2JzZXJ2ZWREcm9wIl0uYm9vbFZhbHVlKTsK
KyAgICBFWFBFQ1RfRVEoMVUsIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApOworfQorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0o
TUFDT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lE
cmFnQW5kRHJvcFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5
RHJhZ0FuZERyb3BUZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmI2YzQwMTc4Mzk1ZTY1NzlhNTdmZjY4
YzhmZDUyMjAzNzBmYmZkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbQpAQCAtMCwwICsxLDI1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNp
bXBvcnQgPEFwcEtpdC9OU0RyYWdnaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgor
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0Bp
bnRlcmZhY2UgRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIDogTlNPYmplY3Q8V2ViRnJhbWVM
b2FkRGVsZWdhdGU+IHsKKyAgICBCbG9ja1B0cjx2b2lkKCk+IF9jb21wbGV0aW9uQmxvY2s7Cit9
CisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9i
bG9ja190KWNvbXBsZXRpb25CbG9jazsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lTG9h
ZENvbXBsZXRpb25MaXN0ZW5lcgorCisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxl
dGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jaworeworICAgIHJldHVy
biBbW1tGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlv
bkJsb2NrOmNvbXBsZXRpb25CbG9ja10gYXV0b3JlbGVhc2VdOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJs
b2NrCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF9jb21wbGV0aW9u
QmxvY2sgPSBjb21wbGV0aW9uQmxvY2s7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJh
bWUgKilmcmFtZQoreworICAgIGlmIChfY29tcGxldGlvbkJsb2NrKQorICAgICAgICBfY29tcGxl
dGlvbkJsb2NrKCk7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgRHJhZ1NvdXJjZSA6IE5TT2JqZWN0
CistIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6
KEJPT0wpZmxhZzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERyYWdTb3VyY2UKKworLSAoTlNE
cmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOihCT09MKWZs
YWcKK3sKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKK30KKworQGVuZAorCitAaW50
ZXJmYWNlIERyYWdJbmZvIDogTlNPYmplY3Q8TlNEcmFnZ2luZ0luZm8+IHsKKyAgICBOU1BvaW50
IF9sYXN0TW91c2VQb3NpdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX2ltYWdlOworICAg
IFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+IF9wYXN0ZWJvYXJkOworICAgIFJldGFpblB0cjxEcmFn
U291cmNlPiBfc291cmNlOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gX3dpbmRvdzsKKyAgICBO
U1NpemUgX29mZnNldDsKKyAgICBOU0ludGVnZXIgX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7
Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIERyYWdJbmZvCisKKy0gKGlkKWluaXRXaXRoSW1hZ2U6KE5T
SW1hZ2UgKilpbWFnZSBvZmZzZXQ6KE5TU2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJv
YXJkICopcGFzdGVib2FyZCBzb3VyY2U6KERyYWdTb3VyY2UgKilzb3VyY2UgZGVzdGluYXRpb25X
aW5kb3c6KE5TV2luZG93ICopZGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICBpZiAoc2VsZiA9IFtz
dXBlciBpbml0XSkgeworICAgICAgICBfaW1hZ2UgPSBpbWFnZTsKKyAgICAgICAgX3Bhc3RlYm9h
cmQgPSBwYXN0ZWJvYXJkOworICAgICAgICBfc291cmNlID0gc291cmNlOworICAgICAgICBfd2lu
ZG93ID0gZGVzdGluYXRpb25XaW5kb3c7CisgICAgICAgIF9vZmZzZXQgPSBvZmZzZXQ7CisgICAg
fQorICAgIHJldHVybiBzZWxmOworfQorCistIChOU1BvaW50KWxhc3RNb3VzZVBvc2l0aW9uCit7
CisgICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKK30KKworLSAodm9pZClzZXRMYXN0TW91
c2VQb3NpdGlvbjooTlNQb2ludClsYXN0TW91c2VQb3NpdGlvbgoreworICAgIF9sYXN0TW91c2VQ
b3NpdGlvbiA9IGxhc3RNb3VzZVBvc2l0aW9uOworfQorCistIChOU1dpbmRvdyAqKWRyYWdnaW5n
RGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICByZXR1cm4gX3dpbmRvdy5nZXQoKTsKK30KKworLSAo
TlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaworeworICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25Db3B5OworfQorCistIChOU1BvaW50KWRyYWdnaW5nTG9jYXRpb24K
K3sKKyAgICByZXR1cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQorCistIChOU1BvaW50KWRyYWdn
ZWRJbWFnZUxvY2F0aW9uCit7CisgICAgcmV0dXJuIE5TTWFrZVBvaW50KF9sYXN0TW91c2VQb3Np
dGlvbi54ICsgX29mZnNldC53aWR0aCwgX2xhc3RNb3VzZVBvc2l0aW9uLnkgKyBfb2Zmc2V0Lmhl
aWdodCk7Cit9CisKKy0gKE5TSW1hZ2UgKilkcmFnZ2VkSW1hZ2UKK3sKKyAgICByZXR1cm4gX2lt
YWdlLmdldCgpOworfQorCistIChOU1Bhc3RlYm9hcmQgKilkcmFnZ2luZ1Bhc3RlYm9hcmQKK3sK
KyAgICByZXR1cm4gX3Bhc3RlYm9hcmQuZ2V0KCk7Cit9CisKKy0gKGlkKWRyYWdnaW5nU291cmNl
Cit7CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCk7Cit9CisKKy0gKE5TSW50ZWdlcilkcmFnZ2lu
Z1NlcXVlbmNlTnVtYmVyCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy0gKHZvaWQpc2xpZGVEcmFn
Z2VkSW1hZ2VUbzooTlNQb2ludClzY3JlZW5Qb2ludAoreworfQorCistIChOU0FycmF5ICopbmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGlu
YXRpb24KK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0RyYWdnaW5nRm9ybWF0aW9uKWRy
YWdnaW5nRm9ybWF0aW9uCit7CisgICAgcmV0dXJuIE5TRHJhZ2dpbmdGb3JtYXRpb25EZWZhdWx0
OworfQorCistICh2b2lkKXNldERyYWdnaW5nRm9ybWF0aW9uOihOU0RyYWdnaW5nRm9ybWF0aW9u
KWZvcm1hdGlvbgoreworfQorCistIChCT09MKWFuaW1hdGVzVG9EZXN0aW5hdGlvbgoreworICAg
IHJldHVybiBOTzsKK30KKworLSAodm9pZClzZXRBbmltYXRlc1RvRGVzdGluYXRpb246KEJPT0wp
ZmxhZworeworfQorCistIChOU0ludGVnZXIpbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcAorewor
ICAgIHJldHVybiBfbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKK30KKworLSAodm9pZClzZXRO
dW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOihOU0ludGVnZXIpbnVtYmVyCit7CisgICAgX251bWJl
ck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBudW1iZXI7Cit9CisKKy0gKHZvaWQpZW51bWVyYXRlRHJh
Z2dpbmdJdGVtc1dpdGhPcHRpb25zOihOU0VudW1lcmF0aW9uT3B0aW9ucyllbnVtT3B0cyBmb3JW
aWV3OihOU1ZpZXcgKil2aWV3IGNsYXNzZXM6KE5TQXJyYXkgKiljbGFzc0FycmF5IHNlYXJjaE9w
dGlvbnM6KE5TRGljdGlvbmFyeSAqKXNlYXJjaE9wdGlvbnMgdXNpbmdCbG9jazoodm9pZCAoXiko
TlNEcmFnZ2luZ0l0ZW0gKmRyYWdnaW5nSXRlbSwgTlNJbnRlZ2VyIGlkeCwgQk9PTCAqc3RvcCkp
YmxvY2sKK3sKK30KKworLSAoTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0KXNwcmluZ0xvYWRpbmdI
aWdobGlnaHQKK3sKKyAgICByZXR1cm4gTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Tm9uZTsKK30K
KworLSAodm9pZClyZXNldFNwcmluZ0xvYWRpbmcKK3sKK30KKworQGVuZAorCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU0ltYWdlICpnZXRUZXN0SW1hZ2UoKQoreworICAg
IHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmci
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsK
K30KKworc3RhdGljIFdlYlZpZXcgKndlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9u
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCkKK3sKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gZGVz
dGluYXRpb24gPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gaG9zdFdpbmRv
dyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1hc2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBbaG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQ
b2ludCgwLCAwKV07CisgICAgW1tob3N0V2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OmRl
c3RpbmF0aW9uLmdldCgpXTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAg
W2Rlc3RpbmF0aW9uIHNldEZyYW1lTG9hZERlbGVnYXRlOltGcmFtZUxvYWRDb21wbGV0aW9uTGlz
dGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl4oKSB7CisgICAgICAgIFJldGFpblB0
cjxEcmFnU291cmNlPiBzb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5pdF0p
OworICAgICAgICBSZXRhaW5QdHI8RHJhZ0luZm8+IGluZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8g
YWxsb2NdIGluaXRXaXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwg
MCkgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCkgZGVzdGluYXRpb25X
aW5kb3c6aG9zdFdpbmRvdy5nZXQoKV0pOworICAgICAgICBbaW5mbyBzZXRMYXN0TW91c2VQb3Np
dGlvbjpOU01ha2VQb2ludCgwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5n
RW50ZXJlZDppbmZvLmdldCgpXTsKKyAgICAgICAgW2luZm8gc2V0TGFzdE1vdXNlUG9zaXRpb246
TlNNYWtlUG9pbnQoMjAwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5nVXBk
YXRlZDppbmZvLmdldCgpXTsKKworICAgICAgICBFWFBFQ1RfVFJVRShbZGVzdGluYXRpb24gcGVy
Zm9ybURyYWdPcGVyYXRpb246aW5mby5nZXQoKV0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dXTsKKyAgICBbW2Rlc3RpbmF0aW9uIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICByZXR1cm4gZGVzdGluYXRpb24uZ2V0KCk7
Cit9CisKK1RFU1QoTGVnYWN5RHJhZ0FuZERyb3BUZXN0cywgRHJvcFVURjhQbGFpblRleHQpCit7
CisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJk
V2l0aFVuaXF1ZU5hbWVdOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W0AiSSBhbSBhIFdlYktp
dC4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JUeXBlOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0XTsKKworICAgIFJldGFpblB0cjxX
ZWJWaWV3PiByZXN1bHRpbmdXZWJWaWV3ID0gd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVy
YXRpb24ocGFzdGVib2FyZCk7CisgICAgRVhQRUNUX1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1lbnQuYm9keS50ZXh0
Q29udGVudCJdIGNvbnRhaW5zU3RyaW5nOkAiSSBhbSBhIFdlYktpdC4iXSk7Cit9CisKK1RFU1Qo
TGVnYWN5RHJhZ0FuZERyb3BUZXN0cywgRHJvcEpQRUcpCit7CisgICAgTlNQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOworICAg
IE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2UoKTsKKyAgICBOU0JpdG1hcEltYWdlUmVwICpp
bWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdlUmVwV2l0aERhdGE6aWNvbi5USUZGUmVw
cmVzZW50YXRpb25dOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W2ltYWdlUmVwIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHByb3BlcnRpZXM6QHsgTlNJbWFnZUNvbXBy
ZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlSlBFR107CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gcmVzdWx0aW5nV2ViVmlldyA9IHdl
YlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKHBhc3RlYm9hcmQpOworICAgIEVYUEVD
VF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLnRhZ05hbWUgPT09ICdJTUcn
Il0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL2Z1bGwtcGFnZS1kcm9wem9uZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA5NDU5OGEwYmRjMTQwMTQ0NGVkNDMxZmUxNzUzMjExZDY1MzUzYzcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGJvZHkgc3R5bGU9IndpZHRoOiAxMDB2dzsgaGVpZ2h0OiAx
MDB2aDsgbWFyZ2luOiAwOyIgb25kcmFnZW50ZXI9IndpbmRvdy5kcmFnRW50ZXJlZEZvclRlc3Rp
bmcgPSB0cnVlOyByZXR1cm4gZmFsc2U7Ij4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaAppbmRleCBmM2IxMjg4Njc1YWEzNzRlY2IxZDEzY2Vm
YzM1N2E3MGQ0YzE5NjkxLi44NGM4YmUzZmQ3OTQ1NDQyZTQ5ZmMyYmY0N2ExMDVlOTQwYmMzNzM2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxh
dG9yLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRv
ci5oCkBAIC0zNyw2ICszNyw4IEBACiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtp
dEFkZGl0aW9ucy5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisKIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIERyYWdBbmREcm9wUGhhc2UpIHsKICAgICBEcmFnQW5kRHJvcFBoYXNl
Q2FuY2VsbGVkID0gMCwKICAgICBEcmFnQW5kRHJvcFBoYXNlQmVnaW5uaW5nID0gMSwKQEAgLTQ1
LDggKzQ3LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRHJhZ0FuZERyb3BQaGFzZSkg
ewogICAgIERyYWdBbmREcm9wUGhhc2VQZXJmb3JtaW5nRHJvcCA9IDQKIH07CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi0KIHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4g
KlByb2dyZXNzVG9DR1BvaW50VmFsdWVNYXA7CiAKIEBpbnRlcmZhY2UgTW9ja0RyYWdEcm9wU2Vz
c2lvbiA6IE5TT2JqZWN0IDxVSURyYWdEcm9wU2Vzc2lvbj4gewpAQCAtNzUsMTkgKzc1LDIyIEBA
IHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9D
R1BvaW50VmFsdWVNYXA7CiAKIEBpbnRlcmZhY2UgRHJhZ0FuZERyb3BTaW11bGF0b3IgOiBOU09i
amVjdDxXS1VJRGVsZWdhdGVQcml2YXRlLCBfV0tJbnB1dERlbGVnYXRlPgogCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CiAvLyBUaGUgc3RhcnQgbG9jYXRp
b24sIGVuZCBsb2NhdGlvbiwgYW5kIGxvY2F0aW9ucyBvZiBhZGRpdGlvbmFsIGl0ZW0gcmVxdWVz
dHMgYXJlIGFsbCBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuCiAtICh2b2lkKXJ1bkZyb206KENHUG9p
bnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2NhdGlvbjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNBcnJheTxfV0tBdHRhY2htZW50ICo+ICppbnNlcnRlZEF0dGFj
aG1lbnRzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PF9XS0F0dGFj
aG1lbnQgKj4gKnJlbW92ZWRBdHRhY2htZW50czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgRHJhZ0FuZERyb3BQaGFzZSBwaGFzZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgVGVzdFdLV2ViVmlldyAqd2ViVmlldzsKIAogI2lmIFBMQVRGT1JNKElPUykKIAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXc7CiAt
ICh2b2lkKXJ1bkZyb206KENHUG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2Nh
dGlvbiBhZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM6KFByb2dyZXNzVG9DR1BvaW50VmFs
dWVNYXApYWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zOwogLSAodm9pZCl3YWl0Rm9ySW5w
dXRTZXNzaW9uOwogLSAodm9pZCllbmREYXRhVHJhbnNmZXI7CiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgRHJhZ0FuZERyb3BQaGFzZSBwaGFzZTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGFsbG93c0ZvY3VzVG9TdGFydElucHV0U2Vzc2lvbjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIHNob3VsZEVuc3VyZVVJQXBwbGljYXRpb247CiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBzaG91bGRBbGxvd01vdmVPcGVyYXRpb247CkBAIC0xMDYsNiArMTA5LDE3IEBA
IHR5cGVkZWYgTlNEaWN0aW9uYXJ5PE5TTnVtYmVyICosIE5TVmFsdWUgKj4gKlByb2dyZXNzVG9D
R1BvaW50VmFsdWVNYXA7CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKKyNpZiBQTEFURk9S
TShNQUMpCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQgPE5TRHJhZ2dpbmdJ
bmZvPiBkcmFnZ2luZ0luZm87CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TUG9p
bnQgaW5pdGlhbERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3OworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0RyYWdPcGVyYXRpb24gY3VycmVudERyYWdPcGVyYXRpb247CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1Bhc3RlYm9hcmQgKmV4dGVybmFsRHJhZ1Bhc3RlYm9h
cmQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0ltYWdlICpleHRlcm5hbERyYWdJ
bWFnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBkaXNwYXRjaF9ibG9ja190IHdpbGxF
bmREcmFnZ2luZ0hhbmRsZXI7CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIEBlbmQKIAog
I2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGNmOThkYWEyMzRjMDk4NTdh
NjVlNTZhMmIyOGUyZWUwOTBhN2U5NDcuLjA1MWZhMjkyZGM3Y2IwNjNmMzIyYTk0NzllMTc2ZDg3
NTI0ZTBjNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBA
IC03MiwxMCArNzIsMTIgQEAKICNpZiBQTEFURk9STShNQUMpCiBAaW50ZXJmYWNlIFRlc3RXS1dl
YlZpZXcgKE1hY09ubHkpCiAvLyBTaW11bGF0ZXMgY2xpY2tpbmcgd2l0aCBhIHByZXNzdXJlLXNl
bnNpdGl2ZSBkZXZpY2UsIGlmIHBvc3NpYmxlLgotLSAodm9pZCltb3VzZURvd25BdFBvaW50OihO
U1BvaW50KXBvaW50IHNpbXVsYXRlUHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZTsKLS0g
KHZvaWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKW1vdXNlTW92ZVRv
UG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFn
czsKLS0gKHZvaWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgbnVtYmVyT2ZDbGlj
a3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3M7CistICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6
KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOihCT09MKXNpbXVsYXRlUHJl
c3N1cmU7CistICh2b2lkKW1vdXNlRHJhZ1RvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsK
Ky0gKHZvaWQpbW91c2VFbnRlckF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsKKy0gKHZv
aWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsKKy0gKHZvaWQpbW91c2VN
b3ZlVG9Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93IHdpdGhGbGFnczooTlNFdmVudE1vZGlm
aWVyRmxhZ3MpZmxhZ3M7CistICh2b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1BvaW50KXBvaW50
SW5XaW5kb3cgbnVtYmVyT2ZDbGlja3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3M7CiAtIChO
U1dpbmRvdyAqKWhvc3RXaW5kb3c7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFj
dGVyOwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmlu
ZGV4IDM3NDBkNTgyZjNmNTFlYjdkZDcwMTY0YmRlYjNlNzExYmU1N2Y4MDUuLmQwOTZjZjA5YzU1
Y2RmMWM2MjQ0NjYyZDMxYWRhYjE2YjI3OGVjOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTM3MiwyNiArMzcyLDUyIEBAIE5TRXZlbnRNYXNrIF9f
c2ltdWxhdGVkX2ZvcmNlQ2xpY2tBc3NvY2lhdGVkRXZlbnRzTWFzayhpZCBzZWxmLCBTRUwgX2Nt
ZCkKIAogI2lmIFBMQVRGT1JNKE1BQykKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChN
YWNPbmx5KQotLSAodm9pZCltb3VzZURvd25BdFBvaW50OihOU1BvaW50KXBvaW50IHNpbXVsYXRl
UHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZQorLSAodm9pZCltb3VzZURvd25BdFBvaW50
OihOU1BvaW50KXBvaW50SW5XaW5kb3cgc2ltdWxhdGVQcmVzc3VyZTooQk9PTClzaW11bGF0ZVBy
ZXNzdXJlCiB7Ci0gICAgW19ob3N0V2luZG93IF9tb3VzZURvd25BdFBvaW50OnBvaW50IHNpbXVs
YXRlUHJlc3N1cmU6c2ltdWxhdGVQcmVzc3VyZSBjbGlja0NvdW50OjFdOworICAgIFtfaG9zdFdp
bmRvdyBfbW91c2VEb3duQXRQb2ludDpwb2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6c2lt
dWxhdGVQcmVzc3VyZSBjbGlja0NvdW50OjFdOwogfQogCi0tICh2b2lkKW1vdXNlVXBBdFBvaW50
OihOU1BvaW50KXBvaW50CistICh2b2lkKW1vdXNlVXBBdFBvaW50OihOU1BvaW50KXBvaW50SW5X
aW5kb3cKIHsKLSAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBvaW50OnBvaW50IGNsaWNrQ291
bnQ6MV07CisgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpwb2ludEluV2luZG93IGNs
aWNrQ291bnQ6MV07CiB9CiAKLS0gKHZvaWQpbW91c2VNb3ZlVG9Qb2ludDooTlNQb2ludClwb2lu
dCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzCistICh2b2lkKW1vdXNlTW92
ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmll
ckZsYWdzKWZsYWdzCiB7Ci0gICAgW3NlbGYgbW91c2VNb3ZlZDpbTlNFdmVudCBtb3VzZUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZU1vdmVkIGxvY2F0aW9uOnBvaW50IG1vZGlmaWVyRmxh
Z3M6ZmxhZ3MgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSB3aW5kb3dOdW1iZXI6W19o
b3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3Vy
ZTowXV07CisgICAgW3NlbGYgbW91c2VNb3ZlZDpbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlTW91c2VNb3ZlZCBhdExvY2F0aW9uOnBvaW50SW5XaW5kb3cgZmxhZ3M6ZmxhZ3Mg
dGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSBjbGlja0NvdW50OjBdXTsKIH0KIAotLSAo
dm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClwb2ludCBudW1iZXJPZkNsaWNrczooTlNV
SW50ZWdlciludW1iZXJPZkNsaWNrcworLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2lu
dClwb2ludEluV2luZG93IG51bWJlck9mQ2xpY2tzOihOU1VJbnRlZ2VyKW51bWJlck9mQ2xpY2tz
CiB7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGNsaWNrQ291bnQgPSAxOyBjbGlja0NvdW50IDw9IG51
bWJlck9mQ2xpY2tzOyArK2NsaWNrQ291bnQpIHsKLSAgICAgICAgW19ob3N0V2luZG93IF9tb3Vz
ZURvd25BdFBvaW50OnBvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk8gY2xpY2tDb3VudDpjbGlja0Nv
dW50XTsKLSAgICAgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpwb2ludCBjbGlja0Nv
dW50OmNsaWNrQ291bnRdOworICAgICAgICBbX2hvc3RXaW5kb3cgX21vdXNlRG93bkF0UG9pbnQ6
cG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOk5PIGNsaWNrQ291bnQ6Y2xpY2tDb3VudF07
CisgICAgICAgIFtfaG9zdFdpbmRvdyBfbW91c2VVcEF0UG9pbnQ6cG9pbnRJbldpbmRvdyBjbGlj
a0NvdW50OmNsaWNrQ291bnRdOworICAgIH0KK30KKworLSAodm9pZCltb3VzZUVudGVyQXRQb2lu
dDooTlNQb2ludClwb2ludEluV2luZG93Cit7CisgICAgW3NlbGYgbW91c2VFbnRlcmVkOltzZWxm
IF9tb3VzZUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVNb3VzZUVudGVyZWQgYXRMb2NhdGlvbjpw
b2ludEluV2luZG93XV07Cit9CisKKy0gKHZvaWQpbW91c2VEcmFnVG9Qb2ludDooTlNQb2ludClw
b2ludEluV2luZG93Cit7CisgICAgW3NlbGYgbW91c2VEcmFnZ2VkOltzZWxmIF9tb3VzZUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkIGF0TG9jYXRpb246cG9pbnRJbldp
bmRvd11dOworfQorCistIChOU0V2ZW50ICopX21vdXNlRXZlbnRXaXRoVHlwZTooTlNFdmVudFR5
cGUpdHlwZSBhdExvY2F0aW9uOihOU1BvaW50KXBvaW50SW5XaW5kb3cKK3sKKyAgICByZXR1cm4g
W3NlbGYgX21vdXNlRXZlbnRXaXRoVHlwZTp0eXBlIGF0TG9jYXRpb246cG9pbnRJbldpbmRvdyBm
bGFnczowIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgY2xpY2tDb3VudDowXTsKK30K
KworLSAoTlNFdmVudCAqKV9tb3VzZUV2ZW50V2l0aFR5cGU6KE5TRXZlbnRUeXBlKXR5cGUgYXRM
b2NhdGlvbjooTlNQb2ludClsb2NhdGlvbkluV2luZG93IGZsYWdzOihOU0V2ZW50TW9kaWZpZXJG
bGFncylmbGFncyB0aW1lc3RhbXA6KE5TVGltZUludGVydmFsKXRpbWVzdGFtcCBjbGlja0NvdW50
OihOU1VJbnRlZ2VyKWNsaWNrQ291bnQKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IE5TRXZlbnRUeXBlTW91c2VFbnRlcmVkOgorICAgIGNhc2UgTlNFdmVudFR5cGVNb3VzZUV4aXRl
ZDoKKyAgICAgICAgcmV0dXJuIFtOU0V2ZW50IGVudGVyRXhpdEV2ZW50V2l0aFR5cGU6dHlwZSBs
b2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6ZmxhZ3MgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6W19ob3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVt
YmVyIHRyYWNraW5nTnVtYmVyOjEgdXNlckRhdGE6bmlsXTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnR5cGUgbG9jYXRpb246bG9jYXRp
b25JbldpbmRvdyBtb2RpZmllckZsYWdzOmZsYWdzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOltfaG9zdFdpbmRvdyB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6W05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XSBldmVudE51bWJlcjorK2dFdmVudE51bWJlciBjbGlja0NvdW50
OmNsaWNrQ291bnQgcHJlc3N1cmU6MF07CiAgICAgfQogfQogCkBAIC00MDAsNyArNDI2LDggQEAg
TlNFdmVudE1hc2sgX19zaW11bGF0ZWRfZm9yY2VDbGlja0Fzc29jaWF0ZWRFdmVudHNNYXNrKGlk
IHNlbGYsIFNFTCBfY21kKQogICAgIHJldHVybiBfaG9zdFdpbmRvdy5nZXQoKTsKIH0KIAotLSAo
dm9pZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlciB7CistICh2b2lkKXR5cGVDaGFyYWN0
ZXI6KGNoYXIpY2hhcmFjdGVyCit7CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlckFzU3RyaW5nID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlYyIgLCBjaGFyYWN0ZXJdOwogICAgIE5TRXZl
bnRUeXBlIGtleURvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZUtleURvd247CiAgICAgTlNFdmVu
dFR5cGUga2V5VXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUtleVVwOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCA0M2VlY2Q5
NDk0ZDU5NjRmNTA3MTE3MDlkNjAyZjEzZDY4OTRjYWJlLi45ZTFmMjFlZTFkNTNiZGQ0NmMzMzM4
MTAyMTBlZDA3MGRmMTMyYzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
cmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
cmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpAQCAtMzE4LDYgKzMxOCwxOSBAQCBzdGF0aWMgTlNB
cnJheSAqZHJhZ0FuZERyb3BFdmVudE5hbWVzKCkKICAgICBSZXRhaW5QdHI8VUlEcm9wUHJvcG9z
YWw+IF9jdXJyZW50RHJvcFByb3Bvc2FsOwogfQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdl
YlZpZXdGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOm5pbF07Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7CisgICAgaWYgKGNvbmZpZ3VyYXRp
b24pCisgICAgICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZpZXc6W1tbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXV07CisKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWJWaWV3OltbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdIGF1dG9yZWxlYXNlXV07Cit9
CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3CiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKQEAgLTYyMyw2ICs2MzYsMTEg
QEAgc3RhdGljIE5TQXJyYXkgKmRyYWdBbmREcm9wRXZlbnROYW1lcygpCiAgICAgW1tfd2ViVmll
dyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJhZ0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFn
SW50ZXJhY3Rpb25dIHNlc3Npb25EaWRUcmFuc2Zlckl0ZW1zOl9kcmFnU2Vzc2lvbi5nZXQoKV07
CiB9CiAKKy0gKFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJuIF93ZWJWaWV3
LmdldCgpOworfQorCiAjcHJhZ21hIG1hcmsgLSBXS1VJRGVsZWdhdGVQcml2YXRlCiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9u
V2FzSGFuZGxlZDooQk9PTCloYW5kbGVkIGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3Zp
ZGVyczooTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KaW5kZXgg
OWE3OTE4Y2M0ODM5YTg3NTdiYWY2MGI4OGYyMzg2MWFkMjJkMGE1Zi4uYjM5MTdjZDk2MjFmMDIz
ZTI0YjhiMDY2NThmM2U5N2YwNjFkMjI2MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KQEAgLTI4LDM4ICsyOCwxNzEgQEAKIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJM
RUQKIAorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3REcmFnZ2lu
Z0luZm8uaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPGNtYXRoPgorI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBEcmFnQW5kRHJvcFRlc3RXS1dlYlZp
ZXc7CisKK0BpbnRlcmZhY2UgRHJhZ0FuZERyb3BTaW11bGF0b3IgKCkKKy0gKHZvaWQpcGVyZm9y
bURyYWdJbldlYlZpZXc6KERyYWdBbmREcm9wVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcgYXRMb2Nh
dGlvbjooTlNQb2ludCl2aWV3TG9jYXRpb24gd2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2UgcGFz
dGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBzb3VyY2U6KGlkKXNvdXJjZTsKK0Bl
bmQKKworQGludGVyZmFjZSBEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgOiBUZXN0V0tXZWJWaWV3
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgeworICAg
IFdlYWtPYmpDUHRyPERyYWdBbmREcm9wU2ltdWxhdG9yPiBfc2ltdWxhdG9yOworfQorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIHNpbXVsYXRvcjooRHJhZ0FuZERy
b3BTaW11bGF0b3IgKilzaW11bGF0b3IKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0V2l0
aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pCisgICAgICAgIF9zaW11
bGF0b3IgPSBzaW11bGF0b3I7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZHJhZ0lt
YWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDooTlNT
aXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09MKXNs
aWRlRmxhZworeworICAgIFtfc2ltdWxhdG9yIHBlcmZvcm1EcmFnSW5XZWJWaWV3OnNlbGYgYXRM
b2NhdGlvbjp2aWV3TG9jYXRpb24gd2l0aEltYWdlOmltYWdlIHBhc3RlYm9hcmQ6cGJvYXJkIHNv
dXJjZTpzb3VyY2VPYmpdOworfQorCistICh2b2lkKXdhaXRGb3JQZW5kaW5nTW91c2VFdmVudHMK
K3sKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZVByb2Nlc3NNb3VzZUV2ZW50cyA9IGZhbHNlOworICAg
IFtzZWxmIF9kb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50czpeeworICAgICAg
ICBkb25lUHJvY2Vzc01vdXNlRXZlbnRzID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVQcm9jZXNzTW91c2VFdmVudHMpOworfQorCitAZW5kCisKKy8v
IFRoaXMgZXhjZWVkcyB0aGUgZGVmYXVsdCBkcmFnIGh5c3RlcmVzaXMgb2YgYWxsIHBvdGVudGlh
bCBkcmFnIHR5cGVzLgorY29uc3QgZG91YmxlIGluaXRpYWxNb3VzZURyYWdEaXN0YW5jZSA9IDQ1
OworY29uc3QgZG91YmxlIGRyYWdVcGRhdGVQcm9ncmVzc0luY3JlbWVudCA9IDAuMDU7CisKK3N0
YXRpYyBOU0ltYWdlICpkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKQoreworICAgIHJldHVybiBb
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKK30KIAogQGlt
cGxlbWVudGF0aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsKLSAgICBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dz4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPFRlc3REcmFnZ2luZ0luZm8+IF9kcmFnZ2luZ0lu
Zm87CisgICAgUmV0YWluUHRyPE5TUGFzdGVib2FyZD4gX2V4dGVybmFsRHJhZ1Bhc3RlYm9hcmQ7
CisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9leHRlcm5hbERyYWdJbWFnZTsKKyAgICBCbG9ja1B0
cjx2b2lkKCk+IF93aWxsRW5kRHJhZ2dpbmdIYW5kbGVyOworICAgIE5TUG9pbnQgX3N0YXJ0TG9j
YXRpb25JbldpbmRvdzsKKyAgICBOU1BvaW50IF9lbmRMb2NhdGlvbkluV2luZG93OworICAgIGRv
dWJsZSBfcHJvZ3Jlc3M7Cit9CisKK0BzeW50aGVzaXplIGN1cnJlbnREcmFnT3BlcmF0aW9uPV9j
dXJyZW50RHJhZ09wZXJhdGlvbjsKK0BzeW50aGVzaXplIGluaXRpYWxEcmFnSW1hZ2VMb2NhdGlv
bkluVmlldz1faW5pdGlhbERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3OworCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aFdlYlZpZXdGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOm5pbF07CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1
cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewogICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKKyAg
ICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiA/OiBbW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0gc2ltdWxhdG9y
OnNlbGZdKTsKICAgICAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07Ci0gICAgICAg
IFtfd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpzZWxmXTsKICAgICB9CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYworLSAoTlNQb2ludClmbGlwQWJvdXRYQXhpc0luSG9z
dFdpbmRvdzooTlNQb2ludClwb2ludAogewotICAgIGlmIChbX3dlYlZpZXcgVUlEZWxlZ2F0ZV0g
PT0gc2VsZikKLSAgICAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6bmlsXTsKKyAgICByZXR1
cm4geyBwb2ludC54LCBOU0hlaWdodChbW193ZWJWaWV3IGhvc3RXaW5kb3ddIGZyYW1lXSkgLSBw
b2ludC55IH07Cit9CiAKLSAgICBpZiAoW193ZWJWaWV3IF9pbnB1dERlbGVnYXRlXSA9PSBzZWxm
KQotICAgICAgICBbX3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6bmlsXTsKKy0gKE5TUG9pbnQp
bG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3MKK3sKKyAgICByZXR1cm4geworICAgICAg
ICBfc3RhcnRMb2NhdGlvbkluV2luZG93LnggKyAoX2VuZExvY2F0aW9uSW5XaW5kb3cueCAtIF9z
dGFydExvY2F0aW9uSW5XaW5kb3cueCkgKiBfcHJvZ3Jlc3MsCisgICAgICAgIF9zdGFydExvY2F0
aW9uSW5XaW5kb3cueSArIChfZW5kTG9jYXRpb25JbldpbmRvdy55IC0gX3N0YXJ0TG9jYXRpb25J
bldpbmRvdy55KSAqIF9wcm9ncmVzcworICAgIH07Cit9CiAKLSAgICBbc3VwZXIgZGVhbGxvY107
CistIChkb3VibGUpaW5pdGlhbFByb2dyZXNzRm9yTW91c2VEcmFnCit7CisgICAgZG91YmxlIHRv
dGFsRGlzdGFuY2UgPSBzdGQ6OnNxcnQoc3RkOjpwb3coX3N0YXJ0TG9jYXRpb25JbldpbmRvdy54
IC0gX2VuZExvY2F0aW9uSW5XaW5kb3cueCwgMikgKyBzdGQ6OnBvdyhfc3RhcnRMb2NhdGlvbklu
V2luZG93LnkgLSBfZW5kTG9jYXRpb25JbldpbmRvdy55LCAyKSk7CisgICAgcmV0dXJuICF0b3Rh
bERpc3RhbmNlID8gMSA6IHN0ZDo6bWluPGRvdWJsZT4oMSwgaW5pdGlhbE1vdXNlRHJhZ0Rpc3Rh
bmNlIC8gdG90YWxEaXN0YW5jZSk7CiB9CiAKLS0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClzdGFy
dExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uCistICh2b2lkKXJ1bkZyb206KENHUG9p
bnQpZmxpcHBlZFN0YXJ0TG9jYXRpb24gdG86KENHUG9pbnQpZmxpcHBlZEVuZExvY2F0aW9uCiB7
Ci0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSB0byBzaW11bGF0ZSBkcmFnZ2luZyBvbiBt
YWNPUy4KLSAgICBVTlVTRURfUEFSQU0oc3RhcnRMb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGVuZExvY2F0aW9uKTsKKyAgICBfc3RhcnRMb2NhdGlvbkluV2luZG93ID0gW3NlbGYgZmxpcEFi
b3V0WEF4aXNJbkhvc3RXaW5kb3c6ZmxpcHBlZFN0YXJ0TG9jYXRpb25dOworICAgIF9lbmRMb2Nh
dGlvbkluV2luZG93ID0gW3NlbGYgZmxpcEFib3V0WEF4aXNJbkhvc3RXaW5kb3c6ZmxpcHBlZEVu
ZExvY2F0aW9uXTsKKyAgICBfY3VycmVudERyYWdPcGVyYXRpb24gPSBOU0RyYWdPcGVyYXRpb25O
b25lOworICAgIF9kcmFnZ2luZ0luZm8gPSBuaWw7CisgICAgX3Byb2dyZXNzID0gMDsKKworICAg
IGlmIChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBzZWxmLmV4dGVybmFsRHJhZ1Bhc3RlYm9h
cmQpIHsKKyAgICAgICAgTlNQb2ludCBzdGFydExvY2F0aW9uSW5WaWV3ID0gW193ZWJWaWV3IGNv
bnZlcnRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IGZyb21WaWV3Om5pbF07CisgICAgICAg
IE5TSW1hZ2UgKmRyYWdJbWFnZSA9IHNlbGYuZXh0ZXJuYWxEcmFnSW1hZ2UgPzogZGVmYXVsdEV4
dGVybmFsRHJhZ0ltYWdlKCk7CisgICAgICAgIFtzZWxmIHBlcmZvcm1EcmFnSW5XZWJWaWV3Ol93
ZWJWaWV3LmdldCgpIGF0TG9jYXRpb246c3RhcnRMb2NhdGlvbkluVmlldyB3aXRoSW1hZ2U6ZHJh
Z0ltYWdlIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6bmlsXTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIF9wcm9ncmVzcyA9IFtzZWxmIGluaXRpYWxQcm9ncmVzc0Zvck1vdXNl
RHJhZ107CisgICAgaWYgKF9wcm9ncmVzcyA9PSAxKSB7CisgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpAIkRyYWdBbmREcm9wU2ltdWxhdG9yIiBmb3JtYXQ6QCJEcmFnIHN0YXJ0ICglQCkgYW5k
IGRyYWcgZW5kICglQCkgbG9jYXRpb25zIGFyZSB0b28gY2xvc2UhIiwgTlNTdHJpbmdGcm9tUG9p
bnQoZmxpcHBlZFN0YXJ0TG9jYXRpb24pLCBOU1N0cmluZ0Zyb21Qb2ludChmbGlwcGVkRW5kTG9j
YXRpb24pXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtfd2ViVmlldyBtb3VzZUVu
dGVyQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93XTsKKyAgICBbX3dlYlZpZXcgbW91c2VN
b3ZlVG9Qb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IHdpdGhGbGFnczowXTsKKyAgICBbX3dl
YlZpZXcgbW91c2VEb3duQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IHNpbXVsYXRlUHJl
c3N1cmU6Tk9dOworICAgIFtfd2ViVmlldyBtb3VzZURyYWdUb1BvaW50OltzZWxmIGxvY2F0aW9u
SW5WaWV3Rm9yQ3VycmVudFByb2dyZXNzXV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JQZW5kaW5n
TW91c2VFdmVudHNdOworCisgICAgW193ZWJWaWV3IG1vdXNlVXBBdFBvaW50Ol9lbmRMb2NhdGlv
bkluV2luZG93XTsKKyAgICBbX3dlYlZpZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c107Cit9
CisKKy0gKHZvaWQpcGVyZm9ybURyYWdJbldlYlZpZXc6KERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dyAqKXdlYlZpZXcgYXRMb2NhdGlvbjooTlNQb2ludCl2aWV3TG9jYXRpb24gd2l0aEltYWdlOihO
U0ltYWdlICopaW1hZ2UgcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBzb3Vy
Y2U6KGlkKXNvdXJjZQoreworICAgIF9pbml0aWFsRHJhZ0ltYWdlTG9jYXRpb25JblZpZXcgPSB2
aWV3TG9jYXRpb247CisgICAgX2RyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tUZXN0RHJhZ2dpbmdJ
bmZvIGFsbG9jXSBpbml0XSk7CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dlZEltYWdlOmlt
YWdlXTsKKyAgICBbX2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ1Bhc3RlYm9hcmQ6cGFzdGVib2Fy
ZF07CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdTb3VyY2U6c291cmNlXTsKKyAgICBb
X2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0xvY2F0aW9uOltzZWxmIGxvY2F0aW9uSW5WaWV3Rm9y
Q3VycmVudFByb2dyZXNzXV07CisgICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrOk5TRHJhZ09wZXJhdGlvbkV2ZXJ5XTsKKyAgICBbX2RyYWdnaW5nSW5mbyBz
ZXROdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOnBhc3RlYm9hcmQucGFzdGVib2FyZEl0ZW1zLmNv
dW50XTsKKworICAgIF9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFtfd2ViVmlldyBkcmFnZ2luZ0Vu
dGVyZWQ6X2RyYWdnaW5nSW5mby5nZXQoKV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIHdoaWxlIChfcHJvZ3Jlc3MgIT0gMSkgeworICAgICAg
ICBfcHJvZ3Jlc3MgPSBzdGQ6Om1pbjxkb3VibGU+KDEsIF9wcm9ncmVzcyArIGRyYWdVcGRhdGVQ
cm9ncmVzc0luY3JlbWVudCk7CisgICAgICAgIFtfZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nTG9j
YXRpb246W3NlbGYgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdXTsKKyAgICAgICAg
X2N1cnJlbnREcmFnT3BlcmF0aW9uID0gW193ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpfZHJhZ2dp
bmdJbmZvLmdldCgpXTsKKyAgICAgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKKyAgICB9CisKKyAgICBbX2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0xvY2F0aW9u
Ol9lbmRMb2NhdGlvbkluV2luZG93XTsKKworICAgIGlmIChfd2lsbEVuZERyYWdnaW5nSGFuZGxl
cikKKyAgICAgICAgX3dpbGxFbmREcmFnZ2luZ0hhbmRsZXIoKTsKKworICAgIGlmIChfY3VycmVu
dERyYWdPcGVyYXRpb24gIT0gTlNEcmFnT3BlcmF0aW9uTm9uZSAmJiBbX3dlYlZpZXcgcHJlcGFy
ZUZvckRyYWdPcGVyYXRpb246X2RyYWdnaW5nSW5mby5nZXQoKV0pCisgICAgICAgIFtfd2ViVmll
dyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpfZHJhZ2dpbmdJbmZvLmdldCgpXTsKKyAgICBlbHNlIGlm
IChfY3VycmVudERyYWdPcGVyYXRpb24gPT0gTlNEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICAgICAg
W193ZWJWaWV3IGRyYWdnaW5nRXhpdGVkOl9kcmFnZ2luZ0luZm8uZ2V0KCldOworICAgIFtfd2Vi
VmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBpZiAoIXNlbGYuZXh0
ZXJuYWxEcmFnUGFzdGVib2FyZCkgeworICAgICAgICBbX3dlYlZpZXcgZHJhZ2dlZEltYWdlOltf
ZHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0gZW5kZWRBdDpfZW5kTG9jYXRpb25JbldpbmRvdyBv
cGVyYXRpb246X2N1cnJlbnREcmFnT3BlcmF0aW9uXTsKKyAgICAgICAgW193ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICB9CiB9CiAKIC0gKE5TQXJyYXk8X1dLQXR0
YWNobWVudCAqPiAqKWluc2VydGVkQXR0YWNobWVudHMKQEAgLTcyLDkgKzIwNSw0NCBAQAogICAg
IHJldHVybiBAWyBdOwogfQogCi0tIChEcmFnQW5kRHJvcFBoYXNlKXBoYXNlCistIChUZXN0V0tX
ZWJWaWV3ICopd2ViVmlldworeworICAgIHJldHVybiBfd2ViVmlldy5nZXQoKTsKK30KKworLSAo
dm9pZClzZXRFeHRlcm5hbERyYWdQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilleHRlcm5hbERy
YWdQYXN0ZWJvYXJkCit7CisgICAgX2V4dGVybmFsRHJhZ1Bhc3RlYm9hcmQgPSBleHRlcm5hbERy
YWdQYXN0ZWJvYXJkOworfQorCistIChOU1Bhc3RlYm9hcmQgKilleHRlcm5hbERyYWdQYXN0ZWJv
YXJkCit7CisgICAgcmV0dXJuIF9leHRlcm5hbERyYWdQYXN0ZWJvYXJkLmdldCgpOworfQorCist
ICh2b2lkKXNldEV4dGVybmFsRHJhZ0ltYWdlOihOU0ltYWdlICopZXh0ZXJuYWxEcmFnSW1hZ2UK
K3sKKyAgICBfZXh0ZXJuYWxEcmFnSW1hZ2UgPSBleHRlcm5hbERyYWdJbWFnZTsKK30KKworLSAo
TlNJbWFnZSAqKWV4dGVybmFsRHJhZ0ltYWdlCit7CisgICAgcmV0dXJuIF9leHRlcm5hbERyYWdJ
bWFnZS5nZXQoKTsKK30KKworLSAoaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KK3sK
KyAgICByZXR1cm4gX2RyYWdnaW5nSW5mby5nZXQoKTsKK30KKworLSAoZGlzcGF0Y2hfYmxvY2tf
dCl3aWxsRW5kRHJhZ2dpbmdIYW5kbGVyCit7CisgICAgcmV0dXJuIF93aWxsRW5kRHJhZ2dpbmdI
YW5kbGVyLmdldCgpOworfQorCistICh2b2lkKXNldFdpbGxFbmREcmFnZ2luZ0hhbmRsZXI6KGRp
c3BhdGNoX2Jsb2NrX3Qpd2lsbEVuZERyYWdnaW5nSGFuZGxlcgogewotICAgIHJldHVybiBEcmFn
QW5kRHJvcFBoYXNlQ2FuY2VsbGVkOworICAgIF93aWxsRW5kRHJhZ2dpbmdIYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKHdpbGxFbmREcmFnZ2luZ0hhbmRsZXIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg5NzM5MTliMTE1
MWExMmFiNTYwNTM3ZjkxMzM5ZTc5MmRhYWNhYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8uaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFU
Rk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEFwcEtpdC9OU0RyYWdnaW5n
Lmg+CisKK0BpbnRlcmZhY2UgVGVzdERyYWdnaW5nSW5mbyA6IE5TT2JqZWN0IDxOU0RyYWdnaW5n
SW5mbz4KKworQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgZHJhZ2dpbmdMb2NhdGlvbjsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1BvaW50IGRyYWdnZWRJbWFnZUxvY2F0aW9uOworQHBy
b3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyOworQHBy
b3BlcnR5IChub25hdG9taWMpIE5TRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1Bhc3RlYm9hcmQgKmRyYWdn
aW5nUGFzdGVib2FyZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TSW1hZ2UgKmRy
YWdnZWRJbWFnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCBkcmFnZ2luZ1NvdXJj
ZTsKKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0o
TUFDKSAmJiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvVGVzdERyYWdnaW5nSW5mby5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFn
Z2luZ0luZm8ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UyMTFkZDQ0MDc0NTViOTU0MjE0Nzg2YTIwM2M4ODQ3
MGFmNGVmNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RE
cmFnZ2luZ0luZm8ubW0KQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlRlc3REcmFnZ2luZ0luZm8uaCIKKworI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8
d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0RHJhZ2dpbmdJbmZvIHsK
KyAgICBXZWFrT2JqQ1B0cjxpZD4gX3NvdXJjZTsKKyAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJk
PiBfcGFzdGVib2FyZDsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX2RyYWdnZWRJbWFnZTsKK30K
KworQHN5bnRoZXNpemUgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrPV9kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2s7CitAc3ludGhlc2l6ZSBkcmFnZ2luZ0xvY2F0aW9uPV9kcmFnZ2luZ0xv
Y2F0aW9uOworQHN5bnRoZXNpemUgZHJhZ2dpbmdGb3JtYXRpb249X2RyYWdnaW5nRm9ybWF0aW9u
OworQHN5bnRoZXNpemUgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcD1fbnVtYmVyT2ZWYWxpZEl0
ZW1zRm9yRHJvcDsKKworLSAoTlNQYXN0ZWJvYXJkICopZHJhZ2dpbmdQYXN0ZWJvYXJkCit7Cisg
ICAgcmV0dXJuIF9wYXN0ZWJvYXJkLmdldCgpOworfQorCistICh2b2lkKXNldERyYWdnaW5nUGFz
dGVib2FyZDooTlNQYXN0ZWJvYXJkICopZHJhZ2dpbmdQYXN0ZWJvYXJkCit7CisgICAgX3Bhc3Rl
Ym9hcmQgPSBkcmFnZ2luZ1Bhc3RlYm9hcmQ7Cit9CisKKy0gKGlkKWRyYWdnaW5nU291cmNlCit7
CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RHJhZ2dp
bmdTb3VyY2U6KGlkKWRyYWdnaW5nU291cmNlCit7CisgICAgX3NvdXJjZSA9IGRyYWdnaW5nU291
cmNlOworfQorCistICh2b2lkKWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNE
cmFnZ2luZ0l0ZW1FbnVtZXJhdGlvbk9wdGlvbnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICop
dmlldyBjbGFzc2VzOihOU0FycmF5PENsYXNzPiAqKWNsYXNzQXJyYXkgc2VhcmNoT3B0aW9uczoo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXNlYXJjaE9wdGlvbnMgdXNpbmdCbG9jazoo
dm9pZCAoXikoTlNEcmFnZ2luZ0l0ZW0gKiwgTlNJbnRlZ2VyLCBCT09MICopKWJsb2NrCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIHRlc3QgZmlsZSBwcm9taXNlIGRyb3AgaGFu
ZGxpbmcuCit9CisKKy8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGN1cnJlbnRseSB1
c2VkIGJ5IFdlYktpdC4KKworQHN5bnRoZXNpemUgZHJhZ2dlZEltYWdlTG9jYXRpb249X2RyYWdn
ZWRJbWFnZUxvY2F0aW9uOworQHN5bnRoZXNpemUgZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcj1fZHJh
Z2dpbmdTZXF1ZW5jZU51bWJlcjsKK0BzeW50aGVzaXplIGFuaW1hdGVzVG9EZXN0aW5hdGlvbj1f
YW5pbWF0ZXNUb0Rlc3RpbmF0aW9uOworQHN5bnRoZXNpemUgc3ByaW5nTG9hZGluZ0hpZ2hsaWdo
dD1fc3ByaW5nTG9hZGluZ0hpZ2hsaWdodDsKKworLSAoTlNXaW5kb3cgKilkcmFnZ2luZ0Rlc3Rp
bmF0aW9uV2luZG93Cit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoTlNJbWFnZSAqKWRyYWdn
ZWRJbWFnZQoreworICAgIHJldHVybiBfZHJhZ2dlZEltYWdlLmdldCgpOworfQorCistICh2b2lk
KXNldERyYWdnZWRJbWFnZTooTlNJbWFnZSAqKWRyYWdnZWRJbWFnZQoreworICAgIF9kcmFnZ2Vk
SW1hZ2UgPSBkcmFnZ2VkSW1hZ2U7Cit9CisKKy0gKHZvaWQpc2xpZGVEcmFnZ2VkSW1hZ2VUbzoo
TlNQb2ludClzY3JlZW5Qb2ludAoreworfQorCistIChOU0FycmF5PE5TU3RyaW5nICo+ICopbmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGlu
YXRpb24KK3sKKyAgICByZXR1cm4gQFsgXTsKK30KKworLSAodm9pZClyZXNldFNwcmluZ0xvYWRp
bmcKK3sKK30KKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExB
VEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAo=
</data>
<flag name="review"
          id="364775"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347033</attachid>
            <date>2018-08-13 13:28:20 -0700</date>
            <delta_ts>2018-08-13 14:08:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181898-20180813132819.patch</filename>
            <type>text/plain</type>
            <size>96904</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAxMzI4N2ZkZjRmMmMyNDhm
ODYzYTZlZThjMGMyZTFiYmFmOGFmMGUuLjAyZDcyYjg2MGYxYTY2YmYzMTcwYzA3MDJkZTk4YmYz
NGEzNjZjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMDgtMTMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09TXSBJ
bXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBBZGRzIGEgbmV3IFNQSSBtZXRob2QsIGAtX2RvQWZ0ZXJQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzOmAsIHRvIFdLV2ViVmlldy4gVGhpcyBpbnZva2VzIHRoZSBnaXZl
bgorICAgICAgICBjYWxsYmFjayBhZnRlciBhbGwgcXVldWVkIG1vdXNlIGV2ZW50cyBoYXZlIGJl
ZW4gaGFuZGxlZCBieSB0aGUgd2ViIHByb2Nlc3MuIFNlZSBUb29scy9DaGFuZ2VMb2cgZm9yIG1v
cmUKKyAgICAgICAgZGV0YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZG9BZnRlclByb2Nlc3NpbmdBbGxQZW5k
aW5nTW91c2VFdmVudHM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb2Nl
c3NEaWRFeGl0KToKKworICAgICAgICBJbnZva2UgYW55IG91dHN0YW5kaW5nIGNhbGxiYWNrcyBm
b3IgcHJvY2Vzc2luZyBwZW5kaW5nIG1vdXNlIGV2ZW50cyB3aGVuIHRoZSB3ZWIgcHJvY2VzcyBp
cyB0ZXJtaW5hdGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkb0FmdGVyUHJv
Y2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cyk6CisKKyAgICAgICAgRWl0aGVyIGludm9rZSB0
aGUgY2FsbGJhY2sgaW1tZWRpYXRlbHkgaWYgdGhlcmUgYXJlIG5vIG1vdXNlIGV2ZW50cyB0byBi
ZSBwcm9jZXNzZWQsIG9yIGluc2VydCB0aGUgY2FsbGJhY2sgaW4KKyAgICAgICAgYSBxdWV1ZSB0
aGF0IHdpbGwgYmUgZmx1c2hlZCBvbmNlIGFsbCBtb3VzZSBldmVudHMgaGF2ZSBiZWVuIGhhbmRs
ZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEZpbmlzaFByb2Nlc3NpbmdB
bGxQZW5kaW5nTW91c2VFdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Zmx1
c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6cGlubmVkU3RhdGVXaWxsQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6cGlubmVkU3RhdGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojp2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENo
YW5nZSk6CisKKyAgICAgICAgRHJpdmUtYnkgdHdlYWtzOiByZW1vdmUgdW5uZWNlc3Nhcnkgc2Vt
aWNvbG9ucyBhZnRlciBlbXB0eSBpbXBsZW1lbnRhdGlvbiBzdHVicy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVFdmVudCk6CisKKyAgICAgICAgTm90aWZ5IHRoZSBwYWdlIGNsaWVudCB3aGVu
IHRoZXJlIGFyZSBubyByZW1haW5pbmcgbW91c2UgZXZlbnRzIGxlZnQgaW4gdGhlIHF1ZXVlLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cyk6CisKKyAgICAgICAg
QWRkIHNvbWUgcGx1bWJpbmcgdGhyb3VnaCBQYWdlQ2xpZW50LCBzbyB0aGF0IFdlYlBhZ2VQcm94
eSBjYW4gdGVsbCBXZWJWaWV3SW1wbCB3aGVuIGl0IGlzIGZpbmlzaGVkIHByb2Nlc3NpbmcKKyAg
ICAgICAgYWxsIG1vdXNlIGV2ZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy93aW4vUGFnZUNs
aWVudEltcGwuaDoKKwogMjAxOC0wOC0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0
RGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCAzY2NkYTlkZjQ0MGE1YmM0MTExZmYxNmMzZWJlZjFjYmQwNTM3YzdiLi44ZDAw
MTQ1ZTAzNjcyM2ExNmRhYWViOWFkNjRhNDhiMjVlYTFkN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYzMzcsNiArNjMzNywxMSBA
QCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogICAgIF9wYWdlLT5zZXRGb290ZXJCYW5uZXJIZWln
aHRGb3JUZXN0aW5nKGhlaWdodCk7CiB9CiAKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5nQWxs
UGVuZGluZ01vdXNlRXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgoreworICAgIF9pbXBs
LT5kb0FmdGVyUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cyhhY3Rpb24pOworfQorCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAtICh2b2lkKV9yZXF1ZXN0QWN0aXZlTm93UGxheWlu
Z1Nlc3Npb25JbmZvOih2b2lkKF4pKEJPT0wsIEJPT0wsIE5TU3RyaW5nKiwgZG91YmxlLCBkb3Vi
bGUsIE5TSW50ZWdlcikpY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY1MjgxMmIxY2M5MzdkZjEyOTkx
NTVjZWIwOWUxN2UzMWEzYzY3N2QuLjU4MWE0YTY3ZDE4Njg2YjYxMTI4Zjg2N2ZiNDk4MWE3YzZm
N2ZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiAtICh2b2lkKV9zZXRIZWFkZXJCYW5uZXJIZWln
aHQ6KGludCloZWlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMykpOwogLSAodm9p
ZClfc2V0Rm9vdGVyQmFubmVySGVpZ2h0OihpbnQpaGVpZ2h0IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEyLjMpKTsKKy0gKHZvaWQpX2RvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNl
RXZlbnRzOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSk7CiAjZW5kaWYKIAogLSAodm9pZClfcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uSW5mbzoodm9pZCheKShCT09MLCBCT09MLCBOU1N0cmluZyosIGRvdWJsZSwgZG91Ymxl
LCBOU0ludGVnZXIpKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzLjQpLCBp
b3MoMTEuMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCmluZGV4IDBjNWIxZDU0NTI0NGZiOTVmNDE1ODU2MjE5Y2FiMGE2MTM5ODE4YzAu
LmQzNjUzOWY2OWE4ZjNkN2Q0MWIzMDY2OGFiZTM2MGU1MTkxZjE1MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0NSw2ICsx
NDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkgZmlu
YWwgeyB9CiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsIHsgfQogCisg
ICAgdm9pZCBkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKCkgZmluYWwg
eyB9CisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgYm9vbCBkZWNp
ZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKSBvdmVycmlkZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1w
bC5oCmluZGV4IDI0ZDlmODMzZmMxMTg4YTlmNWE0ODgxZjY3MDlkMmUwZjEwOWQ2MDIuLmNhMjFk
OGJlNmUxNTA0YzIxOTcyMDE1ZTEzNmMxOWVlZjVjNDc2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEzOSw2ICsxMzksOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUp
IG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5k
aW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRlOwog
CiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCmluZGV4IDI2ZGI2YmQwYTUyMjk5N2MxZGY4Yjg3NDBjOTBjNTMzYzkz
MTk3MmEuLjQyOGFlYzNlZmEyZmQwYTJmMDIxMzc0NDZiNDIwNzJlZDBkNzk0MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTI2LDYgKzUyNiw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoTlNUZXh0Q2hl
Y2tpbmdSZXN1bHQgKmFjY2VwdGVkQ2FuZGlkYXRlKTsKIAorICAgIHZvaWQgZG9BZnRlclByb2Nl
c3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoZGlzcGF0Y2hfYmxvY2tfdCBhY3Rpb24pOworICAg
IHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOworCiAjaWYg
SEFWRShUT1VDSF9CQVIpCiAgICAgTlNUb3VjaEJhciAqbWFrZVRvdWNoQmFyKCk7CiAgICAgdm9p
ZCB1cGRhdGVUb3VjaEJhcigpOwpAQCAtNjIyLDYgKzYyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtaWdodEJlZ2luU2Nyb2xsV2hpbGVJbmFjdGl2ZSgpOwogCiAgICAgdm9pZCBoYW5kbGVSZXF1
ZXN0ZWRDYW5kaWRhdGVzKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1RleHRD
aGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlkYXRlcyk7CisgICAgdm9pZCBmbHVzaFBlbmRpbmdNb3Vz
ZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc8V2ViVmlld0ltcGxE
ZWxlZ2F0ZT4+IG1fdmlldzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNsaWVudD4gbV9wYWdl
Q2xpZW50OwpAQCAtNzMyLDYgKzczNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBoYXMgYmVl
biBhbHJlYWR5IHNlbnQgdG8gV2ViQ29yZS4KICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9rZXlE
b3duRXZlbnRCZWluZ1Jlc2VudDsKICAgICBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5k
PiogbV9jb2xsZWN0ZWRLZXlwcmVzc0NvbW1hbmRzIHsgbnVsbHB0ciB9OworICAgIFZlY3RvcjxC
bG9ja1B0cjx2b2lkKCk+PiBtX2NhbGxiYWNrSGFuZGxlcnNBZnRlclByb2Nlc3NpbmdQZW5kaW5n
TW91c2VFdmVudHM7CiAKICAgICBTdHJpbmcgbV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVxdWVz
dDsKICAgICBOU0ludGVnZXIgbV9sYXN0Q2FuZGlkYXRlUmVxdWVzdFNlcXVlbmNlTnVtYmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAxODA5
ODlkN2JkMGQ1MTk3OGNjMzNhNzdiYzdjMmM0ZGRmODkxNjRhLi41NmRlMjNjMzZlNDQ4MTliZGQ4
ZThjMWMyNjEyNGM5Y2VhZGRiY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQpAQCAtMTM3OCw2ICsxMzc4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cHJvY2Vzc0RpZEV4aXQoKQogICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExh
eWVyKG5pbCk7CiAKICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGZh
bHNlKTsKKyAgICBmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKCk7CiAKICAgICBtX2dl
c3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKIH0KQEAgLTMxNDQsNiArMzE0NSwyOSBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShOU1RleHRDaGVja2luZ1Jlc3Vs
dCAqYWNjZXB0ZWRDYW5kaWRhdAogICAgIG1fcGFnZS0+aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUo
dGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KGFjY2VwdGVkQ2FuZGlk
YXRlKSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRvQWZ0ZXJQcm9jZXNzaW5nQWxsUGVuZGlu
Z01vdXNlRXZlbnRzKGRpc3BhdGNoX2Jsb2NrX3QgYWN0aW9uKQoreworICAgIGlmICghbV9wYWdl
LT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgIGFjdGlvbigpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9jZXNzaW5n
UGVuZGluZ01vdXNlRXZlbnRzLmFwcGVuZChtYWtlQmxvY2tQdHIoYWN0aW9uKSk7Cit9CisKK3Zv
aWQgV2ViVmlld0ltcGw6OmRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMo
KQoreworICAgIGZsdXNoUGVuZGluZ01vdXNlRXZlbnRDYWxsYmFja3MoKTsKK30KKwordm9pZCBX
ZWJWaWV3SW1wbDo6Zmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpCit7CisgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IG1fY2FsbGJhY2tIYW5kbGVyc0FmdGVyUHJvY2Vzc2luZ1BlbmRp
bmdNb3VzZUV2ZW50cykKKyAgICAgICAgY2FsbGJhY2soKTsKKworICAgIG1fY2FsbGJhY2tIYW5k
bGVyc0FmdGVyUHJvY2Vzc2luZ1BlbmRpbmdNb3VzZUV2ZW50cy5jbGVhcigpOworfQorCiB2b2lk
IFdlYlZpZXdJbXBsOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiB7CiAgICAgQk9PTCBuZWVkc1Zp
ZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMgPSBtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1Z2lu
c0VuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZWE4MmJh
ZjBkNzk3YzAyZTUzNmM0MGE5NTQ1ODVmNWRkMGMwMmE2Li5lMmM2OTFlMWNkYzU0MGM0MmNmOGQ1
MTUwNzgyOGJhYzU3NDAxNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC0zOTMsOCArMzkzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VCYWNr
Z3JvdW5kQ29sb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ0F1ZGlvV2lsbENo
YW5nZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IHBpbm5lZFN0YXRlV2lsbENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwaW5uZWRTdGF0
ZURpZENoYW5nZSgpIHsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBk
aWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0
YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgQVBJOjpPYmplY3QqKSA9IDA7CkBAIC00
MDMsOCArNDAzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlKCkgPSAwOwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFBy
b2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHZp
ZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkgeyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6
V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbWVkaWFTZXNzaW9uTWFuYWdlcigpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGNkMTZhODRiMjc1YzEwNDVl
NmRmMWQ4Y2FhN2VlNDgyM2Q1YjM4MzAuLjJkYzBmMzM4ODViNjkwNTg0ZjQ3MTE3ZTY5ZGVlZWYy
OGMwMjJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NTUzOCw4ICs1NTM4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWlu
dDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBpZiAoIW1fbW91c2VFdmVu
dFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICIgVUlQ
cm9jZXNzOiBoYW5kbGluZyBhIHF1ZXVlZCBtb3VzZSBldmVudCBmcm9tIGRpZFJlY2VpdmVFdmVu
dCIpOwogICAgICAgICAgICAgcHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQotICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24t
Pm1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoKnRoaXMpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKKyAgICAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvbi0+bW91c2VFdmVudHNGbHVzaGVkRm9yUGFnZSgqdGhpcyk7CisgICAgICAgICAgICBtX3Bh
Z2VDbGllbnQuZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygpOworICAg
ICAgICB9CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBhNzFmZDQyNjg4NmNhNzAyOTU5MmQ3
MzYxOGY0ZmRlZWIwNDY5NDg0Li4xYzdhYmZjMjZjNjM2ZDk0ODBlM2ZkZGM3YzZiZWE1MTMzMmYy
NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VEYXRh
SW50ZXJhY3Rpb25DYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXNDYXJl
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCkgb3ZlcnJpZGU7CiAjZW5k
aWYKIAorICAgIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdNb3VzZUV2ZW50cygp
IGZpbmFsIHsgfQorCiAgICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKICAgICBSZXRh
aW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZWFlMTYw
NTMzMjc5MWM4OTM0YjNjYjQ4Y2U2YzU5N2E1ZDk4OTExZi4uOTcyY2E2NGZmN2M3NWJjZDg0YzE3
MzkxMmNlMDZjNmJkNWY0NzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTIzOCw2ICsyMzgsOCBAQCBwcml2YXRlOgogICAgIF9X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSgpIG92ZXJyaWRlOwog
I2VuZGlmCiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5nTW91c2VFdmVu
dHMoKSBmaW5hbDsKKwogICAgIE5TVmlldyAqbV92aWV3OwogICAgIFdlYlZpZXdJbXBsKiBtX2lt
cGwgeyBudWxscHRyIH07CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDQ3OTgy
NzExNjE4NTIzMTlmNzcwZWQwN2MwMWYyYWI2NWJkYWM4OTUuLjNhNTkzNzkzNGQ4YjhkMDY0NDIz
ZTc1MTY2YTY2YjU4YTA1OTM0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTg4OCw2ICs4ODgsMTEgQEAgX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgKlBhZ2VDbGllbnRJbXBsOjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB9CiAj
ZW5kaWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRp
bmdNb3VzZUV2ZW50cygpCit7CisgICAgbV9pbXBsLT5kaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVu
ZGluZ01vdXNlRXZlbnRzKCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpCiB7CiAgICAgbV9pbXBsLT5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1w
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXgg
ZWFkNzE3YmRlY2FjNzQxZjg3NDY5MzQ0ODFiNjlmODFhMjM0ZmMwYy4uMTRmYTljNjRhOGQzNWNi
ZmFhODM5ZWQ0OWUyMThlOTY0MDc0MTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbjo6TFRSOyB9CiAKKyAgICB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5k
aW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KKwogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNsaWVu
dEltcGwgY2xhc3MKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUy
MWE1NTNlZmRhNTIyNzI3MWExNWViODdlZjc2ZWI0ZTVlZWJhMDYuLmJiOGVlY2RmMGNkOWIxOTFj
MzBkODg2OGE5ZGJlYmY3NjU2YmI4MjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODcgQEAKKzIwMTgtMDgtMTMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gW21hY09TXSBJ
bXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFuZCBkcm9wCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE4OTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MTgxNjk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBJbXBsZW1lbnRzIHRoZSBjdXJyZW50bHkgc3R1YmJlZCBEcmFnQW5kRHJvcFNp
bXVsYXRvciBvbiBtYWNPUywgYW5kIGludHJvZHVjZXMgYSBuZXcgQVBJIHRlc3QgZm9yIHIyMjcy
NjYuIFNlZQorICAgICAgICBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9w
VGVzdHMubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9w
U2ltdWxhdG9yTWFjLm1tLgorCisgICAgICAgIEludHJvZHVjZSBhIGZpbGUgZm9yIGNyb3NzLXBs
YXRmb3JtIGRyYWcgYW5kIGRyb3AgdGVzdHMsIGN1cnJlbnRseSBmb3IgaU9TIGFuZCBtYWNPUy4g
QWRkaXRpb25hbGx5IGFkZCBhIHRlc3QKKyAgICAgICAgZm9yIHIyMjcyNjYsIHdoaWNoIHdhcyBm
aXhlZCBlYXJsaWVyIHRoaXMgeWVhciBidXQgY291bGQgbm90IGJlIHRlc3RlZCBkdWUgdG8gYSBs
YWNrIG9mIHRlc3RpbmcgbWVjaGFuaXNtIG9uCisgICAgICAgIG1hY09TIGluIFdlYktpdDIuCisK
KyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWw6IEFkZGVkLgorCisgICAgICAgIE1pbm9yIHR3ZWFr
cyB0byB0aGlzIHRlc3QgcGFnZSB0byBhZGQgImRyYWdvdmVyIiBhbmQgImRyb3AiIGV2ZW50IGhh
bmRsZXJzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFn
ZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvbGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWw6IEFkZGVkLgorCisgICAg
ICAgIEFkZCBhIG5ldyB0ZXN0IHBhZ2UgdGhhdCBpbmNsdWRlcyBhIGxpbmsgZW1iZWRkZWQgd2l0
aGluIGFuIGlmcmFtZSBiZWxvdyBhIHBsYWluIHRleHQgaW5wdXQuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFRlc3RzTWFjLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xlZ2FjeURyYWdB
bmREcm9wVGVzdHMubW06IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbS4KKworICAgICAgICBNb3ZlIG9ubHkgZXhp
c3RpbmcgV2ViS2l0MiBtYWNPUyBkcmFnIGFuZCBkcm9wIHRlc3QgKERyYWdBbmREcm9wUGFzdGVi
b2FyZFRlc3RzLk51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3ApIG91dAorICAgICAgICBvZiBEcmFn
QW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBhbmQgaW50byBhIG5ldyBmaWxlLCBEcmFnQW5kRHJv
cFRlc3RzTWFjLm1tLiBBZGRpdGlvbmFsbHksIHJlbmFtZQorICAgICAgICBEcmFnQW5kRHJvcFBh
c3RlYm9hcmRUZXN0cyB0byBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLCBzaW5jZSBpdCBub3cgb25s
eSBjb250YWlucyB0d28gbGVnYWN5IFdlYlZpZXcgdGVzdHMgZm9yCisgICAgICAgIGRyYWcgYW5k
IGRyb3AuCisKKyAgICAgICAgKCtbRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGxpc3RlbmVy
V2l0aENvbXBsZXRpb25CbG9jazpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxp
c3RlbmVyIGluaXRXaXRoQ29tcGxldGlvbkJsb2NrOl0pOgorICAgICAgICAoLVtGcmFtZUxvYWRD
b21wbGV0aW9uTGlzdGVuZXIgd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6CisgICAg
ICAgICgtW0RyYWdTb3VyY2UgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6XSk6
CisgICAgICAgICgtW0RyYWdJbmZvIGluaXRXaXRoSW1hZ2U6b2Zmc2V0OnBhc3RlYm9hcmQ6c291
cmNlOmRlc3RpbmF0aW9uV2luZG93Ol0pOgorICAgICAgICAoLVtEcmFnSW5mbyBsYXN0TW91c2VQ
b3NpdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpdKToK
KyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvd10pOgorICAgICAg
ICAoLVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKToKKyAgICAgICAgKC1b
RHJhZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2Vk
SW1hZ2VMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2VkSW1hZ2VdKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nU2VxdWVu
Y2VOdW1iZXJdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2xpZGVEcmFnZ2VkSW1hZ2VUbzpdKToK
KyAgICAgICAgKC1bRHJhZ0luZm8gbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5h
dGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdGb3JtYXRpb25dKToKKyAgICAg
ICAgKC1bRHJhZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJ
bmZvIGFuaW1hdGVzVG9EZXN0aW5hdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRBbmlt
YXRlc1RvRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZvIG51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3BdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0TnVtYmVyT2ZWYWxpZEl0ZW1z
Rm9yRHJvcDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dp
dGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25zOnVzaW5nQmxvY2s6XSk6Cisg
ICAgICAgICgtW0RyYWdJbmZvIHNwcmluZ0xvYWRpbmdIaWdobGlnaHRdKToKKyAgICAgICAgKC1b
RHJhZ0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpn
ZXRUZXN0SW1hZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld0FmdGVyUGVyZm9y
bWluZ0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRv
ci5oOgorCisgICAgICAgIEZsZXNoIG91dCBzb21lIG9mIHRoZSBEcmFnQW5kRHJvcFNpbXVsYXRv
ciBBUEkgZm9yIG1hY09TLCBleHBvc2luZyAoYW1vbmcgb3RoZXIgdGhpbmdzKSB0aGUgZHJhZyBw
YXN0ZWJvYXJkLAorICAgICAgICB0aGUgY3VycmVudCBOU0RyYWdnaW5nSW5mbywgdGhlIGluaXRp
YWwgbG9jYXRpb24gb2YgdGhlIGRyYWcgaW1hZ2UsIGFuZCB0aGUgZHJhZyBpbWFnZSBpdHNlbGYu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rl
c3RXS1dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpzaW11bGF0ZVByZXNzdXJlOl0pOgorICAgICAg
ICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlVXBBdFBvaW50Ol0pOgorICAgICAgICAoLVtUZXN0V0tX
ZWJWaWV3IG1vdXNlTW92ZVRvUG9pbnQ6d2l0aEZsYWdzOl0pOgorICAgICAgICAoLVtUZXN0V0tX
ZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Om51bWJlck9mQ2xpY2tzOl0pOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IG1vdXNlRW50ZXJBdFBvaW50Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJW
aWV3IG1vdXNlRXhpdEF0UG9pbnQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgbW91c2VE
cmFnVG9Qb2ludDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBfbW91c2VFdmVudFdpdGhU
eXBlOmF0TG9jYXRpb246XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgX21vdXNlRXZlbnRX
aXRoVHlwZTphdExvY2F0aW9uOmZsYWdzOnRpbWVzdGFtcDpjbGlja0NvdW50Ol0pOgorCisgICAg
ICAgIEFkZCBUZXN0V0tXZWJWaWV3IGhlbHBlcnMgdG8gc2VuZCBNb3VzZU1vdmUsIE1vdXNlRW50
ZXIgYW5kIE1vdXNlRHJhZyBOU0V2ZW50cyB0byB0aGUgd2ViIHZpZXcuIEFkZGl0aW9uYWxseSwK
KyAgICAgICAgcmVuYW1lIHBhcmFtZXRlciBuYW1lcyB0byB0aGVzZSBoZWxwZXJzIHRvIG1ha2Ug
aXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlc2UgbG9jYXRpb25zIGFyZSBhbGwgaW4gTlNXaW5kb3cK
KyAgICAgICAgY29vcmRpbmF0ZXMuCisKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyB0eXBlQ2hh
cmFjdGVyOl0pOgorCisgICAgICAgIERyaXZlLWJ5IHN0eWxlIGZpeDogcHV0IHRoaXMgb3Blbmlu
ZyBicmFjZSBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbToKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJhbWU6XSk6CisgICAgICAgICgt
W0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRXaXRoV2ViVmlld0ZyYW1lOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHdlYlZpZXddKToKKworICAgICAg
ICBTbWFsbCBpT1MgRHJhZ0FuZERyb3BTaW11bGF0b3IgYWRqdXN0bWVudHMgZm9yIG5ldyBEcmFn
QW5kRHJvcFNpbXVsYXRvciBpbnRlcmZhY2VzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9t
YWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW06CisgICAgICAgICgtW0RyYWdBbmREcm9wVGVz
dFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246c2ltdWxhdG9yOl0pOgorCisg
ICAgICAgIEludHJvZHVjZSBhIFdLV2ViVmlldyBzdWJjbGFzcyBmb3IgdGVzdGluZyBkcmFnIGFu
ZCBkcm9wIHRoYXQgb3ZlcnJpZGVzIGAtZHJhZ0ltYWdlOmF0Om9mZnNldDrigKZgLCBhbmQgaW5z
dGVhZAorICAgICAgICBhbGxvd3MgRHJhZ0FuZERyb3BTaW11bGF0b3IgdG8gdGFrZSBvdmVyIHRo
ZSBkcmFnLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wVGVzdFdLV2ViVmlldyBkcmFnSW1hZ2U6
YXQ6b2Zmc2V0OmV2ZW50OnBhc3RlYm9hcmQ6c291cmNlOnNsaWRlQmFjazpdKToKKworICAgICAg
ICBPdmVycmlkZSB0aGlzIGVudHJ5IHBvaW50IGludG8gZHJhZyBhbmQgZHJvcCBjb2RlLCBhbmQg
aW5zdGVhZCBjYWxsIG91dCB0byB0aGUgRHJhZ0FuZERyb3BTaW11bGF0b3IgdG8KKyAgICAgICAg
Y29vcmRpbmF0ZSB0aGUgZHJhZy4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFRlc3RXS1dlYlZp
ZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c10pOgorCisgICAgICAgIEhlbHBlciBtZXRob2Qg
dG8gd2FpdCBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGZpbmlzaCBoYW5kbGluZyBhbGwgaW4tZmxp
Z2h0IG1vdXNlIGV2ZW50cy4KKworICAgICAgICAoZGVmYXVsdEV4dGVybmFsRHJhZ0ltYWdlKToK
KworICAgICAgICBTZXQgdGhpcyBpbWFnZSBhcyB0aGUgZGVmYXVsdCBkcmFnIGltYWdlIHdoZW4g
c2ltdWxhdGluZyBhbiBpbmNvbWluZyBkcmFnIHNlc3Npb24gZnJvbSBvdXRzaWRlIG9mIHRoZSB3
ZWIgdmlldy4KKworICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZp
ZXdGcmFtZTpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJW
aWV3RnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0
b3IgZmxpcEFib3V0WEF4aXNJbkhvc3RXaW5kb3c6XSk6CisKKyAgICAgICAgSGVscGVyIG1ldGhv
ZCB0byBmbGlwIGEgZ2l2ZW4gcG9pbnQgYWJvdXQgdGhlIFggYXhpcyBvZiB0aGUgd2luZG93Lgor
CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGxvY2F0aW9uSW5WaWV3Rm9yQ3VycmVu
dFByb2dyZXNzXSk6CisKKyAgICAgICAgTWFwIGEgcHJvZ3Jlc3MgdmFsdWUgKGJldHdlZW4gMCBh
bmQgMSkgdG8gYSBkcmFnIGxvY2F0aW9uLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGluaXRpYWxQcm9ncmVzc0Zvck1vdXNlRHJhZ10pOgorCisgICAgICAgIERldGVybWluZXMg
dGhlIGluaXRpYWwgcHJvZ3Jlc3MgdmFsdWUgd2hlbiBpbml0aWF0aW9uIGEgZHJhZyBpbiB3ZWIg
Y29udGVudC4gVGhpcyBpcyB0aGUgaW5pdGlhbCBwcm9ncmVzcworICAgICAgICByZXF1aXJlZCB0
byBlbnN1cmUgdGhhdCB0aGUgZmlyc3QgbW91c2UgZHJhZyBldmVudCBleGNlZWRzIHRoZSBkcmFn
IGRpc3RhbmNlIGh5c3RlcmVzaXMgYW5kIGNhdXNlcyBhbnkgZHJhZworICAgICAgICAoaWYgYXBw
bGljYWJsZSkgdG8gYmVnaW4uCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcnVu
RnJvbTp0bzpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcGVyZm9ybURyYWdJ
bldlYlZpZXc6YXRMb2NhdGlvbjp3aXRoSW1hZ2U6cGFzdGVib2FyZDpzb3VyY2U6XSk6CisKKyAg
ICAgICAgSGVscGVyIHRvIGNvb3JkaW5hdGUgZHJhZyB1cGRhdGVzIGluIGJvdGggdGhlIGNhc2Vz
IHdoZXJlIHdlJ3JlIHNpbXVsYXRpbmcgYSBkcmFnIHNlc3Npb24gZW50ZXJpbmcgZnJvbSBvdXRz
aWRlCisgICAgICAgIG9mIHRoZSB3ZWIgdmlldywgYW5kIGluIHRoZSBjYXNlIHdoZXJlIHdlJ3Zl
IGluaXRpYXRlZCBhIGRyYWcgZnJvbSB0aGUgd2ViIHZpZXcgaXRzZWxmLgorCisgICAgICAgICgt
W0RyYWdBbmREcm9wU2ltdWxhdG9yIHdlYlZpZXddKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BT
aW11bGF0b3Igc2V0RXh0ZXJuYWxEcmFnUGFzdGVib2FyZDpdKToKKyAgICAgICAgKC1bRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgZXh0ZXJuYWxEcmFnUGFzdGVib2FyZF0pOgorCisgICAgICAgIEp1c3Qg
bGlrZSBpdHMgaU9TIGNvdW50ZXJwYXJ0IChzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6KSwgc2V0
dGluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgb24gbWFjT1MgcHV0cyB0aGUKKyAgICAg
ICAgRHJhZ0FuZERyb3BTaW11bGF0b3IgaW4gYSBtb2RlIHRoYXQgc2ltdWxhdGVzIGEgZHJhZyBj
b21pbmcgaW4gZnJvbSBvdXRzaWRlIHRoZSB3ZWIgdmlldywgdXNpbmcgdGhlIGdpdmVuCisgICAg
ICAgIHBhc3RlYm9hcmQuCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Igc2V0RXh0
ZXJuYWxEcmFnSW1hZ2U6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGV4dGVy
bmFsRHJhZ0ltYWdlXSk6CisKKyAgICAgICAgTWF5IGJlIG9wdGlvbmFsbHkgc2V0IHdoZW4gc3Bl
Y2lmeWluZyBhbiBleHRlcm5hbCBkcmFnIHBhc3RlYm9hcmQgdG8gc3BlY2lmeSB0aGUgZHJhZyBp
bWFnZSB1c2VkLiBJZiBubyBleHRlcm5hbAorICAgICAgICBkcmFnIGltYWdlIGlzIHNwZWNpZmll
ZCwgZmFsbHMgYmFjayB0byB0aGUgZGVmYXVsdCBpbWFnZSByZXR1cm5lZCBieSBgZGVmYXVsdEV4
dGVybmFsRHJhZ0ltYWdlKClgLgorCisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGRy
YWdnaW5nSW5mb10pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciB3aWxsRW5kRHJh
Z2dpbmdIYW5kbGVyXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHNldFdpbGxF
bmREcmFnZ2luZ0hhbmRsZXI6XSk6CisKKyAgICAgICAgSG9vayB0byBhbGxvdyB0ZXN0cyB0byBy
dW4gbG9naWMgcmlnaHQgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRyb3AgKGlmIHRoZSBjdXJyZW50
IGRyYWcgb3BlcmF0aW9uIGlzIG5vdCBub25lKSBvcgorICAgICAgICBlbmRpbmcgdGhlIGRyYWcg
c2Vzc2lvbiB3aXRob3V0IHBlcmZvcm1pbmcgYSBkcmFnIG9wZXJhdGlvbi4KKworICAgICAgICAo
LVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZpZXc6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcGhhc2VdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLmg6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2luZ0luZm8ubW06IEFkZGVkLgorCisgICAgICAgIE1vY2sg
b2JqZWN0IGNvbmZvcm1pbmcgdG8gTlNEcmFnZ2luZ0luZm8gdGhhdCBpcyBwYXNzZWQgdG8gV0tX
ZWJWaWV3IHdoZW4gaW52b2tpbmcgLWRyYWdnaW5nVXBkYXRlZDosCisgICAgICAgIC1kcmFnZ2lu
Z0VudGVyZWQ6IGFuZCAtZHJhZ2dpbmdFeGl0ZWQ6LgorCisgICAgICAgICgtW1Rlc3REcmFnZ2lu
Z0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8g
c2V0RHJhZ2dpbmdQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIGRy
YWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdT
b3VyY2U6XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZW51bWVyYXRlRHJhZ2dpbmdJ
dGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25zOnVzaW5nQmxvY2s6
XSk6CisgICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRv
d10pOgorICAgICAgICAoLVtUZXN0RHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0pOgorICAgICAg
ICAoLVtUZXN0RHJhZ2dpbmdJbmZvIHNldERyYWdnZWRJbWFnZTpdKToKKyAgICAgICAgKC1bVGVz
dERyYWdnaW5nSW5mbyBzbGlkZURyYWdnZWRJbWFnZVRvOl0pOgorICAgICAgICAoLVtUZXN0RHJh
Z2dpbmdJbmZvIG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246XSk6Cisg
ICAgICAgICgtW1Rlc3REcmFnZ2luZ0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisKKyAgICAg
ICAgRW1wdHkgbWV0aG9kIHN0dWJzLCB0byBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgZnV0dXJlIGFz
IG5lZWRlZC4KKwogMjAxOC0wOC0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBEcmFnZ2luZyBhIG5vbi1lZGl0YWJsZSB0ZXh0IHNlbGVj
dGlvbiBpbnRvIGEgcGxhaW4gdGV4dCBpbnB1dCBpbnNlcnRzIEhUTUwgbWFya3VwCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGZkZjQ1NGNmZDlmYWY2YTlmODEyNTYyNGU1MWVmNjg2YTM2MDNm
YTQuLjc2NmJmYjJiOWYxMjEzMmIwNjY2ODYzY2RjYWE1NmJmYjgwNDMzMjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zMDMsNyArMzAzLDYgQEAKIAkJNkJGRDI5NEMxRDVFNkMxRDAwOEVD
OTY4IC8qIEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNl
dC5jcHAgKi87IH07CiAJCTc1MUIwNUQ2MUY4RUFDNDEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNr
ZXJUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzUxQjA1RDUxRjhFQUMxQTAwMjhBMDlFIC8qIERhdGFiYXNlVHJhY2tlclRlc3QubW0gKi87IH07
CiAJCTc1NENFQzgxMUY2NzIyRjIwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NENFQzgwMUY2NzIy
REMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLzsgfTsKLQkJNzY0MzIyRDcxQjYx
Q0NDMzAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjQzMjJENTFCNjFDQ0E0MDAy
NEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLzsgfTsKIAkJNzY3MzQ5
OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFs
TG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzY3MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1NjkxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8q
IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREYxNTQ3NjdF
NjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4MzAwRjFG
QUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CkBAIC02NjAsNyArNjU5LDYg
QEAKIAkJQTE3OTkxOEIxRTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OTkxODkxRTFD
QTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuY3BwICovOyB9OwogCQlBMTdFQUM1NTIw
ODMwNUEwMDA4NEI0MUIgLyogZmluZC5wZGYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3RUFDNTQyMDgzMDU2RTAwODRCNDFCIC8qIGZpbmQu
cGRmICovOyB9OwogCQlBMTgwQzBGQTFFRTY3REYwMDA0NjhGNDcgLyogUnVuT3BlblBhbmVsLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MEMwRjkx
RUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLzsgfTsKLQkJQTE4MTlCMTMyMDg5
NzVEMzAwQzA5QjgzIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODE5QjEyMjA4OTREMDQwMEMw
OUI4MyAvKiBmdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbCAqLzsgfTsKIAkJQTFDNEZCNzMxQkFDRDFD
QTAwMzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdlcy5w
YWdlcyAqLzsgfTsKIAkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRh
dGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMubW0gKi87IH07CiAJCUExRUMxMTg4MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
RUMxMTg3MUY0MjU0MTIwMEQwMTQ2RSAvKiBQcmV2aWV3TG9hZGVyLmNwcCAqLzsgfTsKQEAgLTgx
Myw2ICs4MTEsOSBAQAogCQlGNDVFMTU3MzIxMTJDRTI5MDAzMDdFODIgLyogS2V5Ym9hcmRJbnB1
dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ1RTE1NzIyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5wdXRUZXN0c0lPUy5tbSAq
LzsgfTsKIAkJRjQ1RTE1NzYyMTEyQ0U2MjAwMzA3RTgyIC8qIFRlc3RJbnB1dERlbGVnYXRlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1RTE1NzUy
MTEyQ0U2MjAwMzA3RTgyIC8qIFRlc3RJbnB1dERlbGVnYXRlLm1tICovOyB9OwogCQlGNDYxMjhC
NzIxMUM4RUQ1MDBEOUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDYxMjhCNjIxMUM4RUQ1MDBE
OUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0gKi87IH07CisJCUY0NjEyOENCMjEx
RDQ3NTEwMEQ5RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4Q0EyMTFENDc1MTAwRDlGQURCIC8qIFRl
c3REcmFnZ2luZ0luZm8ubW0gKi87IH07CisJCUY0NjEyOEQ0MjExRTQwRkQwMEQ5RkFEQiAvKiBs
aW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDYxMjhEMTIxMUUyRDI1MDBEOUZBREIgLyogbGlu
ay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgKi87IH07CisJCUY0NjEyOEQ3MjExRTQ4OUMwMEQ5
RkFEQiAvKiBEcmFnQW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9w
VGVzdHMubW0gKi87IH07CiAJCUY0NjRBRjkyMjBCQjY2RUEwMDdGOUIxOCAvKiBSZW5kZXJpbmdQ
cm9ncmVzc1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ2NEFGOTEyMEJCNjZFQTAwN0Y5QjE4IC8qIFJlbmRlcmluZ1Byb2dyZXNzVGVzdHMu
bW0gKi87IH07CiAJCUY0Njg0OUJFMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Njg0
OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLzsgfTsKIAkJRjQ2
ODQ5QzAxRUVGNUVGMzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY4NDlCRjFF
RUY1RURDMDBCOTM3RkUgLyogcmljaC1hbmQtcGxhaW4tdGV4dC5odG1sICovOyB9OwpAQCAtODI4
LDcgKzgyOSw3IEBACiAJCUY0QUI1NzhBMUY2NTE2NTQwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dh
YmxlLWRpdi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0QUI1Nzg5MUY2NTE2NEIwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRp
di5odG1sICovOyB9OwogCQlGNEI4MjVEODFFRjREQkZCMDA2RTQxN0YgLyogY29tcHJlc3NlZC1m
aWxlcy56aXAgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjRCODI1RDYxRUY0REJENDAwNkU0MTdGIC8qIGNvbXByZXNzZWQtZmlsZXMuemlwICov
OyB9OwogCQlGNEI4NkQ0RjIwQkNENUIyMDA5OUE3RTYgLyogcGFpbnQtc2lnbmlmaWNhbnQtYXJl
YS1taWxlc3RvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNEI4NkQ0RTIwQkNENTk3MDA5OUE3RTYgLyogcGFpbnQtc2lnbmlmaWNh
bnQtYXJlYS1taWxlc3RvbmUuaHRtbCAqLzsgfTsKLQkJRjRCRkE2OEUxRTRBRDA4MDAwMTU0Mjk4
IC8qIERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdB
bmREcm9wUGFzdGVib2FyZFRlc3RzLm1tICovOyB9OworCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQy
OTggLyogTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lE
cmFnQW5kRHJvcFRlc3RzLm1tICovOyB9OwogCQlGNEMyQUIyMjFERDZEOTVFMDBFMDZENUIgLyog
ZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QzJBQjIxMURENkQ5NDEwMEUwNkQ1QiAvKiBl
bm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgKi87IH07CiAJCUY0Qzg3OTdGMjA1OUQ4RDMw
MDlDRDAwQiAvKiBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Qzg3OTdFMjA1OUQ4RDMwMDlDRDAwQiAvKiBTY3Jv
bGxWaWV3SW5zZXRUZXN0cy5tbSAqLzsgfTsKIAkJRjRDRDc0QzYyMEZEQUNGQTAwREUzNzk0IC8q
IHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNENENzRDNTIwRkRBQ0Y1MDBERTM3OTQgLyogdGV4
dC13aXRoLWFzeW5jLXNjcmlwdC5odG1sICovOyB9OwpAQCAtODQwLDYgKzg0MSw4IEBACiAJCUY0
RDY1REE4MUY1RTQ3MDQwMDlEOEMyNyAvKiBzZWxlY3RlZC10ZXh0LWltYWdlLWxpbmstYW5kLWVk
aXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjRENjVEQTcxRjVFNDZDMDAwOUQ4QzI3IC8qIHNlbGVjdGVkLXRleHQtaW1hZ2Ut
bGluay1hbmQtZWRpdGFibGUuaHRtbCAqLzsgfTsKIAkJRjRERUY2RUQxRTlCNERCNjAwNDhFRjYx
IC8qIGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRERUY2RUMxRTlCNEQ5NTAwNDhFRjYxIC8q
IGltYWdlLWluLWxpbmstYW5kLWlucHV0Lmh0bWwgKi87IH07CiAJCUY0RTBBMjk2MjExRkM1RkIw
MEFGN0M3RiAvKiBzZWxlY3RlZC10ZXh0LWFuZC10ZXh0YXJlYS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTBBMjk1MjExRkM1QTMw
MEFGN0M3RiAvKiBzZWxlY3RlZC10ZXh0LWFuZC10ZXh0YXJlYS5odG1sICovOyB9OworCQlGNEUw
QTI4QjIxMUU0QTJCMDBBRjdDN0YgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2MTI4RDgyMTFF
NDk2MzAwRDlGQURCIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5odG1sICovOyB9OworCQlGNEUwQTI4
RjIxMUU1RDVCMDBBRjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTBBMjhFMjExRTVENUIwMEFGN0M3
RiAvKiBEcmFnQW5kRHJvcFRlc3RzTWFjLm1tICovOyB9OwogCQlGNEUzRDgwODIwRjcwQkI5MDA3
QjU4QzUgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUtYXJ0aWNsZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTNEODA3MjBG
NzA4RTQwMDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwg
Ki87IH07CiAJCUY0RjEzNzkyMUQ5QjY4M0UwMDJCRUM1NyAvKiBsYXJnZS12aWRlby10ZXN0LW5v
dy1wbGF5aW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjRGMTM3OTExRDlCNjgzMjAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qt
bm93LXBsYXlpbmcuaHRtbCAqLzsgfTsKIAkJRjRGNDA1QkMxRDRDMEQxQzAwN0E5NzA3IC8qIGZ1
bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGNDA1QkExRDRDMENGODAw
N0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi87
IH07CkBAIC0xMDEzLDcgKzEwMTYsNyBAQAogCQkJCTkzMkFFNTNEMUQzNzEwNDcwMDVERkZBRiAv
KiBmb2N1cy1pbnB1dHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTdFOEIzNjE4
MTIwQjJGMDBBRUI3NEEgLyogRnJhZ21lbnROYXZpZ2F0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50
ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQlBMTgxOUIxMzIwODk3NUQz
MDBDMDlCODMgLyogZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJRjRFMEEyOEIyMTFFNEEyQjAwQUY3QzdGIC8qIGZ1bGwtcGFnZS1kcm9wem9uZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0RjQwNUJDMUQ0QzBEMUMwMDdBOTcwNyAvKiBm
dWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUNENzhFMTFFMURCN0VFMkEwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdh
dGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzRkJEMUI0QTFEM0Q2NkFCMDBFNkQ2
RkEgLyogRnVsbHNjcmVlbkxheW91dENvbnN0cmFpbnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCkBAIC0xMDg1LDYgKzEwODgsNyBAQAogCQkJCUMyNUNDQTBCMUU1MTQwQzEwMDI2Q0I4QSAv
KiBMaW5lQnJlYWtpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBNjFF
RjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlGNDFBQjlBNzFFRjQ2OTZCMDA4M0ZBMDggLyogbGluay1hbmQtdGFyZ2V0LWRpdi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0NjEyOEQ0MjExRTQwRkQwMEQ5RkFEQiAv
KiBsaW5rLWluLWlmcmFtZS1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk4MzYxRjE3ODFFNjEwQjRFMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0
ZS13aXRoLXNsYXNoZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzQ5RDNDNDFE
Qjk3MjhFMDA0QTlGNjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTM3OEU2NDc5MTYzMjcwNzQwMEI2QzY3NiAvKiBsaW5rLXdp
dGgtdGl0bGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE1ODUsNyArMTU4OSw2IEBA
CiAJCTc1NENFQzgwMUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEF1dG9GaWxsQXZhaWxhYmxlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3NTYwOTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVBZGRJ
bWFnZVRvQ2FjaGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNo
U3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyog
V29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2NzM0OTk3MTkzMDE2REMwMEU0NERGOSAvKiBTdG9wTG9h
ZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY3MzQ5OUExOTMwMTgyRTAwRTQ0
REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcExvYWRpbmdEdXJpbmdE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc2RTE4MkQ5MTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc5MSw3ICsxNzk0LDYgQEAK
IAkJQTE3OTkxOEExRTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyVGVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTdFQUM1NDIwODMwNTZFMDA4NEI0MUIgLyogZmluZC5wZGYg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
ZGY7IG5hbWUgPSBmaW5kLnBkZjsgcGF0aCA9IFRlc3RzL1dlYktpdC9maW5kLnBkZjsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlBMTgwQzBGOTFFRTY3REYwMDA0NjhGNDcgLyogUnVu
T3BlblBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUnVuT3BlblBhbmVsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMTgxOUIxMjIwODk0RDA0MDBDMDlCODMgLyogZnVs
bC1wYWdlLWRyb3B6b25lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMThBQThDQzFDM0ZBMjE4MDA5QjJCOTcg
LyogQ29udGVudEZpbHRlcmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b250ZW50RmlsdGVyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTVE
MThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERvd25sb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMUM0RkI2QzFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29rLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjA0OCw2ICsyMDUwLDExIEBACiAJCUY0NUUxNTc1MjExMkNFNjIwMDMw
N0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RJ
bnB1dERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDYxMjhCNDIx
MUM4NjFBMDBEOUZBREIgLyogRHJhZ0FuZERyb3BTaW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0FuZERyb3BTaW11bGF0b3IuaDsgcGF0aCA9IGNvY29hL0Ry
YWdBbmREcm9wU2ltdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NjEy
OEI2MjExQzhFRDUwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNDYxMjhDOTIxMUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5n
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0RHJhZ2dpbmdJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0NjEyOENBMjExRDQ3NTEwMEQ5RkFEQiAvKiBUZXN0RHJhZ2dpbmdJ
bmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdERyYWdnaW5nSW5mby5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2MTI4RDEyMTFFMkQyNTAwRDlGQURCIC8qIGxpbmst
aW4taWZyYW1lLWFuZC1pbnB1dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxp
bmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9wVGVzdHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJvcFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNDYxMjhEODIxMUU0OTYzMDBEOUZBREIgLyogZnVsbC1wYWdlLWRyb3B6b25l
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDY0QUY5MTIwQkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5nUHJv
Z3Jlc3NUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRlcmluZ1Byb2dyZXNzVGVz
dHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Njg0OUJEMUVFRjU4RTQwMEI5
MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJUGFz
dGVib2FyZFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDY4NDlCRjFF
RUY1RURDMDBCOTM3RkUgLyogcmljaC1hbmQtcGxhaW4tdGV4dC5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInJp
Y2gtYW5kLXBsYWluLXRleHQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MDY0LDcgKzIwNzEsNyBAQAogCQlGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRy
YWdnYWJsZS1kaXYuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjdXN0b20tZHJh
Z2dhYmxlLWRpdi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCODI1RDYx
RUY0REJENDAwNkU0MTdGIC8qIGNvbXByZXNzZWQtZmlsZXMuemlwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS56aXA7IHBhdGggPSAiY29t
cHJlc3NlZC1maWxlcy56aXAiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEI4NkQ0
RTIwQkNENTk3MDA5OUE3RTYgLyogcGFpbnQtc2lnbmlmaWNhbnQtYXJlYS1taWxlc3RvbmUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYWludC1zaWduaWZpY2FudC1hcmVhLW1p
bGVzdG9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRCRkE2OEMxRTRB
RDA4MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QkZBNjhDMUU0QUQwODAwMDE1NDI5
OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjRDMkFCMjExREQ2RDk0MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVv
LXdpdGgtc291bmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlbm9ybW91cy12
aWRlby13aXRoLXNvdW5kLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEM4
Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1z
Y3JpcHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ0ZXh0LXdpdGgtYXN5bmMt
c2NyaXB0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA3Nyw2ICsyMDg0
LDcgQEAKIAkJRjRENjVEQTcxRjVFNDZDMDAwOUQ4QzI3IC8qIHNlbGVjdGVkLXRleHQtaW1hZ2Ut
bGluay1hbmQtZWRpdGFibGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzZWxl
Y3RlZC10ZXh0LWltYWdlLWxpbmstYW5kLWVkaXRhYmxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNERFRjZFQzFFOUI0RDk1MDA0OEVGNjEgLyogaW1hZ2UtaW4tbGluay1h
bmQtaW5wdXQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJpbWFnZS1pbi1saW5r
LWFuZC1pbnB1dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFMEEyOTUy
MTFGQzVBMzAwQUY3QzdGIC8qIHNlbGVjdGVkLXRleHQtYW5kLXRleHRhcmVhLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAic2VsZWN0ZWQtdGV4dC1hbmQtdGV4dGFyZWEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0RTBBMjhFMjExRTVENUIwMEFGN0M3RiAvKiBEcmFnQW5kRHJvcFRlc3Rz
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0FuZERyb3BUZXN0c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFM0Q4MDcyMEY3MDhFNDAwN0I1OEM1IC8qIHNp
Z25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFy
Z2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RjQwNUJBMUQ0QzBDRjgwMDdBOTcwNyAvKiBmdWxsLXNpemUtYXV0b3Bs
YXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjI5OSw2ICsyMzA3LDcgQEAKIAkJCQk1MThFRTUxNjIwQTc4
Q0RGMDBFMDI0RjMgLyogRG91YmxlRGVmZXJzTG9hZGluZy5tbSAqLywKIAkJCQk1MThFRTUxNzIw
QTc4Q0RGMDBFMDI0RjMgLyogRG91YmxlRGVmZXJzTG9hZGluZ1BsdWdpbi5tbSAqLywKIAkJCQlB
MUE0RkU1RDE4REQzREI3MDBCNUVBOEEgLyogRG93bmxvYWQubW0gKi8sCisJCQkJRjQ2MTI4RDYy
MTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9wVGVzdHMubW0gKi8sCiAJCQkJQTE1NTAyMjgx
RTA1MDIwQjAwQTI0QzU3IC8qIER1cGxpY2F0ZUNvbXBsZXRpb25IYW5kbGVyQ2FsbHMubW0gKi8s
CiAJCQkJRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi8s
CiAJCQkJQ0RBMjlCMjgyMEZEMkE5OTAwRjE1Q0VEIC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBp
UC5tbSAqLywKQEAgLTI2MzIsNiArMjY0MSw3IEBACiAJCQkJQTE3RUFDNTQyMDgzMDU2RTAwODRC
NDFCIC8qIGZpbmQucGRmICovLAogCQkJCUY0M0UzQkMwMjBEQURCODAwMEE0RTdFRCAvKiBmaXhl
ZC1uYXYtYmFyLmh0bWwgKi8sCiAJCQkJOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3Vz
LWlucHV0cy5odG1sICovLAorCQkJCUY0NjEyOEQ4MjExRTQ5NjMwMEQ5RkFEQiAvKiBmdWxsLXBh
Z2UtZHJvcHpvbmUuaHRtbCAqLywKIAkJCQlGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlDRDc4RTEx
QjFEQjdFQTM2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLmh0bWwgKi8sCiAJCQkJM0ZC
RDFCNDkxRDM5RDFEQjAwRTZENkZBIC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5odG1s
ICovLApAQCAtMjY4Niw2ICsyNjk2LDcgQEAKIAkJCQlDMjVDQ0EwQTFFNTEzRjQ5MDAyNkNCOEEg
LyogTGluZUJyZWFraW5nLmh0bWwgKi8sCiAJCQkJRjQxQUI5OTYxRUY0NjkyQzAwODNGQTA4IC8q
IGxpbmstYW5kLWlucHV0Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OUQxRUY0NjkyQzAwODNGQTA4IC8q
IGxpbmstYW5kLXRhcmdldC1kaXYuaHRtbCAqLywKKwkJCQlGNDYxMjhEMTIxMUUyRDI1MDBEOUZB
REIgLyogbGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgKi8sCiAJCQkJOEMxMEFGOTcyMDY0
Njc4MzAwMThGRDkwIC8qIGxvY2Fsc3RvcmFnZS1lbXB0eS1zdHJpbmctdmFsdWUuaHRtbCAqLywK
IAkJCQk1MUU2QTg5NTFEMkYxQzc3MDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIuaHRtbCAq
LywKIAkJCQk0NkM1MTlFMjFEMzU2Mjk2MDBEQUE1MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJp
ZXMuaHRtbCAqLywKQEAgLTMxMjcsNiArMzEzOCw4IEBACiAJCQkJQzA4MTIyNDQxM0ZDMTlFQzAw
REMzOUFFIC8qIFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdy5tICovLAogCQkJCTI5
QUI4QUEzMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
LmggKi8sCiAJCQkJMjlBQjhBQTIxNjRDN0E5MzAwRDQ5QkVDIC8qIFRlc3RCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJRjQ2MTI4QzkyMTFENDc1MTAwRDlGQURCIC8qIFRl
c3REcmFnZ2luZ0luZm8uaCAqLywKKwkJCQlGNDYxMjhDQTIxMUQ0NzUxMDBEOUZBREIgLyogVGVz
dERyYWdnaW5nSW5mby5tbSAqLywKIAkJCQlDMDg1ODdCRTEzRkU5NTZDMDAxRUY0RTUgLyogV2Vi
S2l0QWdub3N0aWNUZXN0LmggKi8sCiAJCQkJQzA4NTg3QkQxM0ZFOTU2QzAwMUVGNEU1IC8qIFdl
YktpdEFnbm9zdGljVGVzdC5tbSAqLywKIAkJCSk7CkBAIC0zMTcxLDcgKzMxODQsNyBAQAogCQkJ
CTQ2Mzk3Qjk0MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tICovLAogCQkJCTM3NTFBRjdB
MTY5NTE4RjgwMDc2NDMxOSAvKiBET01Ob2RlRnJvbUpTT2JqZWN0Lm1tICovLAogCQkJCTM3REM2
NzhCMTQwRDdDNTAwMEFCQ0NEQiAvKiBET01SYW5nZU9mU3RyaW5nLm1tICovLAotCQkJCUY0QkZB
NjhDMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLywK
KwkJCQlGNEUwQTI4RTIxMUU1RDVCMDBBRjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSAq
LywKIAkJCQlDMDdFNkNBRTEzRkQ2NzY1MDAzOEIyMkIgLyogRHluYW1pY0RldmljZVNjYWxlRmFj
dG9yLm1tICovLAogCQkJCTFBOUZCNkNDMUNBMzRCRTUwMDk2NjEyNCAvKiBFYXJseUtWT0NyYXNo
Lm1tICovLAogCQkJCTRCQjQxNjAzMTY4MTVGOTEwMDgyNDIzOCAvKiBFbGVtZW50QXRQb2ludElu
V2ViRnJhbWUubW0gKi8sCkBAIC0zMTg0LDYgKzMxOTcsNyBAQAogCQkJCUM1MDdFOEE2MTRDNjU0
NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi8sCiAJCQkJNTdGMTBEOTIxQzdFN0IzODAw
RUNERjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gKi8sCiAJCQkJNEJCNDE2MDEx
NjgxNUIyNjAwODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tICovLAorCQkJ
CUY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tICov
LAogCQkJCTdBN0IwRTdFMUVBRkU0NTQwMDZBQjhBRSAvKiBMaW1pdFRpdGxlU2l6ZS5tbSAqLywK
IAkJCQk1NzkwMUZBRTFDQUYxMzcxMDBFRDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1t
ICovLAogCQkJCUNEQTMxNTk2MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24ubW0gKi8sCkBAIC0zMjIwLDcgKzMyMzQsNiBAQAogCQkJCTFBN0JGQzBBMTcxQTBC
REIwMEJDNUY2NCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50Lm1tICovLAogCQkJCUE1RTIwMjcyMTVC
MjE4MTkwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSAqLywKIAkJCQlG
NEZBOTE3RjFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tICov
LAotCQkJCTc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRy
aWJ1dGVzLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMzI0MCw3ICszMjUzLDYgQEAKIAkJCQlGNEZBOTE4MjFFNjE4NTY2MDA3QjhD
MUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sICov
LAogCQkJCTFBN0U4QjM1MTgxMjA5MzYwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmlnYXRpb24uaHRt
bCAqLywKIAkJCQlGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRl
ZGl0YWJsZS5odG1sICovLAotCQkJCUExODE5QjEyMjA4OTREMDQwMEMwOUI4MyAvKiBmdWxsLXBh
Z2UtZHJvcHpvbmUuaHRtbCAqLywKIAkJCQlDREJGQ0M0MjFBOUZGNDQ4MDBBN0I2OTEgLyogRnVs
bHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLywKIAkJCQk5QjRGOEZBNjE1OUQ1MkNBMDAy
RDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLywKIAkJCQk5QjI2RkNCNDE1
OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8sCkBA
IC0zNzEzLDEwICszNzI1LDExIEBACiAJCQkJNTE4RUU1MTgyMEE3OENFMjAwRTAyNEYzIC8qIERv
dWJsZURlZmVyc0xvYWRpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMzFBNDExQUY2
MDA0NDdDNEMgLyogRG93bmxvYWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFRTFBNDEx
QUU2MDA0NDdDNEMgLyogRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3Rl
Ym9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDRGM0I2MUU0RTJCQ0IwMEJCMjc2
NyAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NjEy
OEI3MjExQzhFRDUwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUY0NjEyOEQ3MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFRlc3Rz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRENEYzQjkxRTRFMzZFNDAwQkIyNzY3IC8qIERyYWdB
bmREcm9wVGVzdHNJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQlGNEUwQTI4RjIxMUU1RDVCMDBB
RjdDN0YgLyogRHJhZ0FuZERyb3BUZXN0c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExNTUw
MjJBMUUwNTAyMEIwMEEyNEM1NyAvKiBEdXBsaWNhdGVDb21wbGV0aW9uSGFuZGxlckNhbGxzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkUxQTQxMUE3RTAwNDQ3QzRDIC8qIER5bmFtaWNE
ZXZpY2VTY2FsZUZhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODkyMURENTk5QjYw
MEIwMDMyOCAvKiBFYXJseUtWT0NyYXNoLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zODAyLDYgKzM4
MTUsNyBAQAogCQkJCUY0NUUxNTczMjExMkNFMjkwMDMwN0U4MiAvKiBLZXlib2FyZElucHV0VGVz
dHNJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNjFBNDExQUU2MDA0NDdDNEMgLyog
TGF5b3V0TWlsZXN0b25lc1dpdGhBbGxDb250ZW50SW5GcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VERjFBNDExQTkyMDA0NDdDNEMgLyogTGF5b3V0VW5pdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJhZ0FuZERyb3BU
ZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNjZCREI2MUVBRjE0RUYwMENDQzkyNCAvKiBM
aW1pdFRpdGxlU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTdCMEU3RjFFQUZFNEMzMDA2
QUI4QUUgLyogTGltaXRUaXRsZVNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMjVDQ0EwNjFF
NTEzODBCMDAyNkNCOEEgLyogTGluZUJyZWFraW5nLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTQw
LDYgKzM5NTQsNyBAQAogCQkJCTFDNzM0QjUzMjA3ODhDNDgwMEY0MzBFQSAvKiBTeXN0ZW1Db2xv
cnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YxNjFBNDExQUU2MDA0NDdDNEMgLyogVGVy
bWluYXRlVHdpY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTkxQTQxMUExRDAwNDQ3
QzRDIC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
KwkJCQlGNDYxMjhDQjIxMUQ0NzUxMDBEOUZBREIgLyogVGVzdERyYWdnaW5nSW5mby5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMUMwNEE3MUQ3NjI5OEIwMDBBNjgxNiAvKiBU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0RkM1OTAxQjhB
RTM2RjAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5tbSBpbiBTb3VyY2VzICovLApAQCAtNDAzNiw3
ICs0MDUxLDYgQEAKIAkJCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFj
RWRpdGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGNTZEQTkxRTVGOTE5RDAwM0VE
RTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk4NEZBQ0Mx
Q0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBTb3VyY2VzICovLAot
CQkJCTc2NDMyMkQ3MUI2MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1
dGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUM2NERDMzIxRDc2MTk4QTAwNEI1OThFIC8qIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNGY2NzQ1YmZiMDczM2YyOTIyYTJiODI5NzRmZTBjNjgxNGQ5N2UyCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EcmFnQW5k
RHJvcFRlc3RzLm1tCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKworI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3IuaCIKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQorCitURVNUKERyYWdBbmREcm9wVGVzdHMsIERyYWdJbWFnZUxvY2F0aW9uRm9yTGlua0lu
U3ViZnJhbWUpCit7CisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BT
aW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlld0ZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAw
LCA0MDApXSk7CisgICAgW1tzaW11bGF0b3Igd2ViVmlld10gc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAibGluay1pbi1pZnJhbWUtYW5kLWlucHV0Il07CisgICAgW3NpbXVsYXRvciBy
dW5Gcm9tOk5TTWFrZVBvaW50KDIwMCwgMzc1KSB0bzpOU01ha2VQb2ludCgyMDAsIDEyNSldOwor
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20vIiwgW1tzaW11bGF0
b3Igd2ViVmlld10gc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2lucHV0JykudmFsdWUiXSk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgRVhQ
RUNUX1RSVUUoTlNQb2ludEluUmVjdChbc2ltdWxhdG9yIGluaXRpYWxEcmFnSW1hZ2VMb2NhdGlv
bkluVmlld10sIE5TTWFrZVJlY3QoMCwgMjUwLCA0MDAsIDI1MCkpKTsKKyNlbmRpZgorfQorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZnVsbC1wYWdlLWRyb3B6
b25lLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2Z1bGwtcGFn
ZS1kcm9wem9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MzE5NzE4Yjk5ZTZjNGY0MWFmMjU1MWI0MDc0
NzJkZmExNDA2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL2Z1bGwtcGFnZS1kcm9wem9uZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoIj4KKzxib2R5IHN0eWxlPSJ3aWR0aDogMTAwdnc7IGhlaWdodDogMTAwdmg7IG1hcmdp
bjogMDsiCisgICAgb25kcmFnZW50ZXI9IndpbmRvdy5vYnNlcnZlZERyYWdFbnRlciA9IHRydWU7
IHJldHVybiBmYWxzZTsiCisgICAgb25kcmFnb3Zlcj0id2luZG93Lm9ic2VydmVkRHJhZ092ZXIg
PSB0cnVlOyByZXR1cm4gZmFsc2U7IgorICAgIG9uZHJvcD0id2luZG93Lm9ic2VydmVkRHJvcCA9
IHRydWU7IHJldHVybiBmYWxzZTsiPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1s
CmluZGV4IDIwYmNlMjUwOGEwNTVjMjYwZTQ0NmQzOTI2NmI1M2NiOTdjNjg2MjkuLjk1MWNmNWNk
MzIxNWUwNWZjYjhjNjEyYWEyOTA3YTBkZjYwM2I5ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW1hZ2UtaW4tbGluay1hbmQtaW5wdXQuaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2ltYWdlLWluLWxpbmst
YW5kLWlucHV0Lmh0bWwKQEAgLTI1LDYgKzI1LDYgQEAKIDwvaGVhZD4KIAogPGJvZHk+Ci0gICAg
PGRpdj48YSBpZD0ibGluayIgaHJlZj0iaHR0cHM6Ly93d3cuYXBwbGUuY29tIj48aW1nIHNyYz0i
aWNvbi5wbmciPjwvaW1nPjwvYT48L2Rpdj4KLSAgICA8ZGl2PjxpbnB1dCBpZD0iZWRpdG9yIj48
L2lucHV0PjwvZGl2PgorICAgIDxkaXYgaWQ9InRvcCI+PGEgaWQ9ImxpbmsiIGhyZWY9Imh0dHBz
Oi8vd3d3LmFwcGxlLmNvbSI+PGltZyBzcmM9Imljb24ucG5nIj48L2ltZz48L2E+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iYm90dG9tIj48aW5wdXQgaWQ9ImVkaXRvciI+PC9pbnB1dD48L2Rpdj4KIDwv
Ym9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
bGluay1pbi1pZnJhbWUtYW5kLWlucHV0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL2xpbmstaW4taWZyYW1lLWFuZC1pbnB1dC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5
ZTgzZTZlZjk1Yzg1M2IzMDE2MWU2NTQzMzQ1ZGYwZjFhZDQyZjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2xpbmstaW4taWZyYW1lLWFu
ZC1pbnB1dC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFs
LXNjYWxlPTEiPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
aGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKworaWZyYW1lLCBpbnB1dCB7CisgICAg
d2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAyNTBweDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAg
ICBmb250LXNpemU6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0
PjwvaW5wdXQ+Cis8aWZyYW1lIHNyY2RvYz0iPGEgaHJlZj0naHR0cHM6Ly93d3cuYXBwbGUuY29t
Lycgc3R5bGU9J2ZvbnQtc2l6ZTogMTAwcHg7Jz5MaW5rIHRvIGFwcGxlLmNvbTwvYT4iPgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERy
b3BQYXN0ZWJvYXJkVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFn
QW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDgxYmJhZTBjN2FlNTQyNTI3NGNhYThhM2ExZjZmNGEwMTQ0NGRjZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDI4
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgUExBVEZP
Uk0oTUFDKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgotI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4KLSNpbXBvcnQgPFdlYktp
dC9XZWJWaWV3Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotQGludGVyZmFjZSBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgOiBOU09i
amVjdDxXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gewotICAgIEJsb2NrUHRyPHZvaWQgKHZvaWQpPiBf
Y29tcGxldGlvbkJsb2NrOwotfQotKyAoaW5zdGFuY2V0eXBlKWxpc3RlbmVyV2l0aENvbXBsZXRp
b25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxvY2s7Ci1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIKLQotKyAoaW5zdGFuY2V0eXBl
KWxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9u
QmxvY2sKLXsKLSAgICByZXR1cm4gW1tbRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdIGF1dG9yZWxlYXNlXTsK
LX0KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9i
bG9ja190KWNvbXBsZXRpb25CbG9jawotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKQot
ICAgICAgICBfY29tcGxldGlvbkJsb2NrID0gY29tcGxldGlvbkJsb2NrOwotCi0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hM
b2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKLXsKLSAgICBpZiAoX2NvbXBsZXRpb25CbG9j
aykKLSAgICAgICAgX2NvbXBsZXRpb25CbG9jaygpOwotfQotQGVuZAotCi1AaW50ZXJmYWNlIERy
YWdTb3VyY2UgOiBOU09iamVjdAotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFza0ZvckxvY2FsOihCT09MKWZsYWc7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBE
cmFnU291cmNlCi0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tGb3JMb2NhbDooQk9PTClmbGFnCi17Ci0gICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7
Ci19Ci0KLUBlbmQKLQotQGludGVyZmFjZSBEcmFnSW5mbyA6IE5TT2JqZWN0PE5TRHJhZ2dpbmdJ
bmZvPiB7Ci0gICAgTlNQb2ludCBfbGFzdE1vdXNlUG9zaXRpb247Ci0gICAgUmV0YWluUHRyPE5T
SW1hZ2U+IF9pbWFnZTsKLSAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBfcGFzdGVib2FyZDsK
LSAgICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gX3NvdXJjZTsKLSAgICBSZXRhaW5QdHI8TlNXaW5k
b3c+IF93aW5kb3c7Ci0gICAgTlNTaXplIF9vZmZzZXQ7Ci0gICAgTlNJbnRlZ2VyIF9udW1iZXJP
ZlZhbGlkSXRlbXNGb3JEcm9wOwotfQotQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgbGFz
dE1vdXNlUG9zaXRpb247Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBEcmFnSW5mbwotCi0tIChp
ZClpbml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0OihOU1NpemUpb2Zmc2V0IHBh
c3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgc291cmNlOihEcmFnU291cmNlICop
c291cmNlIGRlc3RpbmF0aW9uV2luZG93OihOU1dpbmRvdyAqKWRlc3RpbmF0aW9uV2luZG93Ci17
Ci0gICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX2ltYWdlID0gaW1hZ2U7
Ci0gICAgICAgIF9wYXN0ZWJvYXJkID0gcGFzdGVib2FyZDsKLSAgICAgICAgX3NvdXJjZSA9IHNv
dXJjZTsKLSAgICAgICAgX3dpbmRvdyA9IGRlc3RpbmF0aW9uV2luZG93OwotICAgICAgICBfb2Zm
c2V0ID0gb2Zmc2V0OwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTlNQb2ludCls
YXN0TW91c2VQb3NpdGlvbgotewotICAgIHJldHVybiBfbGFzdE1vdXNlUG9zaXRpb247Ci19Ci0K
LS0gKHZvaWQpc2V0TGFzdE1vdXNlUG9zaXRpb246KE5TUG9pbnQpbGFzdE1vdXNlUG9zaXRpb24K
LXsKLSAgICBfbGFzdE1vdXNlUG9zaXRpb24gPSBsYXN0TW91c2VQb3NpdGlvbjsKLX0KLQotLSAo
TlNXaW5kb3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93Ci17Ci0gICAgcmV0dXJuIF93aW5k
b3cuZ2V0KCk7Ci19Ci0KLS0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2sKLXsKLSAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKLX0KLQotLSAoTlNQb2lu
dClkcmFnZ2luZ0xvY2F0aW9uCi17Ci0gICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKLX0K
LQotLSAoTlNQb2ludClkcmFnZ2VkSW1hZ2VMb2NhdGlvbgotewotICAgIHJldHVybiBOU01ha2VQ
b2ludChfbGFzdE1vdXNlUG9zaXRpb24ueCArIF9vZmZzZXQud2lkdGgsIF9sYXN0TW91c2VQb3Np
dGlvbi55ICsgX29mZnNldC5oZWlnaHQpOwotfQotCi0tIChOU0ltYWdlICopZHJhZ2dlZEltYWdl
Ci17Ci0gICAgcmV0dXJuIF9pbWFnZS5nZXQoKTsKLX0KLQotLSAoTlNQYXN0ZWJvYXJkICopZHJh
Z2dpbmdQYXN0ZWJvYXJkCi17Ci0gICAgcmV0dXJuIF9wYXN0ZWJvYXJkLmdldCgpOwotfQotCi0t
IChpZClkcmFnZ2luZ1NvdXJjZQotewotICAgIHJldHVybiBfc291cmNlLmdldCgpOwotfQotCi0t
IChOU0ludGVnZXIpZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcgotewotICAgIHJldHVybiAwOwotfQot
Ci0tICh2b2lkKXNsaWRlRHJhZ2dlZEltYWdlVG86KE5TUG9pbnQpc2NyZWVuUG9pbnQKLXsKLX0K
LQotLSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246
KE5TVVJMICopZHJvcERlc3RpbmF0aW9uCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNE
cmFnZ2luZ0Zvcm1hdGlvbilkcmFnZ2luZ0Zvcm1hdGlvbgotewotICAgIHJldHVybiBOU0RyYWdn
aW5nRm9ybWF0aW9uRGVmYXVsdDsKLX0KLQotLSAodm9pZClzZXREcmFnZ2luZ0Zvcm1hdGlvbjoo
TlNEcmFnZ2luZ0Zvcm1hdGlvbilmb3JtYXRpb24KLXsKLX0KLQotLSAoQk9PTClhbmltYXRlc1Rv
RGVzdGluYXRpb24KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpc2V0QW5pbWF0ZXNU
b0Rlc3RpbmF0aW9uOihCT09MKWZsYWcKLXsKLX0KLQotLSAoTlNJbnRlZ2VyKW51bWJlck9mVmFs
aWRJdGVtc0ZvckRyb3AKLXsKLSAgICByZXR1cm4gX251bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7
Ci19Ci0KLS0gKHZvaWQpc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDooTlNJbnRlZ2VyKW51
bWJlcgotewotICAgIF9udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbnVtYmVyOwotfQotCi0t
ICh2b2lkKWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNFbnVtZXJhdGlvbk9w
dGlvbnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmlldyBjbGFzc2VzOihOU0FycmF5ICop
Y2xhc3NBcnJheSBzZWFyY2hPcHRpb25zOihOU0RpY3Rpb25hcnkgKilzZWFyY2hPcHRpb25zIHVz
aW5nQmxvY2s6KHZvaWQgKF4pKE5TRHJhZ2dpbmdJdGVtICpkcmFnZ2luZ0l0ZW0sIE5TSW50ZWdl
ciBpZHgsIEJPT0wgKnN0b3ApKWJsb2NrCi17Ci19Ci0KLS0gKE5TU3ByaW5nTG9hZGluZ0hpZ2hs
aWdodClzcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Ci17Ci0gICAgcmV0dXJuIE5TU3ByaW5nTG9hZGlu
Z0hpZ2hsaWdodE5vbmU7Ci19Ci0KLS0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5nCi17Ci19Ci0K
LUBlbmQKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgTlNJbWFnZSAqZ2V0
VGVzdEltYWdlKCkKLXsKLSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250
ZW50c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3
aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXSBhdXRvcmVsZWFzZV07Ci19Ci0KLXN0YXRpYyBXZWJWaWV3ICp3ZWJWaWV3QWZ0ZXJQZXJm
b3JtaW5nRHJhZ09wZXJhdGlvbihOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCi17Ci0gICAgUmV0
YWluUHRyPFdlYlZpZXc+IGRlc3RpbmF0aW9uID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAgICBSZXRhaW5QdHI8
TlNXaW5kb3c+IGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgc3R5bGVNYXNrOjAgYmFja2lu
ZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW2hvc3RXaW5kb3cgc2V0
RnJhbWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwotICAgIFtbaG9zdFdpbmRvdyBjb250ZW50
Vmlld10gYWRkU3VidmlldzpkZXN0aW5hdGlvbi5nZXQoKV07Ci0gICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOwotICAgIFtkZXN0aW5hdGlvbiBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpbRnJh
bWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpeKCkg
ewotICAgICAgICBSZXRhaW5QdHI8RHJhZ1NvdXJjZT4gc291cmNlID0gYWRvcHROUyhbW0RyYWdT
b3VyY2UgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgUmV0YWluUHRyPERyYWdJbmZvPiBpbmZvID0g
YWRvcHROUyhbW0RyYWdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOmdldFRlc3RJbWFnZSgpIG9m
ZnNldDpOU01ha2VTaXplKDAsIDApIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNl
LmdldCgpIGRlc3RpbmF0aW9uV2luZG93Omhvc3RXaW5kb3cuZ2V0KCldKTsKLSAgICAgICAgW2lu
Zm8gc2V0TGFzdE1vdXNlUG9zaXRpb246TlNNYWtlUG9pbnQoMCwgMjAwKV07Ci0gICAgICAgIFtk
ZXN0aW5hdGlvbiBkcmFnZ2luZ0VudGVyZWQ6aW5mby5nZXQoKV07Ci0gICAgICAgIFtpbmZvIHNl
dExhc3RNb3VzZVBvc2l0aW9uOk5TTWFrZVBvaW50KDIwMCwgMjAwKV07Ci0gICAgICAgIFtkZXN0
aW5hdGlvbiBkcmFnZ2luZ1VwZGF0ZWQ6aW5mby5nZXQoKV07Ci0KLSAgICAgICAgRVhQRUNUX1RS
VUUoW2Rlc3RpbmF0aW9uIHBlcmZvcm1EcmFnT3BlcmF0aW9uOmluZm8uZ2V0KCldKTsKLSAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XV07Ci0gICAgW1tkZXN0aW5hdGlvbiBtYWluRnJhbWVd
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgcmV0dXJu
IGRlc3RpbmF0aW9uLmdldCgpOwotfQotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3Rz
LCBEcm9wVVRGOFBsYWluVGV4dCkKLXsKLSAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBb
TlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Ci0gICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTpbQCJJIGFtIGEgV2ViS2l0LiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRl
eHRdOwotCi0gICAgUmV0YWluUHRyPFdlYlZpZXc+IHJlc3VsdGluZ1dlYlZpZXcgPSB3ZWJWaWV3
QWZ0ZXJQZXJmb3JtaW5nRHJhZ09wZXJhdGlvbihwYXN0ZWJvYXJkKTsKLSAgICBFWFBFQ1RfVFJV
RShbW3Jlc3VsdGluZ1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJp
bmc6QCJkb2N1bWVudC5ib2R5LnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJJIGFtIGEg
V2ViS2l0LiJdKTsKLX0KLQotVEVTVChEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cywgRHJvcEpQ
RUcpCi17Ci0gICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0
ZWJvYXJkV2l0aFVuaXF1ZU5hbWVdOwotICAgIE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2Uo
KTsKLSAgICBOU0JpdG1hcEltYWdlUmVwICppbWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGlt
YWdlUmVwV2l0aERhdGE6aWNvbi5USUZGUmVwcmVzZW50YXRpb25dOwotICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6W2ltYWdlUmVwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBl
IHByb3BlcnRpZXM6QHsgTlNJbWFnZUNvbXByZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlw
ZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFR107Ci0KLSAgICBSZXRhaW5QdHI8V2Vi
Vmlldz4gcmVzdWx0aW5nV2ViVmlldyA9IHdlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0
aW9uKHBhc3RlYm9hcmQpOwotICAgIEVYUEVDVF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJ2ltZycpLnRhZ05hbWUgPT09ICdJTUcnIl0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsK
LX0KLSAgICAKLSNpZiBXS19BUElfRU5BQkxFRAotCi1URVNUKERyYWdBbmREcm9wUGFzdGVib2Fy
ZFRlc3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQotewotICAgIE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKLSAg
ICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdIG93bmVy
Om5pbF07Ci0gICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OkBbQCJmaWxlLW5hbWUiXSBm
b3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDQwMCwgNDAwKV0pOwotICAgIGF1dG8gaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHls
ZU1hc2s6MCBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBb
aG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQb2ludCgwLCAwKV07Ci0gICAgW1tob3N0
V2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZnVsbC1wYWdlLWRyb3B6b25l
Il07Ci0KLSAgICBhdXRvIGRyYWdTb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10g
aW5pdF0pOwotICAgIGF1dG8gZHJhZ0luZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8gYWxsb2NdIGlu
aXRXaXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwgMCkgcGFzdGVi
b2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpkcmFnU291cmNlLmdldCgpIGRlc3RpbmF0aW9uV2luZG93
Omhvc3RXaW5kb3cuZ2V0KCldKTsKLQotICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlv
bjpOU01ha2VQb2ludCgwLCAyMDApXTsKLSAgICBbd2ViVmlldyBkcmFnZ2luZ0VudGVyZWQ6ZHJh
Z0luZm8uZ2V0KCldOwotICAgIEVYUEVDVF9XS19TVFJFUShAIjEiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmRyYWdFbnRlcmVkRm9yVGVzdGluZyJdKTsK
LQotICAgIFtkcmFnSW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgyMDAsIDIw
MCldOwotICAgIFt3ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpkcmFnSW5mby5nZXQoKV07Ci0gICAg
RVhQRUNUX0VRKDFVLCBbZHJhZ0luZm8gbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcF0pOwotfQot
Ci0jZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Ry
YWdBbmREcm9wVGVzdHNNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFn
QW5kRHJvcFRlc3RzTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxYzRjYjNmMDQ0MWFjOTZkYjk2ODM5ZWRh
MzI5YmMxMzBmMzZmMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9EcmFnQW5kRHJvcFRlc3RzTWFjLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiRHJhZ0FuZERyb3BTaW11bGF0b3Iu
aCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAm
JiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCisKK1RFU1QoRHJhZ0FuZERy
b3BUZXN0cywgTnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCkKK3sKKyAgICBOU1Bhc3RlYm9hcmQg
KnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Cisg
ICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbTlNGaWxlbmFtZXNQYm9hcmRUeXBlXSBvd25l
cjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIHNldFByb3BlcnR5TGlzdDpAW0AiZmlsZS1uYW1lIl0g
Zm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworCisgICAgYXV0byBzaW11bGF0b3IgPSBh
ZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlld0ZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgVGVzdFdLV2ViVmlldyAqd2ViVmll
dyA9IFtzaW11bGF0b3Igd2ViVmlld107CisgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbERyYWdQ
YXN0ZWJvYXJkOnBhc3RlYm9hcmRdOworCisgICAgYXV0byBob3N0V2luZG93ID0gYWRvcHROUyhb
W05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgNDAw
LCA0MDApIHN0eWxlTWFzazowIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpO
T10pOworICAgIFtob3N0V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFrZVBvaW50KDAsIDApXTsK
KyAgICBbW2hvc3RXaW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlld107CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZnVsbC1wYWdlLWRyb3B6
b25lIl07CisKKyAgICBOU0ludGVnZXIgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IDA7Cisg
ICAgW3NpbXVsYXRvciBzZXRXaWxsRW5kRHJhZ2dpbmdIYW5kbGVyOlsmbnVtYmVyT2ZWYWxpZEl0
ZW1zRm9yRHJvcCwgc2ltdWxhdG9yXSB7CisgICAgICAgIG51bWJlck9mVmFsaWRJdGVtc0ZvckRy
b3AgPSBbc2ltdWxhdG9yIGRyYWdnaW5nSW5mb10ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsK
KyAgICB9XTsKKworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpOU01ha2VQb2ludCgwLCAwKSB0bzpO
U01ha2VQb2ludCgyMDAsIDIwMCldOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm9ic2VydmVkRHJhZ0VudGVyIl0uYm9vbFZhbHVlKTsK
KyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
b2JzZXJ2ZWREcmFnT3ZlciJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm9ic2VydmVkRHJvcCJdLmJvb2xWYWx1ZSk7
CisgICAgRVhQRUNUX0VRKDFVLCBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKTsKK30KKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xlZ2FjeURy
YWdBbmREcm9wVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lE
cmFnQW5kRHJvcFRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYjZjNDAxNzgzOTVlNjU3OWE1N2ZmNjhj
OGZkNTIyMDM3MGZiZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tCkBAIC0wLDAgKzEsMjU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2lt
cG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+Cisj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGlu
dGVyZmFjZSBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgOiBOU09iamVjdDxXZWJGcmFtZUxv
YWREZWxlZ2F0ZT4geworICAgIEJsb2NrUHRyPHZvaWQoKT4gX2NvbXBsZXRpb25CbG9jazsKK30K
KysgKGluc3RhbmNldHlwZSlsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Js
b2NrX3QpY29tcGxldGlvbkJsb2NrOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRnJhbWVMb2Fk
Q29tcGxldGlvbkxpc3RlbmVyCisKKysgKGluc3RhbmNldHlwZSlsaXN0ZW5lcldpdGhDb21wbGV0
aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJsb2NrCit7CisgICAgcmV0dXJu
IFtbW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9u
QmxvY2s6Y29tcGxldGlvbkJsb2NrXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxv
Y2sKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICAgICAgX2NvbXBsZXRpb25C
bG9jayA9IGNvbXBsZXRpb25CbG9jazsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lCit7CisgICAgaWYgKF9jb21wbGV0aW9uQmxvY2spCisgICAgICAgIF9jb21wbGV0
aW9uQmxvY2soKTsKK30KK0BlbmQKKworQGludGVyZmFjZSBEcmFnU291cmNlIDogTlNPYmplY3QK
Ky0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDoo
Qk9PTClmbGFnOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRHJhZ1NvdXJjZQorCistIChOU0Ry
YWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6KEJPT0wpZmxh
ZworeworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworfQorCitAZW5kCisKK0BpbnRl
cmZhY2UgRHJhZ0luZm8gOiBOU09iamVjdDxOU0RyYWdnaW5nSW5mbz4geworICAgIE5TUG9pbnQg
X2xhc3RNb3VzZVBvc2l0aW9uOworICAgIFJldGFpblB0cjxOU0ltYWdlPiBfaW1hZ2U7CisgICAg
UmV0YWluUHRyPE5TUGFzdGVib2FyZD4gX3Bhc3RlYm9hcmQ7CisgICAgUmV0YWluUHRyPERyYWdT
b3VyY2U+IF9zb3VyY2U7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiBfd2luZG93OworICAgIE5T
U2l6ZSBfb2Zmc2V0OworICAgIE5TSW50ZWdlciBfbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsK
K30KK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1BvaW50IGxhc3RNb3VzZVBvc2l0aW9uOworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gRHJhZ0luZm8KKworLSAoaWQpaW5pdFdpdGhJbWFnZTooTlNJ
bWFnZSAqKWltYWdlIG9mZnNldDooTlNTaXplKW9mZnNldCBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9h
cmQgKilwYXN0ZWJvYXJkIHNvdXJjZTooRHJhZ1NvdXJjZSAqKXNvdXJjZSBkZXN0aW5hdGlvbldp
bmRvdzooTlNXaW5kb3cgKilkZXN0aW5hdGlvbldpbmRvdworeworICAgIGlmIChzZWxmID0gW3N1
cGVyIGluaXRdKSB7CisgICAgICAgIF9pbWFnZSA9IGltYWdlOworICAgICAgICBfcGFzdGVib2Fy
ZCA9IHBhc3RlYm9hcmQ7CisgICAgICAgIF9zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgIF93aW5k
b3cgPSBkZXN0aW5hdGlvbldpbmRvdzsKKyAgICAgICAgX29mZnNldCA9IG9mZnNldDsKKyAgICB9
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TUG9pbnQpbGFzdE1vdXNlUG9zaXRpb24KK3sK
KyAgICByZXR1cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQorCistICh2b2lkKXNldExhc3RNb3Vz
ZVBvc2l0aW9uOihOU1BvaW50KWxhc3RNb3VzZVBvc2l0aW9uCit7CisgICAgX2xhc3RNb3VzZVBv
c2l0aW9uID0gbGFzdE1vdXNlUG9zaXRpb247Cit9CisKKy0gKE5TV2luZG93ICopZHJhZ2dpbmdE
ZXN0aW5hdGlvbldpbmRvdworeworICAgIHJldHVybiBfd2luZG93LmdldCgpOworfQorCistIChO
U0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrCit7CisgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbkNvcHk7Cit9CisKKy0gKE5TUG9pbnQpZHJhZ2dpbmdMb2NhdGlvbgor
eworICAgIHJldHVybiBfbGFzdE1vdXNlUG9zaXRpb247Cit9CisKKy0gKE5TUG9pbnQpZHJhZ2dl
ZEltYWdlTG9jYXRpb24KK3sKKyAgICByZXR1cm4gTlNNYWtlUG9pbnQoX2xhc3RNb3VzZVBvc2l0
aW9uLnggKyBfb2Zmc2V0LndpZHRoLCBfbGFzdE1vdXNlUG9zaXRpb24ueSArIF9vZmZzZXQuaGVp
Z2h0KTsKK30KKworLSAoTlNJbWFnZSAqKWRyYWdnZWRJbWFnZQoreworICAgIHJldHVybiBfaW1h
Z2UuZ2V0KCk7Cit9CisKKy0gKE5TUGFzdGVib2FyZCAqKWRyYWdnaW5nUGFzdGVib2FyZAorewor
ICAgIHJldHVybiBfcGFzdGVib2FyZC5nZXQoKTsKK30KKworLSAoaWQpZHJhZ2dpbmdTb3VyY2UK
K3sKKyAgICByZXR1cm4gX3NvdXJjZS5nZXQoKTsKK30KKworLSAoTlNJbnRlZ2VyKWRyYWdnaW5n
U2VxdWVuY2VOdW1iZXIKK3sKKyAgICByZXR1cm4gMDsKK30KKworLSAodm9pZClzbGlkZURyYWdn
ZWRJbWFnZVRvOihOU1BvaW50KXNjcmVlblBvaW50Cit7Cit9CisKKy0gKE5TQXJyYXkgKiluYW1l
c09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5h
dGlvbgoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TRHJhZ2dpbmdGb3JtYXRpb24pZHJh
Z2dpbmdGb3JtYXRpb24KK3sKKyAgICByZXR1cm4gTlNEcmFnZ2luZ0Zvcm1hdGlvbkRlZmF1bHQ7
Cit9CisKKy0gKHZvaWQpc2V0RHJhZ2dpbmdGb3JtYXRpb246KE5TRHJhZ2dpbmdGb3JtYXRpb24p
Zm9ybWF0aW9uCit7Cit9CisKKy0gKEJPT0wpYW5pbWF0ZXNUb0Rlc3RpbmF0aW9uCit7CisgICAg
cmV0dXJuIE5POworfQorCistICh2b2lkKXNldEFuaW1hdGVzVG9EZXN0aW5hdGlvbjooQk9PTClm
bGFnCit7Cit9CisKKy0gKE5TSW50ZWdlciludW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wCit7Cisg
ICAgcmV0dXJuIF9udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOworfQorCistICh2b2lkKXNldE51
bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A6KE5TSW50ZWdlciludW1iZXIKK3sKKyAgICBfbnVtYmVy
T2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG51bWJlcjsKK30KKworLSAodm9pZCllbnVtZXJhdGVEcmFn
Z2luZ0l0ZW1zV2l0aE9wdGlvbnM6KE5TRW51bWVyYXRpb25PcHRpb25zKWVudW1PcHRzIGZvclZp
ZXc6KE5TVmlldyAqKXZpZXcgY2xhc3NlczooTlNBcnJheSAqKWNsYXNzQXJyYXkgc2VhcmNoT3B0
aW9uczooTlNEaWN0aW9uYXJ5ICopc2VhcmNoT3B0aW9ucyB1c2luZ0Jsb2NrOih2b2lkICheKShO
U0RyYWdnaW5nSXRlbSAqZHJhZ2dpbmdJdGVtLCBOU0ludGVnZXIgaWR4LCBCT09MICpzdG9wKSli
bG9jaworeworfQorCistIChOU1NwcmluZ0xvYWRpbmdIaWdobGlnaHQpc3ByaW5nTG9hZGluZ0hp
Z2hsaWdodAoreworICAgIHJldHVybiBOU1NwcmluZ0xvYWRpbmdIaWdobGlnaHROb25lOworfQor
CistICh2b2lkKXJlc2V0U3ByaW5nTG9hZGluZworeworfQorCitAZW5kCisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIE5TSW1hZ2UgKmdldFRlc3RJbWFnZSgpCit7CisgICAg
cmV0dXJuIFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0gYXV0b3JlbGVhc2VdOwor
fQorCitzdGF0aWMgV2ViVmlldyAqd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24o
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkKQoreworICAgIFJldGFpblB0cjxXZWJWaWV3PiBkZXN0
aW5hdGlvbiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiBob3N0V2luZG93
ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJl
Y3QoMCwgMCwgNDAwLCA0MDApIHN0eWxlTWFzazowIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZm
ZXJlZCBkZWZlcjpOT10pOworICAgIFtob3N0V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFrZVBv
aW50KDAsIDApXTsKKyAgICBbW2hvc3RXaW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6ZGVz
dGluYXRpb24uZ2V0KCldOworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
ZGVzdGluYXRpb24gc2V0RnJhbWVMb2FkRGVsZWdhdGU6W0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0
ZW5lciBsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6XigpIHsKKyAgICAgICAgUmV0YWluUHRy
PERyYWdTb3VyY2U+IHNvdXJjZSA9IGFkb3B0TlMoW1tEcmFnU291cmNlIGFsbG9jXSBpbml0XSk7
CisgICAgICAgIFJldGFpblB0cjxEcmFnSW5mbz4gaW5mbyA9IGFkb3B0TlMoW1tEcmFnSW5mbyBh
bGxvY10gaW5pdFdpdGhJbWFnZTpnZXRUZXN0SW1hZ2UoKSBvZmZzZXQ6TlNNYWtlU2l6ZSgwLCAw
KSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZS5nZXQoKSBkZXN0aW5hdGlvbldp
bmRvdzpob3N0V2luZG93LmdldCgpXSk7CisgICAgICAgIFtpbmZvIHNldExhc3RNb3VzZVBvc2l0
aW9uOk5TTWFrZVBvaW50KDAsIDIwMCldOworICAgICAgICBbZGVzdGluYXRpb24gZHJhZ2dpbmdF
bnRlcmVkOmluZm8uZ2V0KCldOworICAgICAgICBbaW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpO
U01ha2VQb2ludCgyMDAsIDIwMCldOworICAgICAgICBbZGVzdGluYXRpb24gZHJhZ2dpbmdVcGRh
dGVkOmluZm8uZ2V0KCldOworCisgICAgICAgIEVYUEVDVF9UUlVFKFtkZXN0aW5hdGlvbiBwZXJm
b3JtRHJhZ09wZXJhdGlvbjppbmZvLmdldCgpXSk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV1dOworICAgIFtbZGVzdGluYXRpb24gbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIHJldHVybiBkZXN0aW5hdGlvbi5nZXQoKTsK
K30KKworVEVTVChMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLCBEcm9wVVRGOFBsYWluVGV4dCkKK3sK
KyAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRX
aXRoVW5pcXVlTmFtZV07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbQCJJIGFtIGEgV2ViS2l0
LiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGZvclR5cGU6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHRdOworCisgICAgUmV0YWluUHRyPFdl
YlZpZXc+IHJlc3VsdGluZ1dlYlZpZXcgPSB3ZWJWaWV3QWZ0ZXJQZXJmb3JtaW5nRHJhZ09wZXJh
dGlvbihwYXN0ZWJvYXJkKTsKKyAgICBFWFBFQ1RfVFJVRShbW3Jlc3VsdGluZ1dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6QCJkb2N1bWVudC5ib2R5LnRleHRD
b250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJJIGFtIGEgV2ViS2l0LiJdKTsKK30KKworVEVTVChM
ZWdhY3lEcmFnQW5kRHJvcFRlc3RzLCBEcm9wSlBFRykKK3sKKyAgICBOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07CisgICAg
TlNJbWFnZSAqaWNvbiA9IGdldFRlc3RJbWFnZSgpOworICAgIE5TQml0bWFwSW1hZ2VSZXAgKmlt
YWdlUmVwID0gW05TQml0bWFwSW1hZ2VSZXAgaW1hZ2VSZXBXaXRoRGF0YTppY29uLlRJRkZSZXBy
ZXNlbnRhdGlvbl07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbaW1hZ2VSZXAgcmVwcmVzZW50
YXRpb25Vc2luZ1R5cGU6TlNKUEVHRmlsZVR5cGUgcHJvcGVydGllczpAeyBOU0ltYWdlQ29tcHJl
c3Npb25GYWN0b3I6IEAoMC45KSB9XSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVKUEVHXTsKKworICAgIFJldGFpblB0cjxXZWJWaWV3PiByZXN1bHRpbmdXZWJWaWV3ID0gd2Vi
Vmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24ocGFzdGVib2FyZCk7CisgICAgRVhQRUNU
X1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9t
U3RyaW5nOkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW1nJykudGFnTmFtZSA9PT0gJ0lNRyci
XSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvZnVsbC1wYWdlLWRyb3B6b25lLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9mdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDk0NTk4YTBiZGMxNDAxNDQ0ZWQ0MzFmZTE3NTMyMTFkNjUzNTNjNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9mdWxsLXBhZ2UtZHJvcHpvbmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08Ym9keSBzdHlsZT0id2lkdGg6IDEwMHZ3OyBoZWlnaHQ6IDEw
MHZoOyBtYXJnaW46IDA7IiBvbmRyYWdlbnRlcj0id2luZG93LmRyYWdFbnRlcmVkRm9yVGVzdGlu
ZyA9IHRydWU7IHJldHVybiBmYWxzZTsiPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCmluZGV4IGYzYjEyODg2NzVhYTM3NGVjYjFkMTNjZWZj
MzU3YTcwZDRjMTk2OTEuLjg0YzhiZTNmZDc5NDU0NDJlNDlmYzJiZjQ3YTEwNWU5NDBiYzM3MzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0
b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9y
LmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbXBvcnQgPFVJS2l0L05TSXRlbVByb3ZpZGVyK1VJS2l0
QWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKwogdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgRHJhZ0FuZERyb3BQaGFzZSkgewogICAgIERyYWdBbmREcm9wUGhhc2VD
YW5jZWxsZWQgPSAwLAogICAgIERyYWdBbmREcm9wUGhhc2VCZWdpbm5pbmcgPSAxLApAQCAtNDUs
OCArNDcsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEcmFnQW5kRHJvcFBoYXNlKSB7
CiAgICAgRHJhZ0FuZERyb3BQaGFzZVBlcmZvcm1pbmdEcm9wID0gNAogfTsKIAotI2lmIFBMQVRG
T1JNKElPUykKLQogdHlwZWRlZiBOU0RpY3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1ZSAqPiAq
UHJvZ3Jlc3NUb0NHUG9pbnRWYWx1ZU1hcDsKIAogQGludGVyZmFjZSBNb2NrRHJhZ0Ryb3BTZXNz
aW9uIDogTlNPYmplY3QgPFVJRHJhZ0Ryb3BTZXNzaW9uPiB7CkBAIC03NSwxOSArNzUsMjIgQEAg
dHlwZWRlZiBOU0RpY3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1ZSAqPiAqUHJvZ3Jlc3NUb0NH
UG9pbnRWYWx1ZU1hcDsKIAogQGludGVyZmFjZSBEcmFnQW5kRHJvcFNpbXVsYXRvciA6IE5TT2Jq
ZWN0PFdLVUlEZWxlZ2F0ZVByaXZhdGUsIF9XS0lucHV0RGVsZWdhdGU+CiAKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3OworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWU7CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dl
YlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbjsKIC8vIFRoZSBzdGFydCBsb2NhdGlv
biwgZW5kIGxvY2F0aW9uLCBhbmQgbG9jYXRpb25zIG9mIGFkZGl0aW9uYWwgaXRlbSByZXF1ZXN0
cyBhcmUgYWxsIGluIHdpbmRvdyBjb29yZGluYXRlcy4KIC0gKHZvaWQpcnVuRnJvbTooQ0dQb2lu
dClzdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uOwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PF9XS0F0dGFjaG1lbnQgKj4gKmluc2VydGVkQXR0YWNo
bWVudHM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8X1dLQXR0YWNo
bWVudCAqPiAqcmVtb3ZlZEF0dGFjaG1lbnRzOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBEcmFnQW5kRHJvcFBoYXNlIHBoYXNlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3OwogCiAjaWYgUExBVEZPUk0oSU9TKQogCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKIC0g
KHZvaWQpcnVuRnJvbTooQ0dQb2ludClzdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0
aW9uIGFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9uczooUHJvZ3Jlc3NUb0NHUG9pbnRWYWx1
ZU1hcClhZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM7CiAtICh2b2lkKXdhaXRGb3JJbnB1
dFNlc3Npb247CiAtICh2b2lkKWVuZERhdGFUcmFuc2ZlcjsKIAorQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBEcmFnQW5kRHJvcFBoYXNlIHBoYXNlOwogQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgYWxsb3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uOwogQHByb3BlcnR5IChub25h
dG9taWMpIEJPT0wgc2hvdWxkRW5zdXJlVUlBcHBsaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIHNob3VsZEFsbG93TW92ZU9wZXJhdGlvbjsKQEAgLTEwNiw2ICsxMDksMTcgQEAg
dHlwZWRlZiBOU0RpY3Rpb25hcnk8TlNOdW1iZXIgKiwgTlNWYWx1ZSAqPiAqUHJvZ3Jlc3NUb0NH
UG9pbnRWYWx1ZU1hcDsKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAorI2lmIFBMQVRGT1JN
KE1BQykKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBpZCA8TlNEcmFnZ2luZ0lu
Zm8+IGRyYWdnaW5nSW5mbzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNQb2lu
dCBpbml0aWFsRHJhZ0ltYWdlTG9jYXRpb25JblZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TRHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ09wZXJhdGlvbjsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TUGFzdGVib2FyZCAqZXh0ZXJuYWxEcmFnUGFzdGVib2Fy
ZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TSW1hZ2UgKmV4dGVybmFsRHJhZ0lt
YWdlOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIGRpc3BhdGNoX2Jsb2NrX3Qgd2lsbEVu
ZERyYWdnaW5nSGFuZGxlcjsKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogQGVuZAogCiAj
ZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggY2Y5OGRhYTIzNGMwOTg1N2E2
NWU1NmEyYjI4ZTJlZTA5MGE3ZTk0Ny4uMDUxZmEyOTJkYzdjYjA2M2YzMjJhOTQ3OWUxNzZkODc1
MjRlMGM2NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAg
LTcyLDEwICs3MiwxMiBAQAogI2lmIFBMQVRGT1JNKE1BQykKIEBpbnRlcmZhY2UgVGVzdFdLV2Vi
VmlldyAoTWFjT25seSkKIC8vIFNpbXVsYXRlcyBjbGlja2luZyB3aXRoIGEgcHJlc3N1cmUtc2Vu
c2l0aXZlIGRldmljZSwgaWYgcG9zc2libGUuCi0tICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5T
UG9pbnQpcG9pbnQgc2ltdWxhdGVQcmVzc3VyZTooQk9PTClzaW11bGF0ZVByZXNzdXJlOwotLSAo
dm9pZCltb3VzZVVwQXRQb2ludDooTlNQb2ludClwb2ludDsKLS0gKHZvaWQpbW91c2VNb3ZlVG9Q
b2ludDooTlNQb2ludClwb2ludCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdz
OwotLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClwb2ludCBudW1iZXJPZkNsaWNr
czooTlNVSW50ZWdlciludW1iZXJPZkNsaWNrczsKKy0gKHZvaWQpbW91c2VEb3duQXRQb2ludDoo
TlNQb2ludClwb2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVz
c3VyZTsKKy0gKHZvaWQpbW91c2VEcmFnVG9Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93Owor
LSAodm9pZCltb3VzZUVudGVyQXRQb2ludDooTlNQb2ludClwb2ludEluV2luZG93OworLSAodm9p
ZCltb3VzZVVwQXRQb2ludDooTlNQb2ludClwb2ludEluV2luZG93OworLSAodm9pZCltb3VzZU1v
dmVUb1BvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZp
ZXJGbGFncylmbGFnczsKKy0gKHZvaWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJ
bldpbmRvdyBudW1iZXJPZkNsaWNrczooTlNVSW50ZWdlciludW1iZXJPZkNsaWNrczsKIC0gKE5T
V2luZG93ICopaG9zdFdpbmRvdzsKIC0gKHZvaWQpdHlwZUNoYXJhY3RlcjooY2hhciljaGFyYWN0
ZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5k
ZXggMzc0MGQ1ODJmM2Y1MWViN2RkNzAxNjRiZGViM2U3MTFiZTU3ZjgwNS4uZDA5NmNmMDljNTVj
ZGYxYzYyNDQ2NjJkMzFhZGFiMTZiMjc4ZWM5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMzcyLDI2ICszNzIsNTIgQEAgTlNFdmVudE1hc2sgX19z
aW11bGF0ZWRfZm9yY2VDbGlja0Fzc29jaWF0ZWRFdmVudHNNYXNrKGlkIHNlbGYsIFNFTCBfY21k
KQogCiAjaWYgUExBVEZPUk0oTUFDKQogQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKE1h
Y09ubHkpCi0tICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgc2ltdWxhdGVQ
cmVzc3VyZTooQk9PTClzaW11bGF0ZVByZXNzdXJlCistICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6
KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOihCT09MKXNpbXVsYXRlUHJl
c3N1cmUKIHsKLSAgICBbX2hvc3RXaW5kb3cgX21vdXNlRG93bkF0UG9pbnQ6cG9pbnQgc2ltdWxh
dGVQcmVzc3VyZTpzaW11bGF0ZVByZXNzdXJlIGNsaWNrQ291bnQ6MV07CisgICAgW19ob3N0V2lu
ZG93IF9tb3VzZURvd25BdFBvaW50OnBvaW50SW5XaW5kb3cgc2ltdWxhdGVQcmVzc3VyZTpzaW11
bGF0ZVByZXNzdXJlIGNsaWNrQ291bnQ6MV07CiB9CiAKLS0gKHZvaWQpbW91c2VVcEF0UG9pbnQ6
KE5TUG9pbnQpcG9pbnQKKy0gKHZvaWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldp
bmRvdwogewotICAgIFtfaG9zdFdpbmRvdyBfbW91c2VVcEF0UG9pbnQ6cG9pbnQgY2xpY2tDb3Vu
dDoxXTsKKyAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBvaW50OnBvaW50SW5XaW5kb3cgY2xp
Y2tDb3VudDoxXTsKIH0KIAotLSAodm9pZCltb3VzZU1vdmVUb1BvaW50OihOU1BvaW50KXBvaW50
IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVyRmxhZ3MpZmxhZ3MKKy0gKHZvaWQpbW91c2VNb3Zl
VG9Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVy
RmxhZ3MpZmxhZ3MKIHsKLSAgICBbc2VsZiBtb3VzZU1vdmVkOltOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZU1vdXNlTW92ZWQgbG9jYXRpb246cG9pbnQgbW9kaWZpZXJGbGFn
czpmbGFncyB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpIHdpbmRvd051bWJlcjpbX2hv
c3RXaW5kb3cgd2luZG93TnVtYmVyXSBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50
Q29udGV4dF0gZXZlbnROdW1iZXI6KytnRXZlbnROdW1iZXIgY2xpY2tDb3VudDowIHByZXNzdXJl
OjBdXTsKKyAgICBbc2VsZiBtb3VzZU1vdmVkOltzZWxmIF9tb3VzZUV2ZW50V2l0aFR5cGU6TlNF
dmVudFR5cGVNb3VzZU1vdmVkIGF0TG9jYXRpb246cG9pbnRJbldpbmRvdyBmbGFnczpmbGFncyB0
aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpIGNsaWNrQ291bnQ6MF1dOwogfQogCi0tICh2
b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1BvaW50KXBvaW50IG51bWJlck9mQ2xpY2tzOihOU1VJ
bnRlZ2VyKW51bWJlck9mQ2xpY2tzCistICh2b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1BvaW50
KXBvaW50SW5XaW5kb3cgbnVtYmVyT2ZDbGlja3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3MK
IHsKICAgICBmb3IgKE5TVUludGVnZXIgY2xpY2tDb3VudCA9IDE7IGNsaWNrQ291bnQgPD0gbnVt
YmVyT2ZDbGlja3M7ICsrY2xpY2tDb3VudCkgewotICAgICAgICBbX2hvc3RXaW5kb3cgX21vdXNl
RG93bkF0UG9pbnQ6cG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOTyBjbGlja0NvdW50OmNsaWNrQ291
bnRdOwotICAgICAgICBbX2hvc3RXaW5kb3cgX21vdXNlVXBBdFBvaW50OnBvaW50IGNsaWNrQ291
bnQ6Y2xpY2tDb3VudF07CisgICAgICAgIFtfaG9zdFdpbmRvdyBfbW91c2VEb3duQXRQb2ludDpw
b2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6Tk8gY2xpY2tDb3VudDpjbGlja0NvdW50XTsK
KyAgICAgICAgW19ob3N0V2luZG93IF9tb3VzZVVwQXRQb2ludDpwb2ludEluV2luZG93IGNsaWNr
Q291bnQ6Y2xpY2tDb3VudF07CisgICAgfQorfQorCistICh2b2lkKW1vdXNlRW50ZXJBdFBvaW50
OihOU1BvaW50KXBvaW50SW5XaW5kb3cKK3sKKyAgICBbc2VsZiBtb3VzZUVudGVyZWQ6W3NlbGYg
X21vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZU1vdXNlRW50ZXJlZCBhdExvY2F0aW9uOnBv
aW50SW5XaW5kb3ddXTsKK30KKworLSAodm9pZCltb3VzZURyYWdUb1BvaW50OihOU1BvaW50KXBv
aW50SW5XaW5kb3cKK3sKKyAgICBbc2VsZiBtb3VzZURyYWdnZWQ6W3NlbGYgX21vdXNlRXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQgYXRMb2NhdGlvbjpwb2ludEluV2lu
ZG93XV07Cit9CisKKy0gKE5TRXZlbnQgKilfbW91c2VFdmVudFdpdGhUeXBlOihOU0V2ZW50VHlw
ZSl0eXBlIGF0TG9jYXRpb246KE5TUG9pbnQpcG9pbnRJbldpbmRvdworeworICAgIHJldHVybiBb
c2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOnR5cGUgYXRMb2NhdGlvbjpwb2ludEluV2luZG93IGZs
YWdzOjAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSBjbGlja0NvdW50OjBdOworfQor
CistIChOU0V2ZW50ICopX21vdXNlRXZlbnRXaXRoVHlwZTooTlNFdmVudFR5cGUpdHlwZSBhdExv
Y2F0aW9uOihOU1BvaW50KWxvY2F0aW9uSW5XaW5kb3cgZmxhZ3M6KE5TRXZlbnRNb2RpZmllckZs
YWdzKWZsYWdzIHRpbWVzdGFtcDooTlNUaW1lSW50ZXJ2YWwpdGltZXN0YW1wIGNsaWNrQ291bnQ6
KE5TVUludGVnZXIpY2xpY2tDb3VudAoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
TlNFdmVudFR5cGVNb3VzZUVudGVyZWQ6CisgICAgY2FzZSBOU0V2ZW50VHlwZU1vdXNlRXhpdGVk
OgorICAgICAgICByZXR1cm4gW05TRXZlbnQgZW50ZXJFeGl0RXZlbnRXaXRoVHlwZTp0eXBlIGxv
Y2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczpmbGFncyB0aW1lc3RhbXA6dGlt
ZXN0YW1wIHdpbmRvd051bWJlcjpbX2hvc3RXaW5kb3cgd2luZG93TnVtYmVyXSBjb250ZXh0OltO
U0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZXZlbnROdW1iZXI6KytnRXZlbnROdW1i
ZXIgdHJhY2tpbmdOdW1iZXI6MSB1c2VyRGF0YTpuaWxdOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dHlwZSBsb2NhdGlvbjpsb2NhdGlv
bkluV2luZG93IG1vZGlmaWVyRmxhZ3M6ZmxhZ3MgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dO
dW1iZXI6W19ob3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpbTlNHcmFwaGljc0NvbnRl
eHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVtYmVyIGNsaWNrQ291bnQ6
Y2xpY2tDb3VudCBwcmVzc3VyZTowXTsKICAgICB9CiB9CiAKQEAgLTQwMCw3ICs0MjYsOCBAQCBO
U0V2ZW50TWFzayBfX3NpbXVsYXRlZF9mb3JjZUNsaWNrQXNzb2NpYXRlZEV2ZW50c01hc2soaWQg
c2VsZiwgU0VMIF9jbWQpCiAgICAgcmV0dXJuIF9ob3N0V2luZG93LmdldCgpOwogfQogCi0tICh2
b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyIHsKKy0gKHZvaWQpdHlwZUNoYXJhY3Rl
cjooY2hhciljaGFyYWN0ZXIKK3sKICAgICBOU1N0cmluZyAqY2hhcmFjdGVyQXNTdHJpbmcgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVjIiAsIGNoYXJhY3Rlcl07CiAgICAgTlNFdmVu
dFR5cGUga2V5RG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlS2V5RG93bjsKICAgICBOU0V2ZW50
VHlwZSBrZXlVcEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlS2V5VXA7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCmluZGV4IDQzZWVjZDk0
OTRkNTk2NGY1MDcxMTcwOWQ2MDJmMTNkNjg5NGNhYmUuLjllMWYyMWVlMWQ1M2JkZDQ2YzMzMzgx
MDIxMGVkMDcwZGYxMzJjOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCkBAIC0zMTgsNiArMzE4LDE5IEBAIHN0YXRpYyBOU0Fy
cmF5ICpkcmFnQW5kRHJvcEV2ZW50TmFtZXMoKQogICAgIFJldGFpblB0cjxVSURyb3BQcm9wb3Nh
bD4gX2N1cnJlbnREcm9wUHJvcG9zYWw7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdl
YlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2Vi
Vmlld0ZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246bmlsXTsKK30KKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KK3sKKyAgICBpZiAoY29uZmlndXJhdGlv
bikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2ViVmlldzpbW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0g
YXV0b3JlbGVhc2VdXTsKKworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZpZXc6W1tbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0gYXV0b3JlbGVhc2VdXTsKK30K
KwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZp
ZXcKIHsKICAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewpAQCAtNjIzLDYgKzYzNiwxMSBA
QCBzdGF0aWMgTlNBcnJheSAqZHJhZ0FuZERyb3BFdmVudE5hbWVzKCkKICAgICBbW193ZWJWaWV3
IGRyYWdJbnRlcmFjdGlvbkRlbGVnYXRlXSBkcmFnSW50ZXJhY3Rpb246W193ZWJWaWV3IGRyYWdJ
bnRlcmFjdGlvbl0gc2Vzc2lvbkRpZFRyYW5zZmVySXRlbXM6X2RyYWdTZXNzaW9uLmdldCgpXTsK
IH0KIAorLSAoVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gX3dlYlZpZXcu
Z2V0KCk7Cit9CisKICNwcmFnbWEgbWFyayAtIFdLVUlEZWxlZ2F0ZVByaXZhdGUKIAogLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25X
YXNIYW5kbGVkOihCT09MKWhhbmRsZWQgZm9yU2Vzc2lvbjooaWQpc2Vzc2lvbiBpdGVtUHJvdmlk
ZXJzOihOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbQppbmRleCA5
YTc5MThjYzQ4MzlhODc1N2JhZjYwYjg4ZjIzODYxYWQyMmQwYTVmLi5mNWE3YTFmYzU4MjZhNDE4
OTUzYTdlODBhZTY4NmFkMjg0ZDM0YTFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbQpAQCAtMjgsMzggKzI4LDE3MSBAQAogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxF
RAogCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdERyYWdnaW5n
SW5mby5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8Y21hdGg+CisjaW1w
b3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworQGNsYXNzIERyYWdBbmREcm9wVGVzdFdLV2ViVmll
dzsKKworQGludGVyZmFjZSBEcmFnQW5kRHJvcFNpbXVsYXRvciAoKQorLSAodm9pZClwZXJmb3Jt
RHJhZ0luV2ViVmlldzooRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3ICopd2ViVmlldyBhdExvY2F0
aW9uOihOU1BvaW50KXZpZXdMb2NhdGlvbiB3aXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBwYXN0
ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIHNvdXJjZTooaWQpc291cmNlOworQGVu
ZAorCitAaW50ZXJmYWNlIERyYWdBbmREcm9wVGVzdFdLV2ViVmlldyA6IFRlc3RXS1dlYlZpZXcK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIERyYWdBbmREcm9wVGVzdFdLV2ViVmlldyB7CisgICAg
V2Vha09iakNQdHI8RHJhZ0FuZERyb3BTaW11bGF0b3I+IF9kcmFnQW5kRHJvcFNpbXVsYXRvcjsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1
cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBzaW11bGF0b3I6
KERyYWdBbmREcm9wU2ltdWxhdG9yICopc2ltdWxhdG9yCit7CisgICAgaWYgKHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKQorICAg
ICAgICBfZHJhZ0FuZERyb3BTaW11bGF0b3IgPSBzaW11bGF0b3I7CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpZHJhZ0ltYWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpdmll
d0xvY2F0aW9uIG9mZnNldDooTlNTaXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKill
dmVudCBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VP
Ymogc2xpZGVCYWNrOihCT09MKXNsaWRlRmxhZworeworICAgIFtfZHJhZ0FuZERyb3BTaW11bGF0
b3IgcGVyZm9ybURyYWdJbldlYlZpZXc6c2VsZiBhdExvY2F0aW9uOnZpZXdMb2NhdGlvbiB3aXRo
SW1hZ2U6aW1hZ2UgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZU9ial07Cit9CisKKy0g
KHZvaWQpd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50cworeworICAgIF9fYmxvY2sgYm9vbCBkb25l
UHJvY2Vzc01vdXNlRXZlbnRzID0gZmFsc2U7CisgICAgW3NlbGYgX2RvQWZ0ZXJQcm9jZXNzaW5n
QWxsUGVuZGluZ01vdXNlRXZlbnRzOl57CisgICAgICAgIGRvbmVQcm9jZXNzTW91c2VFdmVudHMg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZVByb2Nl
c3NNb3VzZUV2ZW50cyk7Cit9CisKK0BlbmQKKworLy8gVGhpcyBleGNlZWRzIHRoZSBkZWZhdWx0
IGRyYWcgaHlzdGVyZXNpcyBvZiBhbGwgcG90ZW50aWFsIGRyYWcgdHlwZXMuCitjb25zdCBkb3Vi
bGUgaW5pdGlhbE1vdXNlRHJhZ0Rpc3RhbmNlID0gNDU7Citjb25zdCBkb3VibGUgZHJhZ1VwZGF0
ZVByb2dyZXNzSW5jcmVtZW50ID0gMC4wNTsKKworc3RhdGljIE5TSW1hZ2UgKmRlZmF1bHRFeHRl
cm5hbERyYWdJbWFnZSgpCit7CisgICAgcmV0dXJuIFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
Q29udGVudHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaWNv
biIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV0gYXV0b3JlbGVhc2VdOworfQogCiBAaW1wbGVtZW50YXRpb24gRHJhZ0FuZERyb3BT
aW11bGF0b3IgewotICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsKKyAgICBS
ZXRhaW5QdHI8RHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsKKyAgICBSZXRhaW5Q
dHI8VGVzdERyYWdnaW5nSW5mbz4gX2RyYWdnaW5nSW5mbzsKKyAgICBSZXRhaW5QdHI8TlNQYXN0
ZWJvYXJkPiBfZXh0ZXJuYWxEcmFnUGFzdGVib2FyZDsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4g
X2V4dGVybmFsRHJhZ0ltYWdlOworICAgIEJsb2NrUHRyPHZvaWQoKT4gX3dpbGxFbmREcmFnZ2lu
Z0hhbmRsZXI7CisgICAgTlNQb2ludCBfc3RhcnRMb2NhdGlvbkluV2luZG93OworICAgIE5TUG9p
bnQgX2VuZExvY2F0aW9uSW5XaW5kb3c7CisgICAgZG91YmxlIF9wcm9ncmVzczsKK30KKworQHN5
bnRoZXNpemUgY3VycmVudERyYWdPcGVyYXRpb249X2N1cnJlbnREcmFnT3BlcmF0aW9uOworQHN5
bnRoZXNpemUgaW5pdGlhbERyYWdJbWFnZUxvY2F0aW9uSW5WaWV3PV9pbml0aWFsRHJhZ0ltYWdl
TG9jYXRpb25JblZpZXc7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZToo
Q0dSZWN0KWZyYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2ViVmlld0ZyYW1lOmZy
YW1lIGNvbmZpZ3VyYXRpb246bmlsXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vi
VmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdl
YlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsK
LSAgICAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMo
W1tEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uID86IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXSBzaW11bGF0b3I6c2VsZl0pOwogICAgICAgICBbX3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW193ZWJWaWV3IF9zZXRJbnB1dERlbGVn
YXRlOnNlbGZdOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9j
CistIChOU1BvaW50KWZsaXBBYm91dFhBeGlzSW5Ib3N0V2luZG93OihOU1BvaW50KXBvaW50CiB7
Ci0gICAgaWYgKFtfd2ViVmlldyBVSURlbGVnYXRlXSA9PSBzZWxmKQotICAgICAgICBbX3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpuaWxdOworICAgIHJldHVybiB7IHBvaW50LngsIE5TSGVpZ2h0KFtb
X3dlYlZpZXcgaG9zdFdpbmRvd10gZnJhbWVdKSAtIHBvaW50LnkgfTsKK30KIAotICAgIGlmIChb
X3dlYlZpZXcgX2lucHV0RGVsZWdhdGVdID09IHNlbGYpCi0gICAgICAgIFtfd2ViVmlldyBfc2V0
SW5wdXREZWxlZ2F0ZTpuaWxdOworLSAoTlNQb2ludClsb2NhdGlvbkluVmlld0ZvckN1cnJlbnRQ
cm9ncmVzcworeworICAgIHJldHVybiB7CisgICAgICAgIF9zdGFydExvY2F0aW9uSW5XaW5kb3cu
eCArIChfZW5kTG9jYXRpb25JbldpbmRvdy54IC0gX3N0YXJ0TG9jYXRpb25JbldpbmRvdy54KSAq
IF9wcm9ncmVzcywKKyAgICAgICAgX3N0YXJ0TG9jYXRpb25JbldpbmRvdy55ICsgKF9lbmRMb2Nh
dGlvbkluV2luZG93LnkgLSBfc3RhcnRMb2NhdGlvbkluV2luZG93LnkpICogX3Byb2dyZXNzCisg
ICAgfTsKK30KIAotICAgIFtzdXBlciBkZWFsbG9jXTsKKy0gKGRvdWJsZSlpbml0aWFsUHJvZ3Jl
c3NGb3JNb3VzZURyYWcKK3sKKyAgICBkb3VibGUgdG90YWxEaXN0YW5jZSA9IHN0ZDo6c3FydChz
dGQ6OnBvdyhfc3RhcnRMb2NhdGlvbkluV2luZG93LnggLSBfZW5kTG9jYXRpb25JbldpbmRvdy54
LCAyKSArIHN0ZDo6cG93KF9zdGFydExvY2F0aW9uSW5XaW5kb3cueSAtIF9lbmRMb2NhdGlvbklu
V2luZG93LnksIDIpKTsKKyAgICByZXR1cm4gIXRvdGFsRGlzdGFuY2UgPyAxIDogc3RkOjptaW48
ZG91YmxlPigxLCBpbml0aWFsTW91c2VEcmFnRGlzdGFuY2UgLyB0b3RhbERpc3RhbmNlKTsKIH0K
IAotLSAodm9pZClydW5Gcm9tOihDR1BvaW50KXN0YXJ0TG9jYXRpb24gdG86KENHUG9pbnQpZW5k
TG9jYXRpb24KKy0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClmbGlwcGVkU3RhcnRMb2NhdGlvbiB0
bzooQ0dQb2ludClmbGlwcGVkRW5kTG9jYXRpb24KIHsKLSAgICAvLyBGSVhNRTogQWRkIGEgbWVj
aGFuaXNtIHRvIHNpbXVsYXRlIGRyYWdnaW5nIG9uIG1hY09TLgotICAgIFVOVVNFRF9QQVJBTShz
dGFydExvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZW5kTG9jYXRpb24pOworICAgIF9zdGFy
dExvY2F0aW9uSW5XaW5kb3cgPSBbc2VsZiBmbGlwQWJvdXRYQXhpc0luSG9zdFdpbmRvdzpmbGlw
cGVkU3RhcnRMb2NhdGlvbl07CisgICAgX2VuZExvY2F0aW9uSW5XaW5kb3cgPSBbc2VsZiBmbGlw
QWJvdXRYQXhpc0luSG9zdFdpbmRvdzpmbGlwcGVkRW5kTG9jYXRpb25dOworICAgIF9jdXJyZW50
RHJhZ09wZXJhdGlvbiA9IE5TRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgX2RyYWdnaW5nSW5mbyA9
IG5pbDsKKyAgICBfcHJvZ3Jlc3MgPSAwOworCisgICAgaWYgKE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCA9IHNlbGYuZXh0ZXJuYWxEcmFnUGFzdGVib2FyZCkgeworICAgICAgICBOU1BvaW50IHN0
YXJ0TG9jYXRpb25JblZpZXcgPSBbX3dlYlZpZXcgY29udmVydFBvaW50Ol9zdGFydExvY2F0aW9u
SW5XaW5kb3cgZnJvbVZpZXc6bmlsXTsKKyAgICAgICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2Vs
Zi5leHRlcm5hbERyYWdJbWFnZSA/OiBkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKTsKKyAgICAg
ICAgW3NlbGYgcGVyZm9ybURyYWdJbldlYlZpZXc6X3dlYlZpZXcuZ2V0KCkgYXRMb2NhdGlvbjpz
dGFydExvY2F0aW9uSW5WaWV3IHdpdGhJbWFnZTpkcmFnSW1hZ2UgcGFzdGVib2FyZDpwYXN0ZWJv
YXJkIHNvdXJjZTpuaWxdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3Byb2dyZXNz
ID0gW3NlbGYgaW5pdGlhbFByb2dyZXNzRm9yTW91c2VEcmFnXTsKKyAgICBpZiAoX3Byb2dyZXNz
ID09IDEpIHsKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOkAiRHJhZ0FuZERyb3BTaW11bGF0
b3IiIGZvcm1hdDpAIkRyYWcgc3RhcnQgKCVAKSBhbmQgZHJhZyBlbmQgKCVAKSBsb2NhdGlvbnMg
YXJlIHRvbyBjbG9zZSEiLCBOU1N0cmluZ0Zyb21Qb2ludChmbGlwcGVkU3RhcnRMb2NhdGlvbiks
IE5TU3RyaW5nRnJvbVBvaW50KGZsaXBwZWRFbmRMb2NhdGlvbildOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgW193ZWJWaWV3IG1vdXNlRW50ZXJBdFBvaW50Ol9zdGFydExvY2F0aW9u
SW5XaW5kb3ddOworICAgIFtfd2ViVmlldyBtb3VzZU1vdmVUb1BvaW50Ol9zdGFydExvY2F0aW9u
SW5XaW5kb3cgd2l0aEZsYWdzOjBdOworICAgIFtfd2ViVmlldyBtb3VzZURvd25BdFBvaW50Ol9z
dGFydExvY2F0aW9uSW5XaW5kb3cgc2ltdWxhdGVQcmVzc3VyZTpOT107CisgICAgW193ZWJWaWV3
IG1vdXNlRHJhZ1RvUG9pbnQ6W3NlbGYgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3Nd
XTsKKyAgICBbX3dlYlZpZXcgd2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c107CisKKyAgICBbX3dl
YlZpZXcgbW91c2VVcEF0UG9pbnQ6X2VuZExvY2F0aW9uSW5XaW5kb3ddOworICAgIFtfd2ViVmll
dyB3YWl0Rm9yUGVuZGluZ01vdXNlRXZlbnRzXTsKK30KKworLSAodm9pZClwZXJmb3JtRHJhZ0lu
V2ViVmlldzooRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3ICopd2ViVmlldyBhdExvY2F0aW9uOihO
U1BvaW50KXZpZXdMb2NhdGlvbiB3aXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBwYXN0ZWJvYXJk
OihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIHNvdXJjZTooaWQpc291cmNlCit7CisgICAgX2lu
aXRpYWxEcmFnSW1hZ2VMb2NhdGlvbkluVmlldyA9IHZpZXdMb2NhdGlvbjsKKyAgICBfZHJhZ2dp
bmdJbmZvID0gYWRvcHROUyhbW1Rlc3REcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRdKTsKKyAgICBb
X2RyYWdnaW5nSW5mbyBzZXREcmFnZ2VkSW1hZ2U6aW1hZ2VdOworICAgIFtfZHJhZ2dpbmdJbmZv
IHNldERyYWdnaW5nUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKKyAgICBbX2RyYWdnaW5nSW5mbyBz
ZXREcmFnZ2luZ1NvdXJjZTpzb3VyY2VdOworICAgIFtfZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5n
TG9jYXRpb246W3NlbGYgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdXTsKKyAgICBb
X2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s6TlNEcmFnT3BlcmF0
aW9uRXZlcnldOworICAgIFtfZHJhZ2dpbmdJbmZvIHNldE51bWJlck9mVmFsaWRJdGVtc0ZvckRy
b3A6cGFzdGVib2FyZC5wYXN0ZWJvYXJkSXRlbXMuY291bnRdOworCisgICAgX2N1cnJlbnREcmFn
T3BlcmF0aW9uID0gW193ZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpfZHJhZ2dpbmdJbmZvLmdldCgp
XTsKKyAgICBbX3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAg
d2hpbGUgKF9wcm9ncmVzcyAhPSAxKSB7CisgICAgICAgIF9wcm9ncmVzcyA9IHN0ZDo6bWluPGRv
dWJsZT4oMSwgX3Byb2dyZXNzICsgZHJhZ1VwZGF0ZVByb2dyZXNzSW5jcmVtZW50KTsKKyAgICAg
ICAgW19kcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdMb2NhdGlvbjpbc2VsZiBsb2NhdGlvbkluVmll
d0ZvckN1cnJlbnRQcm9ncmVzc11dOworICAgICAgICBfY3VycmVudERyYWdPcGVyYXRpb24gPSBb
X3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOl9kcmFnZ2luZ0luZm8uZ2V0KCldOworICAgICAgICBb
X3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIH0KKworICAgIFtf
ZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nTG9jYXRpb246X2VuZExvY2F0aW9uSW5XaW5kb3ddOwor
CisgICAgaWYgKF93aWxsRW5kRHJhZ2dpbmdIYW5kbGVyKQorICAgICAgICBfd2lsbEVuZERyYWdn
aW5nSGFuZGxlcigpOworCisgICAgaWYgKF9jdXJyZW50RHJhZ09wZXJhdGlvbiAhPSBOU0RyYWdP
cGVyYXRpb25Ob25lICYmIFtfd2ViVmlldyBwcmVwYXJlRm9yRHJhZ09wZXJhdGlvbjpfZHJhZ2dp
bmdJbmZvLmdldCgpXSkKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1EcmFnT3BlcmF0aW9uOl9k
cmFnZ2luZ0luZm8uZ2V0KCldOworICAgIGVsc2UgaWYgKF9jdXJyZW50RHJhZ09wZXJhdGlvbiA9
PSBOU0RyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBbX3dlYlZpZXcgZHJhZ2dpbmdFeGl0ZWQ6
X2RyYWdnaW5nSW5mby5nZXQoKV07CisgICAgW193ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKKworICAgIGlmICghc2VsZi5leHRlcm5hbERyYWdQYXN0ZWJvYXJkKSB7Cisg
ICAgICAgIFtfd2ViVmlldyBkcmFnZ2VkSW1hZ2U6W19kcmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdl
XSBlbmRlZEF0Ol9lbmRMb2NhdGlvbkluV2luZG93IG9wZXJhdGlvbjpfY3VycmVudERyYWdPcGVy
YXRpb25dOworICAgICAgICBbX3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVd
OworICAgIH0KIH0KIAogLSAoTlNBcnJheTxfV0tBdHRhY2htZW50ICo+ICopaW5zZXJ0ZWRBdHRh
Y2htZW50cwpAQCAtNzIsOSArMjA1LDQ0IEBACiAgICAgcmV0dXJuIEBbIF07CiB9CiAKLS0gKERy
YWdBbmREcm9wUGhhc2UpcGhhc2UKKy0gKFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAg
cmV0dXJuIF93ZWJWaWV3LmdldCgpOworfQorCistICh2b2lkKXNldEV4dGVybmFsRHJhZ1Bhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKWV4dGVybmFsRHJhZ1Bhc3RlYm9hcmQKK3sKKyAgICBfZXh0
ZXJuYWxEcmFnUGFzdGVib2FyZCA9IGV4dGVybmFsRHJhZ1Bhc3RlYm9hcmQ7Cit9CisKKy0gKE5T
UGFzdGVib2FyZCAqKWV4dGVybmFsRHJhZ1Bhc3RlYm9hcmQKK3sKKyAgICByZXR1cm4gX2V4dGVy
bmFsRHJhZ1Bhc3RlYm9hcmQuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RXh0ZXJuYWxEcmFnSW1h
Z2U6KE5TSW1hZ2UgKilleHRlcm5hbERyYWdJbWFnZQoreworICAgIF9leHRlcm5hbERyYWdJbWFn
ZSA9IGV4dGVybmFsRHJhZ0ltYWdlOworfQorCistIChOU0ltYWdlICopZXh0ZXJuYWxEcmFnSW1h
Z2UKK3sKKyAgICByZXR1cm4gX2V4dGVybmFsRHJhZ0ltYWdlLmdldCgpOworfQorCistIChpZCA8
TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbworeworICAgIHJldHVybiBfZHJhZ2dpbmdJbmZv
LmdldCgpOworfQorCistIChkaXNwYXRjaF9ibG9ja190KXdpbGxFbmREcmFnZ2luZ0hhbmRsZXIK
K3sKKyAgICByZXR1cm4gX3dpbGxFbmREcmFnZ2luZ0hhbmRsZXIuZ2V0KCk7Cit9CisKKy0gKHZv
aWQpc2V0V2lsbEVuZERyYWdnaW5nSGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCl3aWxsRW5kRHJh
Z2dpbmdIYW5kbGVyCiB7Ci0gICAgcmV0dXJuIERyYWdBbmREcm9wUGhhc2VDYW5jZWxsZWQ7Cisg
ICAgX3dpbGxFbmREcmFnZ2luZ0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIod2lsbEVuZERyYWdnaW5n
SGFuZGxlcik7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFj
L1Rlc3REcmFnZ2luZ0luZm8uaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3REcmFnZ2lu
Z0luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ODk3MzkxOWIxMTUxYTEyYWI1NjA1MzdmOTEzMzllNzkyZGFh
Y2FjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdERyYWdn
aW5nSW5mby5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJM
RUQKKworI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4KKworQGludGVyZmFjZSBUZXN0RHJh
Z2dpbmdJbmZvIDogTlNPYmplY3QgPE5TRHJhZ2dpbmdJbmZvPgorCitAcHJvcGVydHkgKG5vbmF0
b21pYykgTlNQb2ludCBkcmFnZ2luZ0xvY2F0aW9uOworQHByb3BlcnR5IChub25hdG9taWMpIE5T
UG9pbnQgZHJhZ2dlZEltYWdlTG9jYXRpb247CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNJbnRl
Z2VyIGRyYWdnaW5nU2VxdWVuY2VOdW1iZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNEcmFn
T3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBzdHJvbmcpIE5TUGFzdGVib2FyZCAqZHJhZ2dpbmdQYXN0ZWJvYXJkOworQHByb3BlcnR5
IChub25hdG9taWMsIHN0cm9uZykgTlNJbWFnZSAqZHJhZ2dlZEltYWdlOworQHByb3BlcnR5IChu
b25hdG9taWMsIHdlYWspIGlkIGRyYWdnaW5nU291cmNlOworCitAZW5kCisKKyNlbmRpZiAvLyBF
TkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0RHJhZ2dpbmdJbmZvLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdERyYWdnaW5nSW5mby5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZTIxMWRkNDQwNzQ1NWI5NTQyMTQ3ODZhMjAzYzg4NDcwYWY0ZWY1Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdERyYWdnaW5nSW5mby5tbQpAQCAtMCwwICsx
LDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdERy
YWdnaW5nSW5mby5oIgorCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFD
KSAmJiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworQGlt
cGxlbWVudGF0aW9uIFRlc3REcmFnZ2luZ0luZm8geworICAgIFdlYWtPYmpDUHRyPGlkPiBfc291
cmNlOworICAgIFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+IF9wYXN0ZWJvYXJkOworICAgIFJldGFp
blB0cjxOU0ltYWdlPiBfZHJhZ2dlZEltYWdlOworfQorCitAc3ludGhlc2l6ZSBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2s9X2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKK0BzeW50aGVz
aXplIGRyYWdnaW5nTG9jYXRpb249X2RyYWdnaW5nTG9jYXRpb247CitAc3ludGhlc2l6ZSBkcmFn
Z2luZ0Zvcm1hdGlvbj1fZHJhZ2dpbmdGb3JtYXRpb247CitAc3ludGhlc2l6ZSBudW1iZXJPZlZh
bGlkSXRlbXNGb3JEcm9wPV9udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOworCistIChOU1Bhc3Rl
Ym9hcmQgKilkcmFnZ2luZ1Bhc3RlYm9hcmQKK3sKKyAgICByZXR1cm4gX3Bhc3RlYm9hcmQuZ2V0
KCk7Cit9CisKKy0gKHZvaWQpc2V0RHJhZ2dpbmdQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilk
cmFnZ2luZ1Bhc3RlYm9hcmQKK3sKKyAgICBfcGFzdGVib2FyZCA9IGRyYWdnaW5nUGFzdGVib2Fy
ZDsKK30KKworLSAoaWQpZHJhZ2dpbmdTb3VyY2UKK3sKKyAgICByZXR1cm4gX3NvdXJjZS5nZXQo
KS5nZXQoKTsKK30KKworLSAodm9pZClzZXREcmFnZ2luZ1NvdXJjZTooaWQpZHJhZ2dpbmdTb3Vy
Y2UKK3sKKyAgICBfc291cmNlID0gZHJhZ2dpbmdTb3VyY2U7Cit9CisKKy0gKHZvaWQpZW51bWVy
YXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOihOU0RyYWdnaW5nSXRlbUVudW1lcmF0aW9uT3B0
aW9ucyllbnVtT3B0cyBmb3JWaWV3OihOU1ZpZXcgKil2aWV3IGNsYXNzZXM6KE5TQXJyYXk8Q2xh
c3M+ICopY2xhc3NBcnJheSBzZWFyY2hPcHRpb25zOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopc2VhcmNoT3B0aW9ucyB1c2luZ0Jsb2NrOih2b2lkICheKShOU0RyYWdnaW5nSXRlbSAq
LCBOU0ludGVnZXIsIEJPT0wgKikpYmxvY2sKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gdGVzdCBmaWxlIHByb21pc2UgZHJvcCBoYW5kbGluZy4KK30KKworLy8gVGhlIGZvbGxv
d2luZyBtZXRob2RzIGFyZSBub3QgY3VycmVudGx5IHVzZWQgYnkgV2ViS2l0LgorCitAc3ludGhl
c2l6ZSBkcmFnZ2VkSW1hZ2VMb2NhdGlvbj1fZHJhZ2dlZEltYWdlTG9jYXRpb247CitAc3ludGhl
c2l6ZSBkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyPV9kcmFnZ2luZ1NlcXVlbmNlTnVtYmVyOworQHN5
bnRoZXNpemUgYW5pbWF0ZXNUb0Rlc3RpbmF0aW9uPV9hbmltYXRlc1RvRGVzdGluYXRpb247CitA
c3ludGhlc2l6ZSBzcHJpbmdMb2FkaW5nSGlnaGxpZ2h0PV9zcHJpbmdMb2FkaW5nSGlnaGxpZ2h0
OworCistIChOU1dpbmRvdyAqKWRyYWdnaW5nRGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICByZXR1
cm4gbmlsOworfQorCistIChOU0ltYWdlICopZHJhZ2dlZEltYWdlCit7CisgICAgcmV0dXJuIF9k
cmFnZ2VkSW1hZ2UuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RHJhZ2dlZEltYWdlOihOU0ltYWdl
ICopZHJhZ2dlZEltYWdlCit7CisgICAgX2RyYWdnZWRJbWFnZSA9IGRyYWdnZWRJbWFnZTsKK30K
KworLSAodm9pZClzbGlkZURyYWdnZWRJbWFnZVRvOihOU1BvaW50KXNjcmVlblBvaW50Cit7Cit9
CisKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKiluYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRB
dERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlvbgoreworICAgIHJldHVybiBAWyBd
OworfQorCistICh2b2lkKXJlc2V0U3ByaW5nTG9hZGluZworeworfQorCitAZW5kCisKKyNlbmRp
ZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFC
TEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>