<?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>198301</bug_id>
          
          <creation_ts>2019-05-28 11:15:51 -0700</creation_ts>
          <short_desc>IsoHeaps don&apos;t notice uncommitted VA becoming the first eligible.</short_desc>
          <delta_ts>2019-05-30 16:07:35 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1539665</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-28 11:15:51 -0700</bug_when>
    <thetext>m_firstEligible doesn&apos;t get set backwards if a page becomes decommitted. So it&apos;s possible to enter a pathological case where decommitted memory never gets reused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539666</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-28 11:16:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/51186335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540398</commentid>
    <comment_count>2</comment_count>
      <attachid>370962</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-30 11:44:57 -0700</bug_when>
    <thetext>Created attachment 370962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540399</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-30 11:47:34 -0700</bug_when>
    <thetext>Attachment 370962 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:112:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:144:  Consider using CHECK_GE instead of CHECK(a &gt;= b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:159:  Consider using CHECK_GE instead of CHECK(a &gt;= b)  [readability/check] [2]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540400</commentid>
    <comment_count>4</comment_count>
      <attachid>370962</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-30 11:51:33 -0700</bug_when>
    <thetext>Comment on attachment 370962
Patch

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

Looks nice. I think this patch needs IsoHeapImpl change too.

&gt; Source/bmalloc/bmalloc/IsoDirectoryInlines.h:126
&gt; +    m_firstEligibleOrDecommitted = std::min(m_firstEligibleOrDecommitted, index);

We need to do the same thing for IsoHeapImpl&apos;s m_isInlineDirectoryEligible and m_firstEligibleDirectory :)

&gt; Source/bmalloc/bmalloc/ProcessCheck.mm:50
&gt; +        || [processName hasPrefix:@&quot;Test&quot;];

Lol, nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540409</commentid>
    <comment_count>5</comment_count>
      <attachid>370963</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-30 12:11:58 -0700</bug_when>
    <thetext>Created attachment 370963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540411</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-30 12:14:43 -0700</bug_when>
    <thetext>Attachment 370963 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:112:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:144:  Consider using CHECK_GE instead of CHECK(a &gt;= b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:159:  Consider using CHECK_GE instead of CHECK(a &gt;= b)  [readability/check] [2]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540412</commentid>
    <comment_count>7</comment_count>
      <attachid>370963</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-30 12:20:17 -0700</bug_when>
    <thetext>Comment on attachment 370963
Patch

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

r=me

&gt; Source/bmalloc/bmalloc/IsoDirectoryInlines.h:51
&gt; +    BASSERT((m_eligible | ~m_committed).findBit(0, true) == pageIndex);

Nice!

&gt; Source/bmalloc/bmalloc/IsoHeapImpl.h:84
&gt; +    void didBecomeEligibleOrDecommited(IsoDirectory&lt;Config, numPagesInInlineDirectory&gt;*);
&gt; +    void didBecomeEligibleOrDecommited(IsoDirectory&lt;Config, IsoDirectoryPage&lt;Config&gt;::numPages&gt;*);

This is nice and cleaner.

&gt; Source/bmalloc/bmalloc/IsoHeapImplInlines.h:202
&gt; +

Let&apos;s drop this blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540432</commentid>
    <comment_count>8</comment_count>
      <attachid>370969</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-30 13:15:10 -0700</bug_when>
    <thetext>Created attachment 370969
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540452</commentid>
    <comment_count>9</comment_count>
      <attachid>370969</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-30 13:45:55 -0700</bug_when>
    <thetext>Comment on attachment 370969
Patch for landing

Rejecting attachment 370969 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
ssing-prototypes -Wunreachable-code -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DNDEBUG -DENABLE_3D_TRANSFORMS -DENABLE_APPLE_PAY -DENABLE_APPLE_PAY_SESSION_V3 -DENABLE_APPLICATION_MANIFEST -DENABLE_ATTACHMENT_ELEMENT -DENABLE_AVF_CAPTIONS -DENABLE_CACHE_PARTITIONING -DENABLE_CHANNEL_MESSAGING -DENABLE_CONTENT_FILTERING -DENABLE_CSS_BOX_DECORATION_BREAK -DENABLE_CSS_COMPOSITING -DENABLE_CSS_PAINTING_API -DENABLE_CSS_SCROLL_SNAP -DENABLE_CSS_SELECTORS_LEVEL4 -DENABLE_CSS_TRAILING_WORD -DENABLE_CSS_TYPED_OM -DENABLE_CURSOR_VISIBILITY -DENABLE_DARK_MODE_CSS -DENABLE_DASHBOARD_SUPPORT -DENABLE_DATACUE_VALUE -DENABLE_DATALIST_ELEMENT -DENABLE_EXPERIMENTAL_FEATURES -DENABLE_FILTERS_LEVEL_2 -DENABLE_FTL_JIT -DENABLE_FULLSCREEN_API -DENABLE_GAMEPAD -DENABLE_GEOLOCATION -DENABLE_ICONDATABASE -DENABLE_INDEXED_DATABASE -DENABLE_INDEXED_DATABASE_IN_WORKERS -DENABLE_INPUT_TYPE_COLOR -DENABLE_INSPECTOR_ALTERNATE_DISPATCHERS -DENABLE_INTERSECTION_OBSERVER -DENABLE_INTL -DENABLE_KEYBOARD_CODE_ATTRIBUTE -DENABLE_KEYBOARD_KEY_ATTRIBUTE -DENABLE_LAYOUT_FORMATTING_CONTEXT -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER -DENABLE_LEGACY_ENCRYPTED_MEDIA -DENABLE_MATHML -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_SOURCE -DENABLE_MEDIA_STREAM -DENABLE_MEMORY_SAMPLER -DENABLE_METER_ELEMENT -DENABLE_MOUSE_CURSOR_SCALE -DENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION -DENABLE_NOTIFICATIONS -DENABLE_PAYMENT_REQUEST -DENABLE_PDFKIT_PLUGIN -DENABLE_POINTER_EVENTS -DENABLE_POINTER_LOCK -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESIZE_OBSERVER -DENABLE_RESOURCE_LOAD_STATISTICS -DENABLE_RESOURCE_USAGE -DENABLE_RUBBER_BANDING -DENABLE_SANDBOX_EXTENSIONS -DENABLE_SERVER_PRECONNECT -DENABLE_SERVICE_CONTROLS -DENABLE_SERVICE_WORKER -DENABLE_SHAREABLE_RESOURCE -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USERSELECT_ALL -DENABLE_USER_MESSAGE_HANDLERS -DENABLE_VARIATION_FONTS -DENABLE_VIDEO -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_VIDEO_USES_ELEMENT_FULLSCREEN -DENABLE_WEBDRIVER_MOUSE_INTERACTIONS -DENABLE_WEBDRIVER_KEYBOARD_INTERACTIONS -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WEB_AUDIO -DENABLE_WEB_AUTHN -DENABLE_WEB_CRYPTO -DENABLE_WEB_PROCESS_SANDBOX -DENABLE_WEB_RTC -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -DENABLE_DASHBOARD_SUPPORT -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fasm-blocks -fstrict-aliasing -Wno-deprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.13 -g -fvisibility=hidden -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -I/Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWTFLibrary.build/TestWTF.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/WebCore.framework/PrivateHeaders/ForwardingHeaders -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/WebCoreTestSupport -I/Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWTFLibrary.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWTFLibrary.build/DerivedSources -Wall -W -Wno-unused-parameter -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release --system-header-prefix=WebKit/ -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -ftemplate-depth=256 -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWTFLibrary.build/Objects-normal/x86_64/Markable.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWTFLibrary.build/Objects-normal/x86_64/Markable.dia -c /Volumes/Data/EWS/WebKit/Tools/TestWebKitAPI/Tests/WTF/Markable.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWTFLibrary.build/Objects-normal/x86_64/Markable.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/TestWebKitAPI.build/Release/TestWTFLibrary.build/Objects-normal/x86_64/IsoHeap.o Tests/WTF/bmalloc/IsoHeap.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: https://webkit-queues.webkit.org/results/12331233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540479</commentid>
    <comment_count>10</comment_count>
      <attachid>370984</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-30 15:25:04 -0700</bug_when>
    <thetext>Created attachment 370984
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540496</commentid>
    <comment_count>11</comment_count>
      <attachid>370984</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-30 16:07:33 -0700</bug_when>
    <thetext>Comment on attachment 370984
Patch for landing

Clearing flags on attachment: 370984

Committed r245908: &lt;https://trac.webkit.org/changeset/245908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540497</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-30 16:07:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370962</attachid>
            <date>2019-05-30 11:44:57 -0700</date>
            <delta_ts>2019-05-30 12:11:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198301-20190530114456.patch</filename>
            <type>text/plain</type>
            <size>43974</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZGRmZDgwNjdiOTYwY2Yw
ZWFmNmMyMDBiOWExM2VlMGM4NWIwOGFhMS4uYzZjNDBlZDg0N2RiOGQ5Y2FkODcxOTIyODZmYThm
OWQxOWRmOWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA1LTMwICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzb0hlYXBzIGRv
bid0IG5vdGljZSB1bmNvbW1pdHRlZCBWQSBiZWNvbWluZyB0aGUgZmlyc3QgZWxpZ2libGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJc29EaXJlY3Rv
cnkgaGFzIGEgZmlyc3RFbGlnaWJsZSBtZW1iZXIgdGhhdCBpcyB1c2VkIGFzIGFuCisgICAgICAg
IG9wdGltaXphdGlvbiB0byBoZWxwIGZpbmQgdGhlIGZpcnN0IGZpdC4gSG93ZXZlciBpZiB0aGUg
c2NhdmVuZ2VyCisgICAgICAgIGRlY29tbWl0dGVkIGEgcGFnZSBiZWZvcmUgZmlyc3RFbGlnaWJs
ZSB0aGVuIHdlIHdvdWxkbid0IG1vdmUKKyAgICAgICAgZmlyc3RFbGlnaWJsZS4gVGh1cywgaWYg
bm8gc3BhY2UgaXMgZXZlciBmcmVlZCBiZWxvdyBmaXJzdEVsaWdpYmxlCisgICAgICAgIHdlIHdp
bGwgbmV2ZXIgcmV1c2VkIHRoZSBkZWNvbW1pdHRlZCBtZW1vcnkgKGUuZy4gaWYgdGhlIFZBIHBh
Z2UKKyAgICAgICAgaXMgZGVjb21taXR0ZWQpLiBUaGUgZml4IGlzIHRvIG1ha2UgSXNvRGlyZWN0
b3J5OjpkaWREZWNvbW1pdCBtb3ZlCisgICAgICAgIHRoZSBmaXJzdEVsaWdpYmxlIHBhZ2UgYmFj
ayBpZiB0aGUgZGVjb21taXR0ZWQgcGFnZSBpcyBzbWFsbGVyCisgICAgICAgIHRoYW4gdGhlIGN1
cnJlbnQgZmlyc3RFbGlnaWJsZS4gQXMgc3VjaCwgdGhpcyBwYXRjaCByZW5hbWVzCisgICAgICAg
IGZpcnN0RWxpZ2libGUgdG8gZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQuCisKKyAgICAgICAg
QWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIGdpZ2FjYWdlRW5hYmxlZEZvclByb2Nlc3MgdG8gY2hl
Y2sgaWYgdGhlCisgICAgICAgIHByb2Nlc3Mgc3RhcnRzIHdpdGggVGVzdCByYXRoZXIgdGhhbiBq
dXN0IHRlc3QgYXMgVGVzdFdURiBkb2VzLgorCisgICAgICAgIExhc3RseSwgdW5iZWtub3duc3Qg
dG8gbWUgSXNvSGVhcHMgYXJlIGRlcGVuZGVudCBvbiBnaWdhY2FnZSwgc28KKyAgICAgICAgYnkg
cmVtb3ZpbmcgZ2lnYWNhZ2UgZnJvbSBhcm02NCBJIGFjY2lkZW50YWxseSBkaXNhYmxlZAorICAg
ICAgICBJc29IZWFwcy4uLgorCisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvSXNvRGlyZWN0b3J5Lmg6CisgICAgICAgICogYm1h
bGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1Q
YWdlcz46OnRha2VGaXJzdEVsaWdpYmxlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBh
Z2VzPjo6ZGlkQmVjb21lKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6ZGlk
RGVjb21taXQpOgorICAgICAgICAqIGJtYWxsb2MvUHJvY2Vzc0NoZWNrLm1tOgorICAgICAgICAo
Ym1hbGxvYzo6Z2lnYWNhZ2VFbmFibGVkRm9yUHJvY2Vzcyk6CisKIDIwMTktMDUtMjMgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSB0
YXJnZXQgb3JpZW50ZWQgZGVzaWduIGZvciBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTJmODVjZjk3YzIwZjFiNzli
ODExZjFjZjkwYWI0ZGJlMzk0ODYxZS4uZjc0NzVmYWI1ZTI0MWNkODMzYzA5NzJhNjliMzVhMzhh
MTgyZDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzMsOCArMzMsNiBAQAogCQkwRjVCRjE3MzFGMjNDNTcxMDAyOUQ5MUQg
LyogQkV4cG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1QkYxNzIxRjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc0QjkzRTFGODk3MTNFMDBCOTM1
RDMgLyogQ3J5cHRvUmFuZG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjc0QjkzQzFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NEI5M0Yx
Rjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc0QjkzRDFGODk3MTNFMDBCOTM1RDMgLyogQ3J5
cHRvUmFuZG9tLmNwcCAqLzsgfTsKLQkJMEY3RUI3RjIxRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3Ri
bWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGN0VCN0YxMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYy5jcHAgKi87IH07Ci0JCTBG
N0VCN0ZBMUY5NTQxNEMwMEYxQUJDQiAvKiBsaWJibWFsbG9jLmEgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYyNzFCRTE4RUEzOTYzMDA4QzE1MkYg
LyogbGliYm1hbGxvYy5hICovOyB9OwogCQkwRjdFQjgyMzFGOTU0MUIwMDBGMUFCQ0IgLyogRWxp
Z2liaWxpdHlSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGN0VCN0ZDMUY5NTQxQUQwMEYxQUJDQiAvKiBFbGlnaWJpbGl0eVJlc3VsdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0VCODI0
MUY5NTQxQjAwMEYxQUJDQiAvKiBJc29IZWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0VCN0ZEMUY5NTQxQUQwMEYxQUJDQiAv
KiBJc29IZWFwSW1wbElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjdFQjgyNTFGOTU0MUIwMDBGMUFCQ0IgLyogRGVmZXJyZWRUcmln
Z2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY3RUI3RkUxRjk1NDFBRDAwRjFBQkNCIC8qIERlZmVycmVkVHJpZ2dlcklubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3LDcg
KzEzNSw2IEBACiAJCTY1OTlDNUNEMUVDM0YxNTkwMEEyRjdCQiAvKiBBdmFpbGFibGVNZW1vcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTlDNUNC
MUVDM0YxNTkwMEEyRjdCQiAvKiBBdmFpbGFibGVNZW1vcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTM5ODg1QjIwNzZFRUI2MDA3NEEyRTcg
LyogQnVsa0RlY29tbWl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OTM5ODg1QTIwNzZFRUI1MDA3NEEyRTcgLyogQnVsa0RlY29tbWl0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk1QUIzQzcyMDZF
MEQzNDAwNzRGRTc2IC8qIFBoeXNpY2FsUGFnZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk1QUIzQzYyMDZFMEQyNTAwNzRGRTc2IC8qIFBoeXNp
Y2FsUGFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTdDNTcxRUZGMjIzODhCMDgwMDc3QTNDNyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkZDNjIx
MjA5NjQwOUUwMEE5OTM2MiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJN0M1NzFG
MDEyMjM4OEI4NDAwNzdBM0M3IC8qIFN0ZExpYkV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1NzFGMDAyMjM4OEI4NDAwNzdBM0M3IC8qIFN0
ZExpYkV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUFEMDkzNDMzMUZDRjQwNkQwMEU4NUVCNSAvKiBCQ29tcGlsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMDkzNDMyMUZDRjQwNTAwMEU4
NUVCNSAvKiBCQ29tcGlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBRDE0QUQyOTIwMjUyOUM0MDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDE0QUQyNzIw
MjUyOUE2MDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLmggKi87IH07CkBAIC0xNTQsMTMgKzE1MSw2
IEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KLQkJMEY3RUI3RjcxRjk1NDEyOTAwRjFBQkNCIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDE0NUY2ODM3MTc5REM0NUYwMEQ2NTU5OCAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDE0RjI3MUJEMThFQTM5NjMwMDhDMTUyRjsKLQkJCXJlbW90ZUluZm8gPSBibWFsbG9jOwot
CQl9OwogCQkwRjdFQjg1NTFGOTU1MDU0MDBGMUFCQ0IgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9y
dGFsID0gMTQ1RjY4MzcxNzlEQzQ1RjAwRDY1NTk4IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAt
MTc3LDE4ICsxNjcsNiBAQAogCQl9OwogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCiAKLS8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQkw
RjdFQjdFRDFGOTUyODUzMDBGMUFCQ0IgLyogQ29weUZpbGVzICovID0gewotCQkJaXNhID0gUEJY
Q29weUZpbGVzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0J
CQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87Ci0JCQlkc3RTdWJmb2xkZXJTcGVjID0g
MDsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAxOwotCQl9OwotLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwotCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMEYyNkE3QTQyMDU0
ODMwRDAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gUGVyUHJvY2Vzcy5jcHA7IHBhdGggPSBibWFsbG9jL1BlclByb2Nlc3MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjUxNjc3MzFGQUQ2ODUyMDA4MjM2QTgg
LyogYm1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBibWFs
bG9jLmNwcDsgcGF0aCA9IGJtYWxsb2MvYm1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDIsOCArMTgwLDYgQEAKIAkJMEY1QkYxNzIxRjIzQzU3MTAwMjlEOTFEIC8q
IEJFeHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQkV4cG9ydC5oOyBwYXRoID0gYm1hbGxvYy9CRXhw
b3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzRCOTNDMUY4OTcxM0UwMEI5
MzVEMyAvKiBDcnlwdG9SYW5kb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q3J5cHRvUmFuZG9tLmg7IHBhdGggPSBibWFsbG9jL0NyeXB0b1JhbmRvbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjc0QjkzRDFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFu
ZG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENyeXB0b1JhbmRv
bS5jcHA7IHBhdGggPSBibWFsbG9jL0NyeXB0b1JhbmRvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGN0VCN0VGMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdGJtYWxsb2M7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTBGN0VCN0YxMUY5NTI4NTMw
MEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0ZXN0Ym1hbGxv
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0VCN0ZDMUY5NTQxQUQwMEYx
QUJDQiAvKiBFbGlnaWJpbGl0eVJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBFbGlnaWJpbGl0eVJlc3VsdC5oOyBwYXRoID0gYm1hbGxvYy9FbGlnaWJpbGl0eVJlc3Vs
dC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTBGN0VCN0ZEMUY5NTQxQUQwMEYx
QUJDQiAvKiBJc29IZWFwSW1wbElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSXNvSGVhcEltcGxJbmxpbmVzLmg7IHBhdGggPSBibWFsbG9jL0lzb0hlYXBJbXBsSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTBGN0VCN0ZFMUY5NTQxQUQw
MEYxQUJDQiAvKiBEZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERlZmVycmVkVHJpZ2dlcklubGluZXMuaDsgcGF0aCA9IGJtYWxsb2MvRGVm
ZXJyZWRUcmlnZ2VySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC0z
MjgsMTUgKzMwNCw2IEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJMEY3RUI3RUMxRjk1
Mjg1MzAwRjFBQkNCIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9
ICgKLQkJCQk3QzU3MUVGRjIyMzg4QjA4MDA3N0EzQzcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKLQkJCQkwRjdFQjdGQTFGOTU0MTRDMDBGMUFCQ0IgLyogbGliYm1h
bGxvYy5hIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAJCTE0Q0MzOTQxMThFQTg3NDMwMDRBRkUzNCAvKiBG
cmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzU2LDE0ICszMjMsNiBAQAogLyogRW5k
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYR3JvdXAg
c2VjdGlvbiAqLwotCQkwRjdFQjdGMDFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdCAqLyA9IHsKLQkJ
CWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEY3RUI3RjExRjk1Mjg1MzAw
RjFBQkNCIC8qIHRlc3RibWFsbG9jLmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gdGVzdDsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTBGN0VCN0Y5MUY5NTQxNEMwMEYxQUJD
QiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTQ1MSwxNCArNDEwLDEyIEBACiAJCQkJMEY3RUI3RkIxRjk1NDE2OTAwRjFBQkNCIC8q
IGlzbyAqLywKIAkJCQkxNDVGNjg0MDE3OURDNDVGMDBENjU1OTggLyogUHJvZHVjdHMgKi8sCiAJ
CQkJMTREOURCNEYxN0YyODY4OTAwRUFBQjc5IC8qIHN0ZGxpYiAqLywKLQkJCQkwRjdFQjdGMDFG
OTUyODUzMDBGMUFCQ0IgLyogdGVzdCAqLywKIAkJCSk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwogCQkxNDVGNjg0MDE3OURDNDVGMDBENjU1OTggLyogUHJvZHVjdHMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTBGN0VCN0VGMUY5NTI4
NTMwMEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYyAqLywKIAkJCQkxNEYyNzFCRTE4RUEzOTYzMDA4QzE1
MkYgLyogbGliYm1hbGxvYy5hICovLAogCQkJCTE0Q0MzOTQ0MThFQTg3NDMwMDRBRkUzNCAvKiBs
aWJtYm1hbGxvYy5keWxpYiAqLywKIAkJCSk7CkBAIC03MDcsMjQgKzY2NCw2IEBACiAvKiBFbmQg
UEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJn
ZXQgc2VjdGlvbiAqLwotCQkwRjdFQjdFRTFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdGJtYWxsb2Mg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMEY3RUI3RjYxRjk1Mjg1MzAwRjFBQkNCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0Ym1hbGxvYyIgKi87Ci0JCQlidWlsZFBoYXNlcyA9
ICgKLQkJCQkwRjdFQjdFQjFGOTUyODUzMDBGMUFCQ0IgLyogU291cmNlcyAqLywKLQkJCQkwRjdF
QjdFQzFGOTUyODUzMDBGMUFCQ0IgLyogRnJhbWV3b3JrcyAqLywKLQkJCQkwRjdFQjdFRDFGOTUy
ODUzMDBGMUFCQ0IgLyogQ29weUZpbGVzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0J
CQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTBGN0VCN0Y4MUY5NTQxMjkwMEYxQUJDQiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJCW5hbWUgPSB0ZXN0Ym1hbGxvYzsK
LQkJCXByb2R1Y3ROYW1lID0gdGVzdGJtYWxsb2M7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY3
RUI3RUYxRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jICovOwotCQkJcHJvZHVjdFR5cGUg
PSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKLQkJfTsKIAkJMTRDQzM5NDMxOEVBODc0
MzAwNEFGRTM0IC8qIG1ibWFsbG9jICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0Owog
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0Q0MzOTQ1MThFQTg3NDMwMDRBRkUzNCAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWJtYWxsb2MiICov
OwpAQCAtNzY5LDEwICs3MDgsNiBAQAogCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsK
IAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKIAkJCQlUYXJnZXRBdHRyaWJ1dGVzID0gewot
CQkJCQkwRjdFQjdFRTFGOTUyODUzMDBGMUFCQ0IgPSB7Ci0JCQkJCQlDcmVhdGVkT25Ub29sc1Zl
cnNpb24gPSA5LjA7Ci0JCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9IE1hbnVhbDsKLQkJCQkJfTsK
IAkJCQkJMEY3RUI4NTAxRjk1NTA0QjAwRjFBQkNCID0gewogCQkJCQkJQ3JlYXRlZE9uVG9vbHNW
ZXJzaW9uID0gOS4wOwogCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUgPSBBdXRvbWF0aWM7CkBAIC03
OTQsMjAgKzcyOSwxMSBAQAogCQkJCTBGN0VCODUwMUY5NTUwNEIwMEYxQUJDQiAvKiBBbGwgKi8s
CiAJCQkJMTRGMjcxQkQxOEVBMzk2MzAwOEMxNTJGIC8qIGJtYWxsb2MgKi8sCiAJCQkJMTRDQzM5
NDMxOEVBODc0MzAwNEFGRTM0IC8qIG1ibWFsbG9jICovLAotCQkJCTBGN0VCN0VFMUY5NTI4NTMw
MEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVj
dCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
LQkJMEY3RUI3RUIxRjk1Mjg1MzAwRjFBQkNCIC8qIFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0J
CQlmaWxlcyA9ICgKLQkJCQkwRjdFQjdGMjFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdGJtYWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7Ci0JCX07CiAJCTE0Q0MzOTQwMThFQTg3NDMwMDRBRkUzNCAvKiBTb3VyY2Vz
ICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwpAQCAtODU2LDExICs3ODIsNiBAQAogLyogRW5kIFBCWFNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0
aW9uICovCi0JCTBGN0VCN0Y4MUY5NTQxMjkwMEYxQUJDQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9IDE0RjI3
MUJEMThFQTM5NjMwMDhDMTUyRiAvKiBibWFsbG9jICovOwotCQkJdGFyZ2V0UHJveHkgPSAwRjdF
QjdGNzFGOTU0MTI5MDBGMUFCQ0IgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9Owog
CQkwRjdFQjg1NjFGOTU1MDU0MDBGMUFCQ0IgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsK
IAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNEYyNzFCRDE4RUEz
OTYzMDA4QzE1MkYgLyogYm1hbGxvYyAqLzsKQEAgLTg3NCwzMCArNzk1LDYgQEAKIC8qIEVuZCBQ
QlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLwotCQkwRjdFQjdGMzFGOTUyODUzMDBGMUFCQ0IgLyogRGVidWcgKi8g
PSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gMTRCNjUwQzcxOEYzOUY0ODAwNzUxOTY4IC8qIERlYnVnUmVsZWFzZS54Y2Nv
bmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFS
R0VUX05BTUUpIjsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTBGN0VCN0Y0MUY5
NTI4NTMwMEYxQUJDQiAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDE0QjY1MEM3MThGMzlGNDgw
MDc1MTk2OCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0g
ewotCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7Ci0JCQl9OwotCQkJbmFtZSA9
IFJlbGVhc2U7Ci0JCX07Ci0JCTBGN0VCN0Y1MUY5NTI4NTMwMEYxQUJDQiAvKiBQcm9kdWN0aW9u
ICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDE0QjY1MEM1MThGMzlGNDgwMDc1MTk2OCAvKiBCYXNlLnhjY29uZmln
ICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwogCQkwRjdFQjg1MjFG
OTU1MDRCMDBGMUFCQ0IgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC05OTIsMTYgKzg4OSw2IEBACiAvKiBFbmQg
WENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRp
b25MaXN0IHNlY3Rpb24gKi8KLQkJMEY3RUI3RjYxRjk1Mjg1MzAwRjFBQkNCIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0Ym1hbGxvYyIgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKLQkJCQkwRjdFQjdGMzFGOTUyODUzMDBGMUFCQ0IgLyogRGVidWcgKi8sCi0JCQkJMEY3RUI3
RjQxRjk1Mjg1MzAwRjFBQkNCIC8qIFJlbGVhc2UgKi8sCi0JCQkJMEY3RUI3RjUxRjk1Mjg1MzAw
RjFBQkNCIC8qIFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsK
LQkJfTsKIAkJMEY3RUI4NTExRjk1NTA0QjAwRjFBQkNCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovID0gewogCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29EaXJlY3RvcnkuaAppbmRleCAzMGRmOGE2ZmIyYjk5MDRhMDRmODRlMjM5NDI5Y2Uy
ZDZjOGI0NmI5Li4xZDgyNGY0OWM3NjU3M2JjMzc3YjY3YmRjYjdjZGY1MTM4ZGJmMjk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAgICAgQml0czxudW1QYWdlcz4gbV9lbXB0eTsKICAgICBCaXRzPG51bVBhZ2VzPiBtX2Nv
bW1pdHRlZDsKICAgICBzdGQ6OmFycmF5PElzb1BhZ2U8Q29uZmlnPiosIG51bVBhZ2VzPiBtX3Bh
Z2VzOwotICAgIHVuc2lnbmVkIG1fZmlyc3RFbGlnaWJsZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
Ym1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJ
bmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaApp
bmRleCA2NDBkODJlMTIxZGQwMTVkOTdjMzc2Nzk3NGY4NmRmZjAxMTc5YzU4Li44MTI3N2YzOTZm
NmZmZGFmODA4ZDczYzNhZWJmM2NiMTc3YWQ0MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDggKzQ2LDkgQEAgSXNvRGlyZWN0b3J5
PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpJc29EaXJlY3RvcnkoSXNvSGVhcEltcGw8Q29uZmln
PiYgaGVhcCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFn
ZXM+CiBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUoKQogewotICAgIHVuc2lnbmVkIHBhZ2VJbmRl
eCA9IChtX2VsaWdpYmxlIHwgfm1fY29tbWl0dGVkKS5maW5kQml0KG1fZmlyc3RFbGlnaWJsZSwg
dHJ1ZSk7Ci0gICAgbV9maXJzdEVsaWdpYmxlID0gcGFnZUluZGV4OworICAgIHVuc2lnbmVkIHBh
Z2VJbmRleCA9IChtX2VsaWdpYmxlIHwgfm1fY29tbWl0dGVkKS5maW5kQml0KG1fZmlyc3RFbGln
aWJsZU9yRGVjb21taXR0ZWQsIHRydWUpOworICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0
ZWQgPSBwYWdlSW5kZXg7CisgICAgQkFTU0VSVCgobV9lbGlnaWJsZSB8IH5tX2NvbW1pdHRlZCku
ZmluZEJpdCgwLCB0cnVlKSA9PSBwYWdlSW5kZXgpOwogICAgIGlmIChwYWdlSW5kZXggPj0gbnVt
UGFnZXMpCiAgICAgICAgIHJldHVybiBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGw7CiAKQEAgLTk3LDcg
Kzk4LDcgQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJl
Y29tZShJc29QYWdlPENvbmZpZz4qIHBhZ2UsIElzb1AKICAgICAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlcCBkaWQgYmVjb21lIGVsaWdpYmxlLlxu
IiwgdGhpcywgcGFnZSk7CiAgICAgICAgIG1fZWxpZ2libGVbcGFnZUluZGV4XSA9IHRydWU7Ci0g
ICAgICAgIG1fZmlyc3RFbGlnaWJsZSA9IHN0ZDo6bWluKG1fZmlyc3RFbGlnaWJsZSwgcGFnZUlu
ZGV4KTsKKyAgICAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0ZDo6bWluKG1f
Zmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHBhZ2VJbmRleCk7CiAgICAgICAgIHRoaXMtPm1f
aGVhcC5kaWRCZWNvbWVFbGlnaWJsZSh0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
SXNvUGFnZVRyaWdnZXI6OkVtcHR5OgpAQCAtMTIyLDYgKzEyMyw3IEBAIHZvaWQgSXNvRGlyZWN0
b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWREZWNvbW1pdCh1bnNpZ25lZCBpbmRleCkK
ICAgICBCQVNTRVJUKCEhbV9jb21taXR0ZWRbaW5kZXhdKTsKICAgICB0aGlzLT5tX2hlYXAuaXNO
b0xvbmdlckZyZWVhYmxlKG1fcGFnZXNbaW5kZXhdLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwog
ICAgIG1fY29tbWl0dGVkW2luZGV4XSA9IGZhbHNlOworICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVj
b21taXR0ZWQgPSBzdGQ6Om1pbihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCBpbmRleCk7
CiAgICAgdGhpcy0+bV9oZWFwLmRpZERlY29tbWl0KG1fcGFnZXNbaW5kZXhdLCBJc29QYWdlQmFz
ZTo6cGFnZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMUy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5jcHAKaW5kZXggZGJjMGU3
ZWJhM2EzMGFlMTM4NGYwMDk1YzBkNzEyNWY4NDI3YTE3My4uYzIwMzIxM2I4NTViZGNkYzllZDA3
OTZmZDIwNGFiNWQ5NDhkODAwNiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29UTFMuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmNwcApAQCAtMTgz
LDExICsxODMsMTMgQEAgdm9pZCBJc29UTFM6OmRldGVybWluZU1hbGxvY0ZhbGxiYWNrU3RhdGUo
KQogICAgICAgICAgICAgaWYgKHNfbWFsbG9jRmFsbGJhY2tTdGF0ZSAhPSBNYWxsb2NGYWxsYmFj
a1N0YXRlOjpVbmRlY2lkZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0jaWYgR0lHQUNB
R0VfRU5BQkxFRAorI2lmIEdJR0FDQUdFX0VOQUJMRUQgfHwgQkNQVShBUk02NCkKKyNpZiAhQkNQ
VShBUk02NCkKICAgICAgICAgICAgIGlmICghR2lnYWNhZ2U6OnNob3VsZEJlRW5hYmxlZCgpKSB7
CiAgICAgICAgICAgICAgICAgc19tYWxsb2NGYWxsYmFja1N0YXRlID0gTWFsbG9jRmFsbGJhY2tT
dGF0ZTo6RmFsbEJhY2tUb01hbGxvYzsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVudiA9IGdldGVudigiYm1h
bGxvY19Jc29IZWFwIik7CiAgICAgICAgICAgICBpZiAoZW52ICYmICghc3RyY2FzZWNtcChlbnYs
ICJmYWxzZSIpIHx8ICFzdHJjYXNlY21wKGVudiwgIm5vIikgfHwgIXN0cmNtcChlbnYsICIwIikp
KQogICAgICAgICAgICAgICAgIHNfbWFsbG9jRmFsbGJhY2tTdGF0ZSA9IE1hbGxvY0ZhbGxiYWNr
U3RhdGU6OkZhbGxCYWNrVG9NYWxsb2M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1Byb2Nlc3NDaGVjay5tbSBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUHJvY2Vzc0NoZWNr
Lm1tCmluZGV4IDkwZmRjM2JhM2JlMGQ3N2M2MWRjN2Q5MDg1NmViODA4OTNjYzlhMGIuLjNiYjYz
ZjM1MjU0Mjk4OThiMDk5NGNjODUxNzkzYjUxOTVmNTJiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvUHJvY2Vzc0NoZWNrLm1tCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvUHJvY2Vzc0NoZWNrLm1tCkBAIC00Niw3ICs0Niw4IEBAIGJvb2wgZ2lnYWNhZ2VFbmFibGVk
Rm9yUHJvY2VzcygpCiAgICAgYm9vbCBpc09wdEluQmluYXJ5ID0gW3Byb2Nlc3NOYW1lIGlzRXF1
YWxUb1N0cmluZzpAImpzYyJdCiAgICAgICAgIHx8IFtwcm9jZXNzTmFtZSBpc0VxdWFsVG9TdHJp
bmc6QCJEdW1wUmVuZGVyVHJlZSJdCiAgICAgICAgIHx8IFtwcm9jZXNzTmFtZSBpc0VxdWFsVG9T
dHJpbmc6QCJ3YXNtIl0KLSAgICAgICAgfHwgW3Byb2Nlc3NOYW1lIGhhc1ByZWZpeDpAInRlc3Qi
XTsKKyAgICAgICAgfHwgW3Byb2Nlc3NOYW1lIGhhc1ByZWZpeDpAInRlc3QiXQorICAgICAgICB8
fCBbcHJvY2Vzc05hbWUgaGFzUHJlZml4OkAiVGVzdCJdOwogCiAgICAgcmV0dXJuIGlzT3B0SW5C
aW5hcnk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy90ZXN0L3Rlc3RibWFsbG9jLmNw
cCBiL1NvdXJjZS9ibWFsbG9jL3Rlc3QvdGVzdGJtYWxsb2MuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkNzZiYzE2MmFlZjNjYzVjY2JhOGJiNWY1Yjc3ZjFmMmIxYWVhNTFhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9ibWFs
bG9jL3Rlc3QvdGVzdGJtYWxsb2MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzQ4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
PGJtYWxsb2MvYm1hbGxvYy5oPgotI2luY2x1ZGUgPGJtYWxsb2MvRW52aXJvbm1lbnQuaD4KLSNp
bmNsdWRlIDxibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5j
bHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi11c2lu
ZyBuYW1lc3BhY2UgYm1hbGxvYzsKLXVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOjphcGk7Ci0KLS8v
IFdlIGRvbid0IGhhdmUgYSBOT19SRVRVUk5fRFVFX1RPX0VYSVQsIG5vciBzaG91bGQgd2UuIFRo
YXQncyByaWRpY3Vsb3VzLgotc3RhdGljIGJvb2wgaGlkZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5J
c1N0dXBpZCgpIHsgcmV0dXJuIHRydWU7IH0KLQotc3RhdGljIHZvaWQgdXNhZ2UoKQotewotICAg
IHB1dHMoIlVzYWdlOiB0ZXN0YjMgWzxmaWx0ZXI+XSIpOwotICAgIGlmIChoaWRkZW5UcnV0aEJl
Y2F1c2VOb1JldHVybklzU3R1cGlkKCkpCi0gICAgICAgIGV4aXQoMSk7Ci19Ci0KLSNkZWZpbmUg
UlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKCFz
aG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcHV0cygjdGVzdCAiLi4uIik7
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVzdDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcHV0cygjdGVzdCAiOiBPSyEiKTsgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotLy8gTm90aGluZyBmYW5jeSBmb3Ig
bm93OyB3ZSBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgV1RGIGFzc2VydGlvbiBtYWNoaW5lcnkuCi0j
ZGVmaW5lIENIRUNLKHgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICghISh4KSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBicmVhazsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IGluICVzOiBhc3NlcnRpb24gJXMgZmFpbGVkLlxu
IiwgICAgICAgICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fUFJFVFRZX0ZV
TkNUSU9OX18sICN4KTsgICAgICAgICAgICAgICBcCi0gICAgICAgIGFib3J0KCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3
aGlsZSAoZmFsc2UpCi0KLXN0YXRpYyBzdGQ6OnNldDx2b2lkKj4gdG9wdHJzZXQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8dm9pZCo+JiBwdHJzKQotewotICAgIHN0ZDo6c2V0PHZvaWQqPiByZXN1bHQ7Ci0g
ICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKSB7Ci0gICAgICAgIGlmIChwdHIpCi0gICAgICAgICAg
ICByZXN1bHQuaW5zZXJ0KHB0cik7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0
YXRpYyB2b2lkIGFzc2VydEVtcHR5UG9pbnRlclNldChjb25zdCBzdGQ6OnNldDx2b2lkKj4mIHBv
aW50ZXJzKQotewotICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIHByaW50ZigiICAgIHNraXBwaW5nIGNoZWNrcyBiZWNhdXNlIERlYnVn
SGVhcC5cbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChwb2ludGVycy5lbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcHJpbnRmKCJQb2ludGVyIHNldCBub3QgZW1wdHkh
XG4iKTsKLSAgICBwcmludGYoIlBvaW50ZXJzOiIpOwotICAgIGZvciAodm9pZCogcHRyIDogcG9p
bnRlcnMpCi0gICAgICAgIHByaW50ZigiICVwIiwgcHRyKTsKLSAgICBwcmludGYoIlxuIik7Ci0g
ICAgQ0hFQ0socG9pbnRlcnMuZW1wdHkoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIGhlYXBU
eXBlPgotc3RhdGljIHZvaWQgYXNzZXJ0SGFzT2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVh
cCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZXJzKQotewotICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0
KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7Ci0gICAgICAgIHByaW50ZigiICAgIHNraXBwaW5n
IGNoZWNrcyBiZWNhdXNlIERlYnVnSGVhcC5cbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
IGxvY2tlcihpbXBsLmxvY2spOwotICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCi0gICAgICAg
IFsmXSAodm9pZCogb2JqZWN0KSB7Ci0gICAgICAgICAgICBwb2ludGVycy5lcmFzZShvYmplY3Qp
OwotICAgICAgICB9KTsKLSAgICBhc3NlcnRFbXB0eVBvaW50ZXJTZXQocG9pbnRlcnMpOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBoZWFwVHlwZT4KLXN0YXRpYyB2b2lkIGFzc2VydEhhc09ubHlP
YmplY3RzKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBzdGQ6OnNldDx2b2lkKj4gcG9pbnRlcnMp
Ci17Ci0gICAgaWYgKEVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsK
LSAgICAgICAgcHJpbnRmKCIgICAgc2tpcHBpbmcgY2hlY2tzIGJlY2F1c2UgRGVidWdIZWFwLlxu
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgp
OwotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgaW1w
bC5mb3JFYWNoTGl2ZU9iamVjdCgKLSAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKLSAgICAg
ICAgICAgIENIRUNLKHBvaW50ZXJzLmVyYXNlKG9iamVjdCkgPT0gMSk7Ci0gICAgICAgIH0pOwot
ICAgIGFzc2VydEVtcHR5UG9pbnRlclNldChwb2ludGVycyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIGhlYXBUeXBlPgotc3RhdGljIHZvaWQgYXNzZXJ0Q2xlYW4oSXNvSGVhcDxoZWFwVHlwZT4m
IGhlYXApCi17Ci0gICAgc2NhdmVuZ2VUaGlzVGhyZWFkKCk7Ci0gICAgaWYgKCFFbnZpcm9ubWVu
dDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8mIGltcGwgPSBo
ZWFwLmltcGwoKTsKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgICAgIENIRUNLKCFpbXBsLm51bUxpdmVPYmpl
Y3RzKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGhlYXAuc2NhdmVuZ2UoKTsKLSAgICBpZiAo
IUVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0
byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxv
Y2tlcihpbXBsLmxvY2spOwotICAgICAgICBDSEVDSyghaW1wbC5udW1Db21taXR0ZWRQYWdlcygp
KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29TaW1wbGUoKQotewotICAgIHN0YXRp
YyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKLSAgICB2b2lkKiBwdHIxID0gaGVhcC5hbGxvY2F0ZSgp
OwotICAgIENIRUNLKHB0cjEpOwotICAgIHZvaWQqIHB0cjIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0g
ICAgQ0hFQ0socHRyMik7Ci0gICAgQ0hFQ0socHRyMSAhPSBwdHIyKTsKLSAgICBDSEVDSyhzdGQ6
OmFicyhzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMikp
ID49IDgpOwotICAgIGFzc2VydEhhc09iamVjdHMoaGVhcCwge3B0cjEsIHB0cjJ9KTsKLSAgICBo
ZWFwLmRlYWxsb2NhdGUocHRyMSk7Ci0gICAgaGVhcC5kZWFsbG9jYXRlKHB0cjIpOwotICAgIGFz
c2VydENsZWFuKGhlYXApOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0SXNvU2ltcGxlU2NhdmVuZ2VC
ZWZvcmVEZWFsbG9jKCkKLXsKLSAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhlYXA7Ci0gICAg
dm9pZCogcHRyMSA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICBDSEVDSyhwdHIxKTsKLSAgICB2b2lk
KiBwdHIyID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgIENIRUNLKHB0cjIpOwotICAgIENIRUNLKHB0
cjEgIT0gcHRyMik7Ci0gICAgQ0hFQ0soc3RkOjphYnMoc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjEp
IC0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjIpKSA+PSA4KTsKLSAgICBzY2F2ZW5nZVRoaXNUaHJl
YWQoKTsKLSAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB7cHRyMSwgcHRyMn0pOwotICAg
IGhlYXAuZGVhbGxvY2F0ZShwdHIxKTsKLSAgICBoZWFwLmRlYWxsb2NhdGUocHRyMik7Ci0gICAg
YXNzZXJ0Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29GbGlwRmxvcEZyYWdt
ZW50ZWRQYWdlcygpCi17Ci0gICAgc3RhdGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOwotICAgIHN0
ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDEwMDAwMDsgaS0t
OykgewotICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgICAgIENIRUNL
KHB0cik7Ci0gICAgICAgIHB0cnMucHVzaF9iYWNrKHB0cik7Ci0gICAgfQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7Ci0gICAgICAgIGhlYXAuZGVh
bGxvY2F0ZShwdHJzW2ldKTsKLSAgICAgICAgcHRyc1tpXSA9IG51bGxwdHI7Ci0gICAgfQotICAg
IGZvciAodW5zaWduZWQgaSA9IHB0cnMuc2l6ZSgpIC8gMjsgaS0tOykKLSAgICAgICAgcHRycy5w
dXNoX2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKLSAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCi0g
ICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwotICAgIGFzc2VydENsZWFuKGhlYXApOwotfQot
Ci1zdGF0aWMgdm9pZCB0ZXN0SXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlk
ZGxlKCkKLXsKLSAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhlYXA7Ci0gICAgc3RkOjp2ZWN0
b3I8dm9pZCo+IHB0cnM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTAwMDAwOyBpLS07KSB7Ci0g
ICAgICAgIHZvaWQqIHB0ciA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICAgICAgQ0hFQ0socHRyKTsK
LSAgICAgICAgcHRycy5wdXNoX2JhY2socHRyKTsKLSAgICB9Ci0gICAgQ0hFQ0sodG9wdHJzZXQo
cHRycykuc2l6ZSgpID09IHB0cnMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcHRycy5zaXplKCk7IGkgKz0gMikgewotICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyc1tp
XSk7Ci0gICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwotICAgIH0KLSAgICBoZWFwLnNjYXZlbmdl
KCk7Ci0gICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmU7Ci0gICAgYXV0byYgaW1w
bCA9IGhlYXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBs
b2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPSBpbXBs
Lm51bUNvbW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQotICAgIGFzc2VydEhhc09ubHlPYmplY3RzKGhl
YXAsIHRvcHRyc2V0KHB0cnMpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBwdHJzLnNpemUoKSAv
IDI7IGktLTspCi0gICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7Ci0gICAg
ewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAg
ICAgICBDSEVDSyhudW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9PSBpbXBsLm51bUNvbW1pdHRlZFBh
Z2VzKCkpOwotICAgIH0KLSAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCi0gICAgICAgIGhlYXAu
ZGVhbGxvY2F0ZShwdHIpOwotICAgIGFzc2VydENsZWFuKGhlYXApOwotfQotCi1zdGF0aWMgdm9p
ZCB0ZXN0SXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlMjg4KCkKLXsK
LSAgICBzdGF0aWMgSXNvSGVhcDxjaGFyWzI4OF0+IGhlYXA7Ci0gICAgc3RkOjp2ZWN0b3I8dm9p
ZCo+IHB0cnM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTAwMDAwOyBpLS07KSB7Ci0gICAgICAg
IHZvaWQqIHB0ciA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICAgICAgQ0hFQ0socHRyKTsKLSAgICAg
ICAgcHRycy5wdXNoX2JhY2socHRyKTsKLSAgICB9Ci0gICAgQ0hFQ0sodG9wdHJzZXQocHRycyku
c2l6ZSgpID09IHB0cnMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHRy
cy5zaXplKCk7IGkgKz0gMikgewotICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyc1tpXSk7Ci0g
ICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwotICAgIH0KLSAgICBoZWFwLnNjYXZlbmdlKCk7Ci0g
ICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmU7Ci0gICAgYXV0byYgaW1wbCA9IGhl
YXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIo
aW1wbC5sb2NrKTsKLSAgICAgICAgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPSBpbXBsLm51bUNv
bW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQotICAgIGFzc2VydEhhc09ubHlPYmplY3RzKGhlYXAsIHRv
cHRyc2V0KHB0cnMpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBwdHJzLnNpemUoKSAvIDI7IGkt
LTspCi0gICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7Ci0gICAgewotICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBD
SEVDSyhudW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9PSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkp
OwotICAgIH0KLSAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCi0gICAgICAgIGhlYXAuZGVhbGxv
Y2F0ZShwdHIpOwotICAgIGFzc2VydENsZWFuKGhlYXApOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
SXNvTWFsbG9jQW5kRnJlZUZhc3QoKQotewotICAgIHN0YXRpYyBJc29IZWFwPGNoYXJbMjU2XT4g
aGVhcDsKLSAgICB2b2lkKiBwdHIgPSBudWxscHRyOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MWU2OyArK2kpIHsKLSAgICAgICAgcHRyID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgICAgICBoZWFw
LmRlYWxsb2NhdGUocHRyKTsKLSAgICB9Ci0gICAgQ0hFQ0soIUlzb1BhZ2VCYXNlOjpwYWdlRm9y
KHB0ciktPmlzU2hhcmVkKCkpOwotfQotCi1jbGFzcyBCaXNvTWFsbG9jZWQgewotICAgIE1BS0Vf
QklTT19NQUxMT0NFRChCaXNvTWFsbG9jZWQsIEJOT0VYUE9SVCk7Ci1wdWJsaWM6Ci0gICAgQmlz
b01hbGxvY2VkKGludCB4LCBmbG9hdCB5KQotICAgICAgICA6IHgoeCkKLSAgICAgICAgLCB5KHkp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBpbnQgeDsKLSAgICBmbG9hdCB5OwotfTsKLQotTUFL
RV9CSVNPX01BTExPQ0VEX0lNUEwoQmlzb01hbGxvY2VkKTsKLQotc3RhdGljIHZvaWQgdGVzdEJp
c29NYWxsb2NlZCgpCi17Ci0gICAgQmlzb01hbGxvY2VkKiBwdHIgPSBuZXcgQmlzb01hbGxvY2Vk
KDQsIDUpOwotICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01hbGxvY2VkOjpiaXNvSGVhcCgpLCB7
IHB0ciB9KTsKLSAgICBkZWxldGUgcHRyOwotICAgIGFzc2VydENsZWFuKEJpc29NYWxsb2NlZDo6
Ymlzb0hlYXAoKSk7Ci19Ci0KLWNsYXNzIEJpc29NYWxsb2NlZElubGluZSB7Ci0gICAgTUFLRV9C
SVNPX01BTExPQ0VEX0lOTElORShCaXNvTWFsbG9jZWQpOwotcHVibGljOgotICAgIEJpc29NYWxs
b2NlZElubGluZShpbnQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiB4KHgpCi0gICAgICAgICwgeSh5
KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgaW50IHg7Ci0gICAgZmxvYXQgeTsKLX07Ci0KLXN0
YXRpYyB2b2lkIHRlc3RCaXNvTWFsbG9jZWRJbmxpbmUoKQotewotICAgIEJpc29NYWxsb2NlZElu
bGluZSogcHRyID0gbmV3IEJpc29NYWxsb2NlZElubGluZSg0LCA1KTsKLSAgICBhc3NlcnRIYXNP
YmplY3RzKEJpc29NYWxsb2NlZElubGluZTo6Ymlzb0hlYXAoKSwgeyBwdHIgfSk7Ci0gICAgZGVs
ZXRlIHB0cjsKLSAgICBhc3NlcnRDbGVhbihCaXNvTWFsbG9jZWRJbmxpbmU6OmJpc29IZWFwKCkp
OwotfQotCi1zdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQotewotICAgIGF1dG8g
c2hvdWxkUnVuID0gWyZdIChjb25zdCBjaGFyKiB0ZXN0TmFtZSkgLT4gYm9vbCB7Ci0gICAgICAg
IHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKLSAgICB9
OwotICAgIAotICAgIFJVTih0ZXN0SXNvU2ltcGxlKCkpOwotICAgIFJVTih0ZXN0SXNvU2ltcGxl
U2NhdmVuZ2VCZWZvcmVEZWFsbG9jKCkpOwotICAgIFJVTih0ZXN0SXNvRmxpcEZsb3BGcmFnbWVu
dGVkUGFnZXMoKSk7Ci0gICAgUlVOKHRlc3RJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZl
bmdlSW5NaWRkbGUoKSk7Ci0gICAgUlVOKHRlc3RJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1Nj
YXZlbmdlSW5NaWRkbGUyODgoKSk7Ci0gICAgUlVOKHRlc3RJc29NYWxsb2NBbmRGcmVlRmFzdCgp
KTsKLSAgICBSVU4odGVzdEJpc29NYWxsb2NlZCgpKTsKLSAgICBSVU4odGVzdEJpc29NYWxsb2Nl
ZElubGluZSgpKTsKLSAgICAKLSAgICBwdXRzKCJTdWNjZXNzISIpOwotfQotCi1pbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgY29uc3QgY2hhciogZmlsdGVyID0gbnVsbHB0
cjsKLSAgICBzd2l0Y2ggKGFyZ2MpIHsKLSAgICBjYXNlIDE6Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgMjoKLSAgICAgICAgZmlsdGVyID0gYXJndlsxXTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAot
ICAgIHJ1bihmaWx0ZXIpOwotICAgIHJldHVybiAwOwotfQotCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDRiMGM1YzdiNDhmZmM3NjJiY2Q5NGM5
Zjg1ZmE1MTRmNGRlZjYwYy4uNTdlNTYyYTZmOWI5Zjk4YmY0YjEwMTQzOGI2NmY3OTgyZjExNjg3
NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDE5LTA1LTMwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgorCisgICAgICAgIElzb0hlYXBzIGRvbid0IG5vdGljZSB1bmNvbW1pdHRlZCBWQSBi
ZWNvbWluZyB0aGUgZmlyc3QgZWxpZ2libGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRlc3RibWFsbG9jLmNwcCB0byBUZXN0V1RGIHNvIGl0
IHJ1bnMgaW4gYXV0b21hdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvYm1hbGxv
Yy90ZXN0L3Rlc3RibWFsbG9jLmNwcC4KKyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTA1LTI4ICBB
YWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzLWJ1aWxk
XSBSZW1vdmUgdW51c2VkIGJ1aWxkYm90IHRhYnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NTdhYTdkMTgyZThmY2YwMDUzOTBlMjJiNjU0ZjMwNjA0NWU5YzM3Zi4uZDJiNWQ4M2YwMjdiMWU4
OTg3YzE5OGVjMDllZjlkYjA5YTY0Nzc1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2
OCw2ICsyNjgsNyBAQAogCQk1MzY3NzAzNDFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3Jp
cHRpb24ubW0gKi87IH07CiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkg
LyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAg
Ki87IH07CisJCTUzRkNERTZCMjI5RUZGQjkwMDU5OEVDRiAvKiBJc29IZWFwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkNERTZBMjI5RUZGQjkw
MDU5OEVDRiAvKiBJc29IZWFwLmNwcCAqLzsgfTsKIAkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQw
IC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyog
bGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovOyB9OwogCQk1NTk3RjgzNjFEOTU5NkM4MDA2
NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3lu
Y2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi87IH07CiAJCTU1QTgxN0ZDMjE4MTAwRTAwMDA0QTM5
QSAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTgxN0ZCMjE4MTAwRTAwMDA0QTM5QSAvKiBB
ZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSAqLzsgfTsKQEAgLTE2OTcsNiArMTY5OCw3
IEBACiAJCTUzNjc3MDMzMUNDODAyMjgwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlw
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlw
dE9iamVjdERlc2NyaXB0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzY3
NzAzNTFDQzgxMkY5MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFC
OSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaW9yaXR5UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0ZD
REU2QTIyOUVGRkI5MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
c29IZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUyMjZBMkUxRUI5NjlC
NjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVk
Rml4ZWRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5j
aHJvbml6ZWRGaXhlZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVB
ODE3RkIyMTgxMDBFMDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODQ4LDYgKzI4NTAsMTQgQEAKIAkJCXBh
dGggPSBXZWJDb3JlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTNGQ0RF
NjkyMjlFRkY2ODAwNTk4RUNGIC8qIGJtYWxsb2MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTUzRkNERTZBMjI5RUZGQjkwMDU5OEVDRiAvKiBJc29IZWFw
LmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gYm1hbGxvYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTc1NjA5MTc2MTkyNTlDNTkwMDlFRjA2RSAvKiBpb3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzMyMyw2ICszMzMzLDcgQEAK
IAkJQkM5MDk2NDYxMjU1NjE4OTAwMDgzNzU2IC8qIFdURiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTNGQ0RFNjkyMjlFRkY2ODAwNTk4RUNGIC8qIGJt
YWxsb2MgKi8sCiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAogCQkJCUUz
QzIxQTc4MjFCMjVDODIwMDNCMzFBMyAvKiBjb2NvYSAqLywKIAkJCQk3Q0JCQTA3NTE5QkI4QTA5
MDBCQkYwMjUgLyogZGFyd2luICovLApAQCAtMzk2NCw2ICszOTc1LDcgQEAKIAkJCQk3QzgzREVE
MjFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REVENDFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzREVFMDFEMEE1OTBDMDBGRUJDRjMgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1M0ZDREU2QjIyOUVGRkI5MDA1OThFQ0YgLyogSXNvSGVhcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0VCNjJBQjIyMzYwOURFMDA2OUNCQjAgLyogSXRlcmF0
b3JSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTA1MDk0MTFGQjlGMDY0MDBCMzNGQjgg
LyogSlNPTlZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMUMxRDhFMURGOEVGNzIwMDZF
OTc5RiAvKiBMRUJEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThiY2My
YjE5MDUwMTNlZDU4YmE4MTk3NGQ4YzI4MGRjMDlkOGQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKQEAgLTAsMCAr
MSwzNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmICFV
U0UoU1lTVEVNX01BTExPQykKKworI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgorI2luY2x1
ZGUgPGJtYWxsb2MvRW52aXJvbm1lbnQuaD4KKyNpbmNsdWRlIDxibWFsbG9jL0lzb0hlYXBJbmxp
bmVzLmg+CisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUg
PHNldD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3VzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwordXNp
bmcgbmFtZXNwYWNlIGJtYWxsb2M6OmFwaTsKKworI2RlZmluZSBSVU4odGVzdCkgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAoraWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAg
ICAgICAgIFwKK2JyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3B1dHMoI3Rl
c3QgIi4uLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCit0ZXN0OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorcHV0cygjdGVzdCAiOiBPSyEiKTsgICAgICAgICAgICAgICAg
ICAgIFwKK30gd2hpbGUgKGZhbHNlKQorCisvLyBOb3RoaW5nIGZhbmN5IGZvciBub3c7IHdlIGp1
c3QgdXNlIHRoZSBleGlzdGluZyBXVEYgYXNzZXJ0aW9uIG1hY2hpbmVyeS4KKyNkZWZpbmUgQ0hF
Q0soeCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK2lmICghISh4KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiticmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCitmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBpbiAlczogYXNz
ZXJ0aW9uICVzIGZhaWxlZC5cbiIsICAgICAgICAgXAorX19GSUxFX18sIF9fTElORV9fLCBfX1BS
RVRUWV9GVU5DVElPTl9fLCAjeCk7ICAgICAgICAgICAgICAgXAorYWJvcnQoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUg
KGZhbHNlKQorCitzdGF0aWMgc3RkOjpzZXQ8dm9pZCo+IHRvcHRyc2V0KGNvbnN0IHN0ZDo6dmVj
dG9yPHZvaWQqPiYgcHRycykKK3sKKyAgICBzdGQ6OnNldDx2b2lkKj4gcmVzdWx0OworICAgIGZv
ciAodm9pZCogcHRyIDogcHRycykgeworICAgICAgICBpZiAocHRyKQorICAgICAgICAgICAgcmVz
dWx0Lmluc2VydChwdHIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
dm9pZCBhc3NlcnRFbXB0eVBvaW50ZXJTZXQoY29uc3Qgc3RkOjpzZXQ8dm9pZCo+JiBwb2ludGVy
cykKK3sKKyAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkg
eworICAgICAgICBwcmludGYoIiAgICBza2lwcGluZyBjaGVja3MgYmVjYXVzZSBEZWJ1Z0hlYXAu
XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocG9pbnRlcnMuZW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIHByaW50ZigiUG9pbnRlciBzZXQgbm90IGVtcHR5IVxuIik7
CisgICAgcHJpbnRmKCJQb2ludGVyczoiKTsKKyAgICBmb3IgKHZvaWQqIHB0ciA6IHBvaW50ZXJz
KQorICAgICAgICBwcmludGYoIiAlcCIsIHB0cik7CisgICAgcHJpbnRmKCJcbiIpOworICAgIENI
RUNLKHBvaW50ZXJzLmVtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBoZWFwVHlwZT4K
K3N0YXRpYyB2b2lkIGFzc2VydEhhc09iamVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXAsIHN0
ZDo6c2V0PHZvaWQqPiBwb2ludGVycykKK3sKKyAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgpLT5p
c0RlYnVnSGVhcEVuYWJsZWQoKSkgeworICAgICAgICBwcmludGYoIiAgICBza2lwcGluZyBjaGVj
a3MgYmVjYXVzZSBEZWJ1Z0hlYXAuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
dXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CisgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2Nr
ZXIoaW1wbC5sb2NrKTsKKyAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBbJl0g
KHZvaWQqIG9iamVjdCkgeworICAgICAgICAgICAgcG9pbnRlcnMuZXJhc2Uob2JqZWN0KTsKKyAg
ICAgICAgfSk7CisgICAgYXNzZXJ0RW1wdHlQb2ludGVyU2V0KHBvaW50ZXJzKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+CitzdGF0aWMgdm9pZCBhc3NlcnRIYXNPbmx5T2JqZWN0
cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZXJzKQorewor
ICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CisgICAg
ICAgIHByaW50ZigiICAgIHNraXBwaW5nIGNoZWNrcyBiZWNhdXNlIERlYnVnSGVhcC5cbiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKKyAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOworICAgIGltcGwuZm9y
RWFjaExpdmVPYmplY3QoCisgICAgICAgIFsmXSAodm9pZCogb2JqZWN0KSB7CisgICAgICAgICAg
ICBDSEVDSyhwb2ludGVycy5lcmFzZShvYmplY3QpID09IDEpOworICAgICAgICB9KTsKKyAgICBh
c3NlcnRFbXB0eVBvaW50ZXJTZXQocG9pbnRlcnMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBo
ZWFwVHlwZT4KK3N0YXRpYyB2b2lkIGFzc2VydENsZWFuKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFw
KQoreworICAgIHNjYXZlbmdlVGhpc1RocmVhZCgpOworICAgIGlmICghRW52aXJvbm1lbnQ6Omdl
dCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgeworICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5p
bXBsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9j
a2VyKGltcGwubG9jayk7CisgICAgICAgICAgICBDSEVDSyghaW1wbC5udW1MaXZlT2JqZWN0cygp
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBoZWFwLnNjYXZlbmdlKCk7CisgICAgaWYgKCFFbnZp
cm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8mIGlt
cGwgPSBoZWFwLmltcGwoKTsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIo
aW1wbC5sb2NrKTsKKyAgICAgICAgQ0hFQ0soIWltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Cisg
ICAgfQorfQorCitURVNUKGJtYWxsb2MsIElzb1NpbXBsZSkKK3sKKyAgICBzdGF0aWMgSXNvSGVh
cDxkb3VibGU+IGhlYXA7CisgICAgdm9pZCogcHRyMSA9IGhlYXAuYWxsb2NhdGUoKTsKKyAgICBD
SEVDSyhwdHIxKTsKKyAgICB2b2lkKiBwdHIyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgIENIRUNL
KHB0cjIpOworICAgIENIRUNLKHB0cjEgIT0gcHRyMik7CisgICAgQ0hFQ0soc3RkOjphYnMoc3Rh
dGljX2Nhc3Q8Y2hhcio+KHB0cjEpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjIpKSA+PSA4KTsK
KyAgICBhc3NlcnRIYXNPYmplY3RzKGhlYXAsIHtwdHIxLCBwdHIyfSk7CisgICAgaGVhcC5kZWFs
bG9jYXRlKHB0cjEpOworICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIyKTsKKyAgICBhc3NlcnRDbGVh
bihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJc29TaW1wbGVTY2F2ZW5nZUJlZm9yZURlYWxs
b2MpCit7CisgICAgc3RhdGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOworICAgIHZvaWQqIHB0cjEg
PSBoZWFwLmFsbG9jYXRlKCk7CisgICAgQ0hFQ0socHRyMSk7CisgICAgdm9pZCogcHRyMiA9IGhl
YXAuYWxsb2NhdGUoKTsKKyAgICBDSEVDSyhwdHIyKTsKKyAgICBDSEVDSyhwdHIxICE9IHB0cjIp
OworICAgIENIRUNLKHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNoYXIqPihwdHIxKSAtIHN0YXRpY19j
YXN0PGNoYXIqPihwdHIyKSkgPj0gOCk7CisgICAgc2NhdmVuZ2VUaGlzVGhyZWFkKCk7CisgICAg
YXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwge3B0cjEsIHB0cjJ9KTsKKyAgICBoZWFwLmRlYWxs
b2NhdGUocHRyMSk7CisgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjIpOworICAgIGFzc2VydENsZWFu
KGhlYXApOworfQorCitURVNUKGJtYWxsb2MsIElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzKQor
eworICAgIHN0YXRpYyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKKyAgICBzdGQ6OnZlY3Rvcjx2b2lk
Kj4gcHRyczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxMDAwMDA7IGktLTspIHsKKyAgICAgICAg
dm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgICAgICBDSEVDSyhwdHIpOworICAgICAg
ICBwdHJzLnB1c2hfYmFjayhwdHIpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcHRycy5zaXplKCk7IGkgKz0gMikgeworICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyc1tp
XSk7CisgICAgICAgIHB0cnNbaV0gPSBudWxscHRyOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBwdHJzLnNpemUoKSAvIDI7IGktLTspCisgICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAu
YWxsb2NhdGUoKSk7CisgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQorICAgICAgICBoZWFwLmRl
YWxsb2NhdGUocHRyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9j
LCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUpCit7CisgICAgc3Rh
dGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOworICAgIHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDEwMDAwMDsgaS0tOykgeworICAgICAgICB2b2lkKiBwdHIg
PSBoZWFwLmFsbG9jYXRlKCk7CisgICAgICAgIENIRUNLKHB0cik7CisgICAgICAgIHB0cnMucHVz
aF9iYWNrKHB0cik7CisgICAgfQorICAgIENIRUNLKHRvcHRyc2V0KHB0cnMpLnNpemUoKSA9PSBw
dHJzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0cnMuc2l6ZSgpOyBp
ICs9IDIpIHsKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOworICAgICAgICBwdHJz
W2ldID0gbnVsbHB0cjsKKyAgICB9CisgICAgaGVhcC5zY2F2ZW5nZSgpOworICAgIHVuc2lnbmVk
IG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlOworICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsK
KyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7
CisgICAgICAgIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdl
cygpOworICAgIH0KKyAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB0b3B0cnNldChwdHJz
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXplKCkgLyAyOyBpLS07KQorICAgICAg
ICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOworICAgIHsKKyAgICAgICAgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKKyAgICAgICAgQ0hFQ0sobnVtQ29t
bWl0dGVkUGFnZXNCZWZvcmUgPT0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKKyAgICB9Cisg
ICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQorICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsK
KyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZy
YWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUyODgpCit7CisgICAgc3RhdGljIElzb0hlYXA8
Y2hhclsyODhdPiBoZWFwOworICAgIHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDEwMDAwMDsgaS0tOykgeworICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFs
bG9jYXRlKCk7CisgICAgICAgIENIRUNLKHB0cik7CisgICAgICAgIHB0cnMucHVzaF9iYWNrKHB0
cik7CisgICAgfQorICAgIENIRUNLKHRvcHRyc2V0KHB0cnMpLnNpemUoKSA9PSBwdHJzLnNpemUo
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0cnMuc2l6ZSgpOyBpICs9IDIpIHsK
KyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOworICAgICAgICBwdHJzW2ldID0gbnVs
bHB0cjsKKyAgICB9CisgICAgaGVhcC5zY2F2ZW5nZSgpOworICAgIHVuc2lnbmVkIG51bUNvbW1p
dHRlZFBhZ2VzQmVmb3JlOworICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKKyAgICB7Cisg
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgICAg
IG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpOworICAg
IH0KKyAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB0b3B0cnNldChwdHJzKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXplKCkgLyAyOyBpLS07KQorICAgICAgICBwdHJzLnB1
c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKKyAgICAgICAgQ0hFQ0sobnVtQ29tbWl0dGVkUGFn
ZXNCZWZvcmUgPT0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKKyAgICB9CisgICAgZm9yICh2
b2lkKiBwdHIgOiBwdHJzKQorICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKKyAgICBhc3Nl
cnRDbGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJc29NYWxsb2NBbmRGcmVlRmFzdCkK
K3sKKyAgICBzdGF0aWMgSXNvSGVhcDxjaGFyWzI1Nl0+IGhlYXA7CisgICAgdm9pZCogcHRyID0g
bnVsbHB0cjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgICAgIHB0
ciA9IGhlYXAuYWxsb2NhdGUoKTsKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CisgICAg
fQorICAgIENIRUNLKCFJc29QYWdlQmFzZTo6cGFnZUZvcihwdHIpLT5pc1NoYXJlZCgpKTsKK30K
KworY2xhc3MgQmlzb01hbGxvY2VkIHsKKyAgICBNQUtFX0JJU09fTUFMTE9DRUQoQmlzb01hbGxv
Y2VkLCBCTk9FWFBPUlQpOworcHVibGljOgorICAgIEJpc29NYWxsb2NlZChpbnQgeCwgZmxvYXQg
eSkKKyAgICAgICAgOiB4KHgpCisgICAgICAgICwgeSh5KQorICAgIHsKKyAgICB9CisKKyAgICBp
bnQgeDsKKyAgICBmbG9hdCB5OworfTsKKworTUFLRV9CSVNPX01BTExPQ0VEX0lNUEwoQmlzb01h
bGxvY2VkKTsKKworVEVTVChibWFsbG9jLCBCaXNvTWFsbG9jZWQpCit7CisgICAgQmlzb01hbGxv
Y2VkKiBwdHIgPSBuZXcgQmlzb01hbGxvY2VkKDQsIDUpOworICAgIGFzc2VydEhhc09iamVjdHMo
Qmlzb01hbGxvY2VkOjpiaXNvSGVhcCgpLCB7IHB0ciB9KTsKKyAgICBkZWxldGUgcHRyOworICAg
IGFzc2VydENsZWFuKEJpc29NYWxsb2NlZDo6Ymlzb0hlYXAoKSk7Cit9CisKK2NsYXNzIEJpc29N
YWxsb2NlZElubGluZSB7CisgICAgTUFLRV9CSVNPX01BTExPQ0VEX0lOTElORShCaXNvTWFsbG9j
ZWQpOworcHVibGljOgorICAgIEJpc29NYWxsb2NlZElubGluZShpbnQgeCwgZmxvYXQgeSkKKyAg
ICAgICAgOiB4KHgpCisgICAgICAgICwgeSh5KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgeDsK
KyAgICBmbG9hdCB5OworfTsKKworVEVTVChibWFsbG9jLCBCaXNvTWFsbG9jZWRJbmxpbmUpCit7
CisgICAgQmlzb01hbGxvY2VkSW5saW5lKiBwdHIgPSBuZXcgQmlzb01hbGxvY2VkSW5saW5lKDQs
IDUpOworICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01hbGxvY2VkSW5saW5lOjpiaXNvSGVhcCgp
LCB7IHB0ciB9KTsKKyAgICBkZWxldGUgcHRyOworICAgIGFzc2VydENsZWFuKEJpc29NYWxsb2Nl
ZElubGluZTo6Ymlzb0hlYXAoKSk7Cit9CisKKworVEVTVChibWFsbG9jLCBTY2F2ZW5nZWRNZW1v
cnlTaG91bGRCZVJldXNlZCkKK3sKKyAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhlYXA7CisK
KyAgICBhdXRvIHJ1biA9IFtdICh1bnNpZ25lZCBudW1QYWdlc1RvQ29tbWl0KSB7CisgICAgICAg
IGF1dG8qIHB0cjEgPSBoZWFwLmFsbG9jYXRlKCk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8dm9p
ZCo+IHB0cnM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgO2krKykgeworICAgICAg
ICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgICAgICAgICAgQ0hFQ0socHRy
KTsKKyAgICAgICAgICAgIHB0cnMucHVzaF9iYWNrKHB0cik7CisgICAgICAgICAgICBpZiAoaGVh
cC5pbXBsKCkubnVtQ29tbWl0dGVkUGFnZXMoKSA9PSBudW1QYWdlc1RvQ29tbWl0KQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpzZXQ8dm9pZCo+IHVu
aXF1ZWRQdHJzID0gdG9wdHJzZXQocHRycyk7CisKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0
cjEpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgSXNvUGFnZTxkZWNsdHlwZSho
ZWFwKTo6Q29uZmlnPjo6bnVtT2JqZWN0cyAtIDE7IGkrKykgeworICAgICAgICAgICAgaGVhcC5k
ZWFsbG9jYXRlKHB0cnNbaV0pOworICAgICAgICAgICAgdW5pcXVlZFB0cnMuZXJhc2UocHRyc1tp
XSk7CisgICAgICAgIH0KKworICAgICAgICBzY2F2ZW5nZSgpOworICAgICAgICBhc3NlcnRIYXNP
bmx5T2JqZWN0cyhoZWFwLCB1bmlxdWVkUHRycyk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
b25seSBzZWVtcyB0byBwYXNzIHdoZW4gbGxkYiBpcyBhdHRhY2hlZCBidXQgdGhlIHNjYXZlbmdl
ciB0aHJlYWQgaXNuJ3QgcnVubmluZy4uLgorICAgICAgICAvLyBzZWU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzODQKKyAgICAgICAgYXV0byogcHRyMiA9IGhl
YXAuYWxsb2NhdGUoKTsKKyAgICAgICAgLy8gQ0hFQ0socHRyMSA9PSBwdHIyKTsKKyAgICB9Owor
CisgICAgcnVuKDIpOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370963</attachid>
            <date>2019-05-30 12:11:58 -0700</date>
            <delta_ts>2019-05-30 13:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198301-20190530121157.patch</filename>
            <type>text/plain</type>
            <size>50493</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZGRmZDgwNjdiOTYwY2Yw
ZWFmNmMyMDBiOWExM2VlMGM4NWIwOGFhMS4uYmUzMTg4YzY4YTNjODMxYzFkNzQwZDdhMDUxMjdh
NTFkNjExNTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA1LTMwICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzb0hlYXBzIGRv
bid0IG5vdGljZSB1bmNvbW1pdHRlZCBWQSBiZWNvbWluZyB0aGUgZmlyc3QgZWxpZ2libGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJc29EaXJlY3Rv
cnkgaGFzIGEgZmlyc3RFbGlnaWJsZSBtZW1iZXIgdGhhdCBpcyB1c2VkIGFzIGFuCisgICAgICAg
IG9wdGltaXphdGlvbiB0byBoZWxwIGZpbmQgdGhlIGZpcnN0IGZpdC4gSG93ZXZlciBpZiB0aGUg
c2NhdmVuZ2VyCisgICAgICAgIGRlY29tbWl0dGVkIGEgcGFnZSBiZWZvcmUgZmlyc3RFbGlnaWJs
ZSB0aGVuIHdlIHdvdWxkbid0IG1vdmUKKyAgICAgICAgZmlyc3RFbGlnaWJsZS4gVGh1cywgaWYg
bm8gc3BhY2UgaXMgZXZlciBmcmVlZCBiZWxvdyBmaXJzdEVsaWdpYmxlCisgICAgICAgIHdlIHdp
bGwgbmV2ZXIgcmV1c2VkIHRoZSBkZWNvbW1pdHRlZCBtZW1vcnkgKGUuZy4gaWYgdGhlIFZBIHBh
Z2UKKyAgICAgICAgaXMgZGVjb21taXR0ZWQpLiBUaGUgZml4IGlzIHRvIG1ha2UgSXNvRGlyZWN0
b3J5OjpkaWREZWNvbW1pdCBtb3ZlCisgICAgICAgIHRoZSBmaXJzdEVsaWdpYmxlIHBhZ2UgYmFj
ayBpZiB0aGUgZGVjb21taXR0ZWQgcGFnZSBpcyBzbWFsbGVyCisgICAgICAgIHRoYW4gdGhlIGN1
cnJlbnQgZmlyc3RFbGlnaWJsZS4gQXMgc3VjaCwgdGhpcyBwYXRjaCByZW5hbWVzCisgICAgICAg
IGZpcnN0RWxpZ2libGUgdG8gZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQuCisKKyAgICAgICAg
QWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIGdpZ2FjYWdlRW5hYmxlZEZvclByb2Nlc3MgdG8gY2hl
Y2sgaWYgdGhlCisgICAgICAgIHByb2Nlc3Mgc3RhcnRzIHdpdGggVGVzdCByYXRoZXIgdGhhbiBq
dXN0IHRlc3QgYXMgVGVzdFdURiBkb2VzLgorCisgICAgICAgIExhc3RseSwgdW5iZWtub3duc3Qg
dG8gbWUgSXNvSGVhcHMgYXJlIGRlcGVuZGVudCBvbiBnaWdhY2FnZSwgc28KKyAgICAgICAgYnkg
cmVtb3ZpbmcgZ2lnYWNhZ2UgZnJvbSBhcm02NCBJIGFjY2lkZW50YWxseSBkaXNhYmxlZAorICAg
ICAgICBJc29IZWFwcy4uLgorCisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvSXNvRGlyZWN0b3J5Lmg6CisgICAgICAgICogYm1h
bGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1Q
YWdlcz46OnRha2VGaXJzdEVsaWdpYmxlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBh
Z2VzPjo6ZGlkQmVjb21lKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6ZGlk
RGVjb21taXQpOgorICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGwuaDoKKyAgICAgICAgKiBi
bWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVh
cEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQpOgorICAgICAgICAo
Ym1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQ29tbWl0KToKKyAgICAgICAgKGJtYWxs
b2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBibWFsbG9jL0lzb1RMUy5jcHA6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6OmRl
dGVybWluZU1hbGxvY0ZhbGxiYWNrU3RhdGUpOgorICAgICAgICAqIGJtYWxsb2MvUHJvY2Vzc0No
ZWNrLm1tOgorICAgICAgICAoYm1hbGxvYzo6Z2lnYWNhZ2VFbmFibGVkRm9yUHJvY2Vzcyk6CisK
IDIwMTktMDUtMjMgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBbQ01ha2VdIFVzZSB0YXJnZXQgb3JpZW50ZWQgZGVzaWduIGZvciBibWFsbG9jCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OTJmODVjZjk3YzIwZjFiNzliODExZjFjZjkwYWI0ZGJlMzk0ODYxZS4uZjc0NzVmYWI1ZTI0MWNk
ODMzYzA5NzJhNjliMzVhMzhhMTgyZDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzMsOCArMzMsNiBAQAogCQkwRjVCRjE3
MzFGMjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYxNzIxRjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc0
QjkzRTFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc0QjkzQzFGODk3MTNFMDBCOTM1RDMgLyog
Q3J5cHRvUmFuZG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc0QjkzRDFGODk3
MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCAqLzsgfTsKLQkJMEY3RUI3RjIxRjk1Mjg1
MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0VCN0YxMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0Ym1hbGxv
Yy5jcHAgKi87IH07Ci0JCTBGN0VCN0ZBMUY5NTQxNEMwMEYxQUJDQiAvKiBsaWJibWFsbG9jLmEg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYyNzFC
RTE4RUEzOTYzMDA4QzE1MkYgLyogbGliYm1hbGxvYy5hICovOyB9OwogCQkwRjdFQjgyMzFGOTU0
MUIwMDBGMUFCQ0IgLyogRWxpZ2liaWxpdHlSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0VCN0ZDMUY5NTQxQUQwMEYxQUJDQiAvKiBFbGln
aWJpbGl0eVJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGN0VCODI0MUY5NTQxQjAwMEYxQUJDQiAvKiBJc29IZWFwSW1wbElubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0VCN0ZE
MUY5NTQxQUQwMEYxQUJDQiAvKiBJc29IZWFwSW1wbElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdFQjgyNTFGOTU0MUIwMDBGMUFC
Q0IgLyogRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3RUI3RkUxRjk1NDFBRDAwRjFBQkNCIC8qIERlZmVycmVk
VHJpZ2dlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTM3LDcgKzEzNSw2IEBACiAJCTY1OTlDNUNEMUVDM0YxNTkwMEEyRjdCQiAv
KiBBdmFpbGFibGVNZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1OTlDNUNCMUVDM0YxNTkwMEEyRjdCQiAvKiBBdmFpbGFibGVNZW1vcnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTM5ODg1
QjIwNzZFRUI2MDA3NEEyRTcgLyogQnVsa0RlY29tbWl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTM5ODg1QTIwNzZFRUI1MDA3NEEyRTcgLyogQnVs
a0RlY29tbWl0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzk1QUIzQzcyMDZFMEQzNDAwNzRGRTc2IC8qIFBoeXNpY2FsUGFnZU1hcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk1QUIzQzYyMDZFMEQy
NTAwNzRGRTc2IC8qIFBoeXNpY2FsUGFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDNTcxRUZGMjIzODhCMDgwMDc3QTNDNyAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0MkZDNjIxMjA5NjQwOUUwMEE5OTM2MiAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayAqLzsgfTsKIAkJN0M1NzFGMDEyMjM4OEI4NDAwNzdBM0M3IC8qIFN0ZExpYkV4dHJhcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1NzFGMDAyMjM4
OEI4NDAwNzdBM0M3IC8qIFN0ZExpYkV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEMDkzNDMzMUZDRjQwNkQwMEU4NUVCNSAvKiBCQ29t
cGlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
MDkzNDMyMUZDRjQwNTAwMEU4NUVCNSAvKiBCQ29tcGlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDE0QUQyOTIwMjUyOUM0MDA4OTBFM0Ig
LyogUHJvY2Vzc0NoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBRDE0QUQyNzIwMjUyOUE2MDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLmggKi87IH07
CkBAIC0xNTQsMTMgKzE1MSw2IEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KLQkJMEY3RUI3RjcxRjk1
NDEyOTAwRjFBQkNCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDE0NUY2ODM3MTc5REM0
NUYwMEQ2NTU5OCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IDE0RjI3MUJEMThFQTM5NjMwMDhDMTUyRjsKLQkJCXJlbW90
ZUluZm8gPSBibWFsbG9jOwotCQl9OwogCQkwRjdFQjg1NTFGOTU1MDU0MDBGMUFCQ0IgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OwogCQkJY29udGFpbmVyUG9ydGFsID0gMTQ1RjY4MzcxNzlEQzQ1RjAwRDY1NTk4IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOwpAQCAtMTc3LDE4ICsxNjcsNiBAQAogCQl9OwogLyogRW5kIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKLS8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwotCQkwRjdFQjdFRDFGOTUyODUzMDBGMUFCQ0IgLyogQ29weUZpbGVzICov
ID0gewotCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7Ci0JCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87Ci0JCQlk
c3RTdWJmb2xkZXJTcGVjID0gMDsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOwotCQl9OwotLyogRW5kIFBCWENvcHlGaWxlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwotCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KIAkJMEYyNkE3QTQyMDU0ODMwRDAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGVyUHJvY2Vzcy5jcHA7IHBhdGggPSBibWFs
bG9jL1BlclByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjUxNjc3
MzFGQUQ2ODUyMDA4MjM2QTggLyogYm1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBibWFsbG9jLmNwcDsgcGF0aCA9IGJtYWxsb2MvYm1hbGxvYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDIsOCArMTgwLDYgQEAKIAkJMEY1QkYxNzIx
RjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQkV4cG9ydC5oOyBw
YXRoID0gYm1hbGxvYy9CRXhwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NzRCOTNDMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ3J5cHRvUmFuZG9tLmg7IHBhdGggPSBibWFsbG9jL0NyeXB0b1Jh
bmRvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc0QjkzRDFGODk3MTNFMDBC
OTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENyeXB0b1JhbmRvbS5jcHA7IHBhdGggPSBibWFsbG9jL0NyeXB0b1JhbmRvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGN0VCN0VGMUY5NTI4NTMwMEYxQUJDQiAv
KiB0ZXN0Ym1hbGxvYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gdGVzdGJtYWxsb2M7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0J
CTBGN0VCN0YxMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSB0ZXN0Ym1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
N0VCN0ZDMUY5NTQxQUQwMEYxQUJDQiAvKiBFbGlnaWJpbGl0eVJlc3VsdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBFbGlnaWJpbGl0eVJlc3VsdC5oOyBwYXRoID0gYm1hbGxv
Yy9FbGlnaWJpbGl0eVJlc3VsdC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTBG
N0VCN0ZEMUY5NTQxQUQwMEYxQUJDQiAvKiBJc29IZWFwSW1wbElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSXNvSGVhcEltcGxJbmxpbmVzLmg7IHBhdGggPSBibWFs
bG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJ
CTBGN0VCN0ZFMUY5NTQxQUQwMEYxQUJDQiAvKiBEZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlZmVycmVkVHJpZ2dlcklubGluZXMuaDsg
cGF0aCA9IGJtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CkBAIC0zMjgsMTUgKzMwNCw2IEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5j
ZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KLQkJMEY3RUI3RUMxRjk1Mjg1MzAwRjFBQkNCIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk3QzU3MUVGRjIyMzg4QjA4MDA3N0EzQzcgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQkwRjdFQjdGQTFGOTU0MTRD
MDBGMUFCQ0IgLyogbGliYm1hbGxvYy5hIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAJCTE0Q0MzOTQxMThF
QTg3NDMwMDRBRkUzNCAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzU2LDE0
ICszMjMsNiBAQAogLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLwotCQkwRjdFQjdGMDFGOTUyODUzMDBGMUFCQ0Ig
LyogdGVzdCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
MEY3RUI3RjExRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jLmNwcCAqLywKLQkJCSk7Ci0J
CQlwYXRoID0gdGVzdDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTBGN0VC
N0Y5MUY5NTQxNEMwMEYxQUJDQiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQ1MSwxNCArNDEwLDEyIEBACiAJCQkJMEY3RUI3RkIx
Rjk1NDE2OTAwRjFBQkNCIC8qIGlzbyAqLywKIAkJCQkxNDVGNjg0MDE3OURDNDVGMDBENjU1OTgg
LyogUHJvZHVjdHMgKi8sCiAJCQkJMTREOURCNEYxN0YyODY4OTAwRUFBQjc5IC8qIHN0ZGxpYiAq
LywKLQkJCQkwRjdFQjdGMDFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdCAqLywKIAkJCSk7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQkxNDVGNjg0MDE3OURDNDVGMDBENjU1OTgg
LyogUHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTBGN0VCN0VGMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYyAqLywKIAkJCQkxNEYy
NzFCRTE4RUEzOTYzMDA4QzE1MkYgLyogbGliYm1hbGxvYy5hICovLAogCQkJCTE0Q0MzOTQ0MThF
QTg3NDMwMDRBRkUzNCAvKiBsaWJtYm1hbGxvYy5keWxpYiAqLywKIAkJCSk7CkBAIC03MDcsMjQg
KzY2NCw2IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwotCQkwRjdFQjdFRTFGOTUyODUzMDBGMUFC
Q0IgLyogdGVzdGJtYWxsb2MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY3RUI3RjYxRjk1Mjg1MzAwRjFBQkNCIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0Ym1hbGxvYyIgKi87
Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQkwRjdFQjdFQjFGOTUyODUzMDBGMUFCQ0IgLyogU291
cmNlcyAqLywKLQkJCQkwRjdFQjdFQzFGOTUyODUzMDBGMUFCQ0IgLyogRnJhbWV3b3JrcyAqLywK
LQkJCQkwRjdFQjdFRDFGOTUyODUzMDBGMUFCQ0IgLyogQ29weUZpbGVzICovLAotCQkJKTsKLQkJ
CWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTBGN0VCN0Y4
MUY5NTQxMjkwMEYxQUJDQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJCW5h
bWUgPSB0ZXN0Ym1hbGxvYzsKLQkJCXByb2R1Y3ROYW1lID0gdGVzdGJtYWxsb2M7Ci0JCQlwcm9k
dWN0UmVmZXJlbmNlID0gMEY3RUI3RUYxRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jICov
OwotCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKLQkJfTsK
IAkJMTRDQzM5NDMxOEVBODc0MzAwNEFGRTM0IC8qIG1ibWFsbG9jICovID0gewogCQkJaXNhID0g
UEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0Q0MzOTQ1MThF
QTg3NDMwMDRBRkUzNCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAibWJtYWxsb2MiICovOwpAQCAtNzY5LDEwICs3MDgsNiBAQAogCQkJCUxhc3RTd2lmdFVw
ZGF0ZUNoZWNrID0gMDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKIAkJCQlUYXJn
ZXRBdHRyaWJ1dGVzID0gewotCQkJCQkwRjdFQjdFRTFGOTUyODUzMDBGMUFCQ0IgPSB7Ci0JCQkJ
CQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA5LjA7Ci0JCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9
IE1hbnVhbDsKLQkJCQkJfTsKIAkJCQkJMEY3RUI4NTAxRjk1NTA0QjAwRjFBQkNCID0gewogCQkJ
CQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gOS4wOwogCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUg
PSBBdXRvbWF0aWM7CkBAIC03OTQsMjAgKzcyOSwxMSBAQAogCQkJCTBGN0VCODUwMUY5NTUwNEIw
MEYxQUJDQiAvKiBBbGwgKi8sCiAJCQkJMTRGMjcxQkQxOEVBMzk2MzAwOEMxNTJGIC8qIGJtYWxs
b2MgKi8sCiAJCQkJMTRDQzM5NDMxOEVBODc0MzAwNEFGRTM0IC8qIG1ibWFsbG9jICovLAotCQkJ
CTBGN0VCN0VFMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0Ym1hbGxvYyAqLywKIAkJCSk7CiAJCX07
CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KLQkJMEY3RUI3RUIxRjk1Mjg1MzAwRjFBQkNCIC8qIFNvdXJjZXMg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkwRjdFQjdGMjFGOTUyODUzMDBGMUFC
Q0IgLyogdGVzdGJtYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAJCTE0Q0MzOTQwMThFQTg3NDMw
MDRBRkUzNCAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtODU2LDExICs3ODIsNiBAQAog
LyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFy
Z2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCi0JCTBGN0VCN0Y4MUY5NTQxMjkwMEYxQUJDQiAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsK
LQkJCXRhcmdldCA9IDE0RjI3MUJEMThFQTM5NjMwMDhDMTUyRiAvKiBibWFsbG9jICovOwotCQkJ
dGFyZ2V0UHJveHkgPSAwRjdFQjdGNzFGOTU0MTI5MDBGMUFCQ0IgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovOwotCQl9OwogCQkwRjdFQjg1NjFGOTU1MDU0MDBGMUFCQ0IgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJn
ZXQgPSAxNEYyNzFCRDE4RUEzOTYzMDA4QzE1MkYgLyogYm1hbGxvYyAqLzsKQEAgLTg3NCwzMCAr
Nzk1LDYgQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCQkwRjdFQjdGMzFGOTUyODUzMDBG
MUFCQ0IgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMTRCNjUwQzcxOEYzOUY0ODAwNzUxOTY4IC8q
IERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0J
CX07Ci0JCTBGN0VCN0Y0MUY5NTI4NTMwMEYxQUJDQiAvKiBSZWxlYXNlICovID0gewotCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IDE0QjY1MEM3MThGMzlGNDgwMDc1MTk2OCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87Ci0J
CQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7
Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTBGN0VCN0Y1MUY5NTI4NTMwMEYx
QUJDQiAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDE0QjY1MEM1MThGMzlGNDgwMDc1MTk2
OCAvKiBCYXNlLnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNU
X05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwot
CQl9OwogCQkwRjdFQjg1MjFGOTU1MDRCMDBGMUFCQ0IgLyogRGVidWcgKi8gPSB7CiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC05OTIsMTYg
Kzg4OSw2IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLQkJMEY3RUI3RjYxRjk1Mjg1MzAw
RjFBQkNCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0
ZXN0Ym1hbGxvYyIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQkwRjdFQjdGMzFGOTUyODUzMDBGMUFCQ0IgLyogRGVi
dWcgKi8sCi0JCQkJMEY3RUI3RjQxRjk1Mjg1MzAwRjFBQkNCIC8qIFJlbGVhc2UgKi8sCi0JCQkJ
MEY3RUI3RjUxRjk1Mjg1MzAwRjFBQkNCIC8qIFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKIAkJMEY3RUI4NTExRjk1NTA0QjAwRjFBQkNCIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaAppbmRleCAzMGRmOGE2ZmIyYjk5
MDRhMDRmODRlMjM5NDI5Y2UyZDZjOGI0NmI5Li4xZDgyNGY0OWM3NjU3M2JjMzc3YjY3YmRjYjdj
ZGY1MTM4ZGJmMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVj
dG9yeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgQml0czxudW1QYWdlcz4gbV9lbXB0eTsKICAgICBC
aXRzPG51bVBhZ2VzPiBtX2NvbW1pdHRlZDsKICAgICBzdGQ6OmFycmF5PElzb1BhZ2U8Q29uZmln
PiosIG51bVBhZ2VzPiBtX3BhZ2VzOwotICAgIHVuc2lnbmVkIG1fZmlyc3RFbGlnaWJsZSB7IDAg
fTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0Rp
cmVjdG9yeUlubGluZXMuaAppbmRleCA2NDBkODJlMTIxZGQwMTVkOTdjMzc2Nzk3NGY4NmRmZjAx
MTc5YzU4Li5jYzBlNmE3ZGVmZTRmOGJmMGZlNjJhNDliNDFmMjdmNWZmY2YxODc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDggKzQ2
LDkgQEAgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpJc29EaXJlY3Rvcnko
SXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5z
aWduZWQgcGFzc2VkTnVtUGFnZXM+CiBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0RpcmVj
dG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUoKQogewotICAg
IHVuc2lnbmVkIHBhZ2VJbmRleCA9IChtX2VsaWdpYmxlIHwgfm1fY29tbWl0dGVkKS5maW5kQml0
KG1fZmlyc3RFbGlnaWJsZSwgdHJ1ZSk7Ci0gICAgbV9maXJzdEVsaWdpYmxlID0gcGFnZUluZGV4
OworICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9IChtX2VsaWdpYmxlIHwgfm1fY29tbWl0dGVkKS5m
aW5kQml0KG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHRydWUpOworICAgIG1fZmlyc3RF
bGlnaWJsZU9yRGVjb21taXR0ZWQgPSBwYWdlSW5kZXg7CisgICAgQkFTU0VSVCgobV9lbGlnaWJs
ZSB8IH5tX2NvbW1pdHRlZCkuZmluZEJpdCgwLCB0cnVlKSA9PSBwYWdlSW5kZXgpOwogICAgIGlm
IChwYWdlSW5kZXggPj0gbnVtUGFnZXMpCiAgICAgICAgIHJldHVybiBFbGlnaWJpbGl0eUtpbmQ6
OkZ1bGw7CiAKQEAgLTk3LDggKzk4LDggQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNz
ZWROdW1QYWdlcz46OmRpZEJlY29tZShJc29QYWdlPENvbmZpZz4qIHBhZ2UsIElzb1AKICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlcCBkaWQg
YmVjb21lIGVsaWdpYmxlLlxuIiwgdGhpcywgcGFnZSk7CiAgICAgICAgIG1fZWxpZ2libGVbcGFn
ZUluZGV4XSA9IHRydWU7Ci0gICAgICAgIG1fZmlyc3RFbGlnaWJsZSA9IHN0ZDo6bWluKG1fZmly
c3RFbGlnaWJsZSwgcGFnZUluZGV4KTsKLSAgICAgICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVs
aWdpYmxlKHRoaXMpOworICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkID0gc3Rk
OjptaW4obV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgcGFnZUluZGV4KTsKKyAgICAgICAg
dGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKHRoaXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBJc29QYWdlVHJpZ2dlcjo6RW1wdHk6CiAgICAgICAgIGlmICh2
ZXJib3NlKQpAQCAtMTIyLDYgKzEyMyw4IEBAIHZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFz
c2VkTnVtUGFnZXM+OjpkaWREZWNvbW1pdCh1bnNpZ25lZCBpbmRleCkKICAgICBCQVNTRVJUKCEh
bV9jb21taXR0ZWRbaW5kZXhdKTsKICAgICB0aGlzLT5tX2hlYXAuaXNOb0xvbmdlckZyZWVhYmxl
KG1fcGFnZXNbaW5kZXhdLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwogICAgIG1fY29tbWl0dGVk
W2luZGV4XSA9IGZhbHNlOworICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6
Om1pbihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCBpbmRleCk7CisgICAgdGhpcy0+bV9o
ZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKHRoaXMpOwogICAgIHRoaXMtPm1faGVh
cC5kaWREZWNvbW1pdChtX3BhZ2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oCmluZGV4IDllZDNjYzU0MWIxZjQ3MTZh
M2U2OTkwYmYxZmFjOWNhMmE5YjAyNDEuLjIyOGZhNTRjNDk3Yzk5ZWE5OTViMGQ1YTY0OWE0YTdl
MWVhMjIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw4ICs4
MCw4IEBAIHB1YmxpYzoKICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVs
aWdpYmxlKCk7CiAgICAgCiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gZGlyZWN0b3J5LgotICAgIHZv
aWQgZGlkQmVjb21lRWxpZ2libGUoSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGlu
ZURpcmVjdG9yeT4qKTsKLSAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlKElzb0RpcmVjdG9yeTxD
b25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+Kik7CisgICAgdm9pZCBk
aWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdl
c0luSW5saW5lRGlyZWN0b3J5PiopOworICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRlY29t
bWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1Q
YWdlcz4qKTsKICAgICAKICAgICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0
PiYpIG92ZXJyaWRlOwogCkBAIC0xMzQsOCArMTM0LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25leHREaXJlY3RvcnlQYWdlSW5kZXggeyAxIH07IC8vIFdlIHN0YXJ0IGF0IDEgc28gdGhh
dCB0aGUgaGlnaCB3YXRlciBtYXJrIGJlaW5nIHplcm8gbWVhbnMgd2UndmUgb25seSBhbGxvY2F0
ZWQgaW4gdGhlIGlubGluZSBkaXJlY3Rvcnkgc2luY2UgdGhlIGxhc3Qgc2NhdmVuZ2UuCiAgICAg
dW5zaWduZWQgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrIHsgMCB9OwogICAgIAotICAgIGJvb2wg
bV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlIHsgdHJ1ZSB9OwotICAgIElzb0RpcmVjdG9yeVBh
Z2U8Q29uZmlnPiogbV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5IHsgbnVsbHB0ciB9OworICAgIGJv
b2wgbV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCB7IHRydWUgfTsKKyAg
ICBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERp
cmVjdG9yeSB7IG51bGxwdHIgfTsKICAgICAKICAgICBJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25m
aWc+IG1fYWxsb2NhdG9yOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvSGVhcEltcGxJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBs
SW5saW5lcy5oCmluZGV4IGJhNDEwOTM1Mjc3YzkwZDdlNzcyMTVkYmJjZDllN2Y4NjBiZWY4Mjcu
LjAyNDRkNTM1NjNhNzIxZjk5ODRjN2IwOGYwZmJlODA5Mzg0NmU5NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDI2ICs0NCwyNiBAQCBJ
c29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFwSW1wbCgpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+CiBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0hlYXBJbXBsPENvbmZpZz46OnRha2VG
aXJzdEVsaWdpYmxlKCkKIHsKLSAgICBpZiAobV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlKSB7
CisgICAgaWYgKG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQpIHsKICAg
ICAgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBtX2lubGluZURpcmVjdG9y
eS50YWtlRmlyc3RFbGlnaWJsZSgpOwogICAgICAgICBpZiAocmVzdWx0LmtpbmQgPT0gRWxpZ2li
aWxpdHlLaW5kOjpGdWxsKQotICAgICAgICAgICAgbV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxl
ID0gZmFsc2U7CisgICAgICAgICAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29t
bWl0dGVkID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgIAotICAgIGlmICghbV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5KSB7CisgICAg
aWYgKCFtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkpIHsKICAgICAgICAgLy8g
SWYgbm90aGluZyBpcyBlbGlnaWJsZSwgaXQgY2FuIG9ubHkgYmUgYmVjYXVzZSB3ZSBoYXZlIG5v
IGRpcmVjdG9yaWVzLiBJdCB3b3VsZG4ndCBiZSB0aGUgZW5kCi0gICAgICAgIC8vIG9mIHRoZSB3
b3JsZCBpZiB3ZSBicm9rZSB0aGlzIGludmFyaWFudC4gSXQgd291bGQgb25seSBtZWFuIHRoYXQg
ZGlkQmVjb21lRWxpZ2libGUoKSB3b3VsZCBuZWVkCisgICAgICAgIC8vIG9mIHRoZSB3b3JsZCBp
ZiB3ZSBicm9rZSB0aGlzIGludmFyaWFudC4gSXQgd291bGQgb25seSBtZWFuIHRoYXQgZGlkQmVj
b21lRWxpZ2libGVPckRlY29tbWl0ZWQoKSB3b3VsZCBuZWVkCiAgICAgICAgIC8vIGEgbnVsbCBj
aGVjay4KICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX2hlYWREaXJlY3RvcnkpOwogICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeSk7CiAgICAgfQogICAgIAotICAgIGZv
ciAoOyBtX2ZpcnN0RWxpZ2libGVEaXJlY3Rvcnk7IG1fZmlyc3RFbGlnaWJsZURpcmVjdG9yeSA9
IG1fZmlyc3RFbGlnaWJsZURpcmVjdG9yeS0+bmV4dCkgewotICAgICAgICBFbGlnaWJpbGl0eVJl
c3VsdDxDb25maWc+IHJlc3VsdCA9IG1fZmlyc3RFbGlnaWJsZURpcmVjdG9yeS0+cGF5bG9hZC50
YWtlRmlyc3RFbGlnaWJsZSgpOworICAgIGZvciAoOyBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0
ZWREaXJlY3Rvcnk7IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9IG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+bmV4dCkgeworICAgICAgICBFbGlnaWJp
bGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERp
cmVjdG9yeS0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJsZSgpOwogICAgICAgICBpZiAocmVzdWx0
LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKSB7Ci0gICAgICAgICAgICBtX2RpcmVjdG9y
eUhpZ2hXYXRlcm1hcmsgPSBzdGQ6Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmssIG1fZmly
c3RFbGlnaWJsZURpcmVjdG9yeS0+aW5kZXgoKSk7CisgICAgICAgICAgICBtX2RpcmVjdG9yeUhp
Z2hXYXRlcm1hcmsgPSBzdGQ6Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmssIG1fZmlyc3RF
bGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+aW5kZXgoKSk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfQpAQCAtNzgsMjYgKzc4LDI2IEBAIEVsaWdpYmls
aXR5UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZpcnN0RWxpZ2libGUo
KQogICAgICAgICBtX3RhaWxEaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7CiAgICAgfQogICAgIG1f
ZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IG5ld0RpcmVjdG9yeS0+aW5kZXgoKTsKLSAgICBtX2Zp
cnN0RWxpZ2libGVEaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7CisgICAgbV9maXJzdEVsaWdpYmxl
T3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwogICAgIEVsaWdpYmlsaXR5UmVz
dWx0PENvbmZpZz4gcmVzdWx0ID0gbmV3RGlyZWN0b3J5LT5wYXlsb2FkLnRha2VGaXJzdEVsaWdp
YmxlKCk7CiAgICAgUkVMRUFTRV9CQVNTRVJUKHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2lu
ZDo6RnVsbCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZShJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiogZGlyZWN0b3J5KQordm9p
ZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29E
aXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiogZGlyZWN0b3J5KQog
ewogICAgIFJFTEVBU0VfQkFTU0VSVChkaXJlY3RvcnkgPT0gJm1faW5saW5lRGlyZWN0b3J5KTsK
LSAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGUgPSB0cnVlOworICAgIG1faXNJbmxpbmVE
aXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSB0cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxl
KElzb0RpcmVjdG9yeTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+
KiBkaXJlY3RvcnkpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxl
T3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmln
Pjo6bnVtUGFnZXM+KiBkaXJlY3RvcnkpCiB7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKG1fZmlyc3RF
bGlnaWJsZURpcmVjdG9yeSk7CisgICAgUkVMRUFTRV9CQVNTRVJUKG1fZmlyc3RFbGlnaWJsZU9y
RGVjb21taXRlZERpcmVjdG9yeSk7CiAgICAgYXV0byogZGlyZWN0b3J5UGFnZSA9IElzb0RpcmVj
dG9yeVBhZ2U8Q29uZmlnPjo6cGFnZUZvcihkaXJlY3RvcnkpOwotICAgIGlmIChkaXJlY3RvcnlQ
YWdlLT5pbmRleCgpIDwgbV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5LT5pbmRleCgpKQotICAgICAg
ICBtX2ZpcnN0RWxpZ2libGVEaXJlY3RvcnkgPSBkaXJlY3RvcnlQYWdlOworICAgIGlmIChkaXJl
Y3RvcnlQYWdlLT5pbmRleCgpIDwgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5
LT5pbmRleCgpKQorICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rvcnkg
PSBkaXJlY3RvcnlQYWdlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CkBAIC0xOTks
NiArMTk5LDcgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQodm9pZCogcHRy
LCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1fZm9vdHBy
aW50ICs9IGJ5dGVzOworCiAjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0VfTUFQCiAgICAgbV9waHlz
aWNhbFBhZ2VNYXAuY29tbWl0KHB0ciwgYnl0ZXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMUy5jcHAKaW5kZXggZGJjMGU3ZWJhM2EzMGFlMTM4NGYwMDk1YzBkNzEyNWY4NDI3YTE3My4u
YzIwMzIxM2I4NTViZGNkYzllZDA3OTZmZDIwNGFiNWQ5NDhkODAwNiAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvVExTLmNwcApAQCAtMTgzLDExICsxODMsMTMgQEAgdm9pZCBJc29UTFM6OmRldGVybWlu
ZU1hbGxvY0ZhbGxiYWNrU3RhdGUoKQogICAgICAgICAgICAgaWYgKHNfbWFsbG9jRmFsbGJhY2tT
dGF0ZSAhPSBNYWxsb2NGYWxsYmFja1N0YXRlOjpVbmRlY2lkZWQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0jaWYgR0lHQUNBR0VfRU5BQkxFRAorI2lmIEdJR0FDQUdFX0VOQUJMRUQgfHwg
QkNQVShBUk02NCkKKyNpZiAhQkNQVShBUk02NCkKICAgICAgICAgICAgIGlmICghR2lnYWNhZ2U6
OnNob3VsZEJlRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgc19tYWxsb2NGYWxsYmFja1N0
YXRlID0gTWFsbG9jRmFsbGJhY2tTdGF0ZTo6RmFsbEJhY2tUb01hbGxvYzsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGVudiA9IGdldGVudigiYm1hbGxvY19Jc29IZWFwIik7CiAgICAgICAgICAgICBpZiAoZW52
ICYmICghc3RyY2FzZWNtcChlbnYsICJmYWxzZSIpIHx8ICFzdHJjYXNlY21wKGVudiwgIm5vIikg
fHwgIXN0cmNtcChlbnYsICIwIikpKQogICAgICAgICAgICAgICAgIHNfbWFsbG9jRmFsbGJhY2tT
dGF0ZSA9IE1hbGxvY0ZhbGxiYWNrU3RhdGU6OkZhbGxCYWNrVG9NYWxsb2M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Byb2Nlc3NDaGVjay5tbSBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvUHJvY2Vzc0NoZWNrLm1tCmluZGV4IDkwZmRjM2JhM2JlMGQ3N2M2MWRjN2Q5MDg1
NmViODA4OTNjYzlhMGIuLjNiYjYzZjM1MjU0Mjk4OThiMDk5NGNjODUxNzkzYjUxOTVmNTJiMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUHJvY2Vzc0NoZWNrLm1tCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUHJvY2Vzc0NoZWNrLm1tCkBAIC00Niw3ICs0Niw4IEBA
IGJvb2wgZ2lnYWNhZ2VFbmFibGVkRm9yUHJvY2VzcygpCiAgICAgYm9vbCBpc09wdEluQmluYXJ5
ID0gW3Byb2Nlc3NOYW1lIGlzRXF1YWxUb1N0cmluZzpAImpzYyJdCiAgICAgICAgIHx8IFtwcm9j
ZXNzTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJEdW1wUmVuZGVyVHJlZSJdCiAgICAgICAgIHx8IFtw
cm9jZXNzTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJ3YXNtIl0KLSAgICAgICAgfHwgW3Byb2Nlc3NO
YW1lIGhhc1ByZWZpeDpAInRlc3QiXTsKKyAgICAgICAgfHwgW3Byb2Nlc3NOYW1lIGhhc1ByZWZp
eDpAInRlc3QiXQorICAgICAgICB8fCBbcHJvY2Vzc05hbWUgaGFzUHJlZml4OkAiVGVzdCJdOwog
CiAgICAgcmV0dXJuIGlzT3B0SW5CaW5hcnk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy90ZXN0L3Rlc3RibWFsbG9jLmNwcCBiL1NvdXJjZS9ibWFsbG9jL3Rlc3QvdGVzdGJtYWxsb2Mu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzZiYzE2MmFlZjNjYzVjY2JhOGJi
NWY1Yjc3ZjFmMmIxYWVhNTFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9ibWFsbG9jL3Rlc3QvdGVzdGJtYWxsb2MuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMzQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgotI2luY2x1ZGUgPGJtYWxs
b2MvRW52aXJvbm1lbnQuaD4KLSNpbmNsdWRlIDxibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5j
bHVkZSA8dmVjdG9yPgotCi11c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsKLXVzaW5nIG5hbWVzcGFj
ZSBibWFsbG9jOjphcGk7Ci0KLS8vIFdlIGRvbid0IGhhdmUgYSBOT19SRVRVUk5fRFVFX1RPX0VY
SVQsIG5vciBzaG91bGQgd2UuIFRoYXQncyByaWRpY3Vsb3VzLgotc3RhdGljIGJvb2wgaGlkZGVu
VHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCgpIHsgcmV0dXJuIHRydWU7IH0KLQotc3RhdGlj
IHZvaWQgdXNhZ2UoKQotewotICAgIHB1dHMoIlVzYWdlOiB0ZXN0YjMgWzxmaWx0ZXI+XSIpOwot
ICAgIGlmIChoaWRkZW5UcnV0aEJlY2F1c2VOb1JldHVybklzU3R1cGlkKCkpCi0gICAgICAgIGV4
aXQoMSk7Ci19Ci0KLSNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgcHV0cygjdGVzdCAiLi4uIik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVz
dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcHV0cygjdGVz
dCAiOiBPSyEiKTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQot
Ly8gTm90aGluZyBmYW5jeSBmb3Igbm93OyB3ZSBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgV1RGIGFz
c2VydGlvbiBtYWNoaW5lcnkuCi0jZGVmaW5lIENIRUNLKHgpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICghISh4KSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IGluICVzOiBh
c3NlcnRpb24gJXMgZmFpbGVkLlxuIiwgICAgICAgICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywg
X19MSU5FX18sIF9fUFJFVFRZX0ZVTkNUSU9OX18sICN4KTsgICAgICAgICAgICAgICBcCi0gICAg
ICAgIGFib3J0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLXN0YXRpYyBzdGQ6OnNldDx2b2lk
Kj4gdG9wdHJzZXQoY29uc3Qgc3RkOjp2ZWN0b3I8dm9pZCo+JiBwdHJzKQotewotICAgIHN0ZDo6
c2V0PHZvaWQqPiByZXN1bHQ7Ci0gICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKSB7Ci0gICAgICAg
IGlmIChwdHIpCi0gICAgICAgICAgICByZXN1bHQuaW5zZXJ0KHB0cik7Ci0gICAgfQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGFzc2VydEVtcHR5UG9pbnRlclNldChjb25z
dCBzdGQ6OnNldDx2b2lkKj4mIHBvaW50ZXJzKQotewotICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0
KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7Ci0gICAgICAgIHByaW50ZigiICAgIHNraXBwaW5n
IGNoZWNrcyBiZWNhdXNlIERlYnVnSGVhcC5cbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmIChwb2ludGVycy5lbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcHJpbnRmKCJQ
b2ludGVyIHNldCBub3QgZW1wdHkhXG4iKTsKLSAgICBwcmludGYoIlBvaW50ZXJzOiIpOwotICAg
IGZvciAodm9pZCogcHRyIDogcG9pbnRlcnMpCi0gICAgICAgIHByaW50ZigiICVwIiwgcHRyKTsK
LSAgICBwcmludGYoIlxuIik7Ci0gICAgQ0hFQ0socG9pbnRlcnMuZW1wdHkoKSk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIGhlYXBUeXBlPgotc3RhdGljIHZvaWQgYXNzZXJ0SGFzT2JqZWN0cyhJ
c29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZXJzKQotewotICAg
IGlmIChFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7Ci0gICAgICAg
IHByaW50ZigiICAgIHNraXBwaW5nIGNoZWNrcyBiZWNhdXNlIERlYnVnSGVhcC5cbiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgIGltcGwuZm9yRWFj
aExpdmVPYmplY3QoCi0gICAgICAgIFsmXSAodm9pZCogb2JqZWN0KSB7Ci0gICAgICAgICAgICBw
b2ludGVycy5lcmFzZShvYmplY3QpOwotICAgICAgICB9KTsKLSAgICBhc3NlcnRFbXB0eVBvaW50
ZXJTZXQocG9pbnRlcnMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBoZWFwVHlwZT4KLXN0YXRp
YyB2b2lkIGFzc2VydEhhc09ubHlPYmplY3RzKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBzdGQ6
OnNldDx2b2lkKj4gcG9pbnRlcnMpCi17Ci0gICAgaWYgKEVudmlyb25tZW50OjpnZXQoKS0+aXNE
ZWJ1Z0hlYXBFbmFibGVkKCkpIHsKLSAgICAgICAgcHJpbnRmKCIgICAgc2tpcHBpbmcgY2hlY2tz
IGJlY2F1c2UgRGVidWdIZWFwLlxuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2Vy
KGltcGwubG9jayk7Ci0gICAgaW1wbC5mb3JFYWNoTGl2ZU9iamVjdCgKLSAgICAgICAgWyZdICh2
b2lkKiBvYmplY3QpIHsKLSAgICAgICAgICAgIENIRUNLKHBvaW50ZXJzLmVyYXNlKG9iamVjdCkg
PT0gMSk7Ci0gICAgICAgIH0pOwotICAgIGFzc2VydEVtcHR5UG9pbnRlclNldChwb2ludGVycyk7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIGhlYXBUeXBlPgotc3RhdGljIHZvaWQgYXNzZXJ0Q2xl
YW4oSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXApCi17Ci0gICAgc2NhdmVuZ2VUaGlzVGhyZWFkKCk7
Ci0gICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICAgICAgewotICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgICAgIENI
RUNLKCFpbXBsLm51bUxpdmVPYmplY3RzKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGhlYXAu
c2NhdmVuZ2UoKTsKLSAgICBpZiAoIUVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFi
bGVkKCkpIHsKLSAgICAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBDSEVDSyghaW1w
bC5udW1Db21taXR0ZWRQYWdlcygpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29T
aW1wbGUoKQotewotICAgIHN0YXRpYyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKLSAgICB2b2lkKiBw
dHIxID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgIENIRUNLKHB0cjEpOwotICAgIHZvaWQqIHB0cjIg
PSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgQ0hFQ0socHRyMik7Ci0gICAgQ0hFQ0socHRyMSAhPSBw
dHIyKTsKLSAgICBDSEVDSyhzdGQ6OmFicyhzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMSkgLSBzdGF0
aWNfY2FzdDxjaGFyKj4ocHRyMikpID49IDgpOwotICAgIGFzc2VydEhhc09iamVjdHMoaGVhcCwg
e3B0cjEsIHB0cjJ9KTsKLSAgICBoZWFwLmRlYWxsb2NhdGUocHRyMSk7Ci0gICAgaGVhcC5kZWFs
bG9jYXRlKHB0cjIpOwotICAgIGFzc2VydENsZWFuKGhlYXApOwotfQotCi1zdGF0aWMgdm9pZCB0
ZXN0SXNvU2ltcGxlU2NhdmVuZ2VCZWZvcmVEZWFsbG9jKCkKLXsKLSAgICBzdGF0aWMgSXNvSGVh
cDxkb3VibGU+IGhlYXA7Ci0gICAgdm9pZCogcHRyMSA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICBD
SEVDSyhwdHIxKTsKLSAgICB2b2lkKiBwdHIyID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgIENIRUNL
KHB0cjIpOwotICAgIENIRUNLKHB0cjEgIT0gcHRyMik7Ci0gICAgQ0hFQ0soc3RkOjphYnMoc3Rh
dGljX2Nhc3Q8Y2hhcio+KHB0cjEpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjIpKSA+PSA4KTsK
LSAgICBzY2F2ZW5nZVRoaXNUaHJlYWQoKTsKLSAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFw
LCB7cHRyMSwgcHRyMn0pOwotICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIxKTsKLSAgICBoZWFwLmRl
YWxsb2NhdGUocHRyMik7Ci0gICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHRlc3RJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlcygpCi17Ci0gICAgc3RhdGljIElzb0hlYXA8
ZG91YmxlPiBoZWFwOwotICAgIHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDEwMDAwMDsgaS0tOykgewotICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9j
YXRlKCk7Ci0gICAgICAgIENIRUNLKHB0cik7Ci0gICAgICAgIHB0cnMucHVzaF9iYWNrKHB0cik7
Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAy
KSB7Ci0gICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKLSAgICAgICAgcHRyc1tpXSA9
IG51bGxwdHI7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IHB0cnMuc2l6ZSgpIC8gMjsg
aS0tOykKLSAgICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKLSAgICBmb3Ig
KHZvaWQqIHB0ciA6IHB0cnMpCi0gICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwotICAgIGFz
c2VydENsZWFuKGhlYXApOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0SXNvRmxpcEZsb3BGcmFnbWVu
dGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlKCkKLXsKLSAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+
IGhlYXA7Ci0gICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMTAwMDAwOyBpLS07KSB7Ci0gICAgICAgIHZvaWQqIHB0ciA9IGhlYXAuYWxsb2NhdGUoKTsK
LSAgICAgICAgQ0hFQ0socHRyKTsKLSAgICAgICAgcHRycy5wdXNoX2JhY2socHRyKTsKLSAgICB9
Ci0gICAgQ0hFQ0sodG9wdHJzZXQocHRycykuc2l6ZSgpID09IHB0cnMuc2l6ZSgpKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHRycy5zaXplKCk7IGkgKz0gMikgewotICAgICAgICBo
ZWFwLmRlYWxsb2NhdGUocHRyc1tpXSk7Ci0gICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwotICAg
IH0KLSAgICBoZWFwLnNjYXZlbmdlKCk7Ci0gICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNC
ZWZvcmU7Ci0gICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgbnVtQ29tbWl0
dGVkUGFnZXNCZWZvcmUgPSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQotICAgIGFz
c2VydEhhc09ubHlPYmplY3RzKGhlYXAsIHRvcHRyc2V0KHB0cnMpKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBwdHJzLnNpemUoKSAvIDI7IGktLTspCi0gICAgICAgIHB0cnMucHVzaF9iYWNrKGhl
YXAuYWxsb2NhdGUoKSk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxv
Y2tlcihpbXBsLmxvY2spOwotICAgICAgICBDSEVDSyhudW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9
PSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwotICAgIH0KLSAgICBmb3IgKHZvaWQqIHB0ciA6
IHB0cnMpCi0gICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwotICAgIGFzc2VydENsZWFuKGhl
YXApOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0SXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2
ZW5nZUluTWlkZGxlMjg4KCkKLXsKLSAgICBzdGF0aWMgSXNvSGVhcDxjaGFyWzI4OF0+IGhlYXA7
Ci0gICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTAw
MDAwOyBpLS07KSB7Ci0gICAgICAgIHZvaWQqIHB0ciA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICAg
ICAgQ0hFQ0socHRyKTsKLSAgICAgICAgcHRycy5wdXNoX2JhY2socHRyKTsKLSAgICB9Ci0gICAg
Q0hFQ0sodG9wdHJzZXQocHRycykuc2l6ZSgpID09IHB0cnMuc2l6ZSgpKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcHRycy5zaXplKCk7IGkgKz0gMikgewotICAgICAgICBoZWFwLmRl
YWxsb2NhdGUocHRyc1tpXSk7Ci0gICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwotICAgIH0KLSAg
ICBoZWFwLnNjYXZlbmdlKCk7Ci0gICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmU7
Ci0gICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgbnVtQ29tbWl0dGVkUGFn
ZXNCZWZvcmUgPSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQotICAgIGFzc2VydEhh
c09ubHlPYmplY3RzKGhlYXAsIHRvcHRyc2V0KHB0cnMpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSBwdHJzLnNpemUoKSAvIDI7IGktLTspCi0gICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxs
b2NhdGUoKSk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihp
bXBsLmxvY2spOwotICAgICAgICBDSEVDSyhudW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9PSBpbXBs
Lm51bUNvbW1pdHRlZFBhZ2VzKCkpOwotICAgIH0KLSAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMp
Ci0gICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwotICAgIGFzc2VydENsZWFuKGhlYXApOwot
fQotCi1zdGF0aWMgdm9pZCB0ZXN0SXNvTWFsbG9jQW5kRnJlZUZhc3QoKQotewotICAgIHN0YXRp
YyBJc29IZWFwPGNoYXJbMjU2XT4gaGVhcDsKLSAgICB2b2lkKiBwdHIgPSBudWxscHRyOwotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKLSAgICAgICAgcHRyID0gaGVhcC5hbGxv
Y2F0ZSgpOwotICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKLSAgICB9Ci0gICAgQ0hFQ0so
IUlzb1BhZ2VCYXNlOjpwYWdlRm9yKHB0ciktPmlzU2hhcmVkKCkpOwotfQotCi1jbGFzcyBCaXNv
TWFsbG9jZWQgewotICAgIE1BS0VfQklTT19NQUxMT0NFRChCaXNvTWFsbG9jZWQsIEJOT0VYUE9S
VCk7Ci1wdWJsaWM6Ci0gICAgQmlzb01hbGxvY2VkKGludCB4LCBmbG9hdCB5KQotICAgICAgICA6
IHgoeCkKLSAgICAgICAgLCB5KHkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBpbnQgeDsKLSAg
ICBmbG9hdCB5OwotfTsKLQotTUFLRV9CSVNPX01BTExPQ0VEX0lNUEwoQmlzb01hbGxvY2VkKTsK
LQotc3RhdGljIHZvaWQgdGVzdEJpc29NYWxsb2NlZCgpCi17Ci0gICAgQmlzb01hbGxvY2VkKiBw
dHIgPSBuZXcgQmlzb01hbGxvY2VkKDQsIDUpOwotICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01h
bGxvY2VkOjpiaXNvSGVhcCgpLCB7IHB0ciB9KTsKLSAgICBkZWxldGUgcHRyOwotICAgIGFzc2Vy
dENsZWFuKEJpc29NYWxsb2NlZDo6Ymlzb0hlYXAoKSk7Ci19Ci0KLWNsYXNzIEJpc29NYWxsb2Nl
ZElubGluZSB7Ci0gICAgTUFLRV9CSVNPX01BTExPQ0VEX0lOTElORShCaXNvTWFsbG9jZWQpOwot
cHVibGljOgotICAgIEJpc29NYWxsb2NlZElubGluZShpbnQgeCwgZmxvYXQgeSkKLSAgICAgICAg
OiB4KHgpCi0gICAgICAgICwgeSh5KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgaW50IHg7Ci0g
ICAgZmxvYXQgeTsKLX07Ci0KLXN0YXRpYyB2b2lkIHRlc3RCaXNvTWFsbG9jZWRJbmxpbmUoKQot
ewotICAgIEJpc29NYWxsb2NlZElubGluZSogcHRyID0gbmV3IEJpc29NYWxsb2NlZElubGluZSg0
LCA1KTsKLSAgICBhc3NlcnRIYXNPYmplY3RzKEJpc29NYWxsb2NlZElubGluZTo6Ymlzb0hlYXAo
KSwgeyBwdHIgfSk7Ci0gICAgZGVsZXRlIHB0cjsKLSAgICBhc3NlcnRDbGVhbihCaXNvTWFsbG9j
ZWRJbmxpbmU6OmJpc29IZWFwKCkpOwotfQotCi1zdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQotewotICAgIGF1dG8gc2hvdWxkUnVuID0gWyZdIChjb25zdCBjaGFyKiB0ZXN0TmFt
ZSkgLT4gYm9vbCB7Ci0gICAgICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0
TmFtZSwgZmlsdGVyKTsKLSAgICB9OwotICAgIAotICAgIFJVTih0ZXN0SXNvU2ltcGxlKCkpOwot
ICAgIFJVTih0ZXN0SXNvU2ltcGxlU2NhdmVuZ2VCZWZvcmVEZWFsbG9jKCkpOwotICAgIFJVTih0
ZXN0SXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXMoKSk7Ci0gICAgUlVOKHRlc3RJc29GbGlwRmxv
cEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUoKSk7Ci0gICAgUlVOKHRlc3RJc29GbGlw
RmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUyODgoKSk7Ci0gICAgUlVOKHRlc3RJ
c29NYWxsb2NBbmRGcmVlRmFzdCgpKTsKLSAgICBSVU4odGVzdEJpc29NYWxsb2NlZCgpKTsKLSAg
ICBSVU4odGVzdEJpc29NYWxsb2NlZElubGluZSgpKTsKLSAgICAKLSAgICBwdXRzKCJTdWNjZXNz
ISIpOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgY29uc3Qg
Y2hhciogZmlsdGVyID0gbnVsbHB0cjsKLSAgICBzd2l0Y2ggKGFyZ2MpIHsKLSAgICBjYXNlIDE6
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgZmlsdGVyID0gYXJndlsxXTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIAotICAgIHJ1bihmaWx0ZXIpOwotICAgIHJldHVybiAwOwotfQot
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDRi
MGM1YzdiNDhmZmM3NjJiY2Q5NGM5Zjg1ZmE1MTRmNGRlZjYwYy4uNTdlNTYyYTZmOWI5Zjk4YmY0
YjEwMTQzOGI2NmY3OTgyZjExNjg3NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA1LTMwICBLZWl0aCBNaWxs
ZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzb0hlYXBzIGRvbid0IG5v
dGljZSB1bmNvbW1pdHRlZCBWQSBiZWNvbWluZyB0aGUgZmlyc3QgZWxpZ2libGUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRlc3RibWFsbG9j
LmNwcCB0byBUZXN0V1RGIHNvIGl0IHJ1bnMgaW4gYXV0b21hdGlvbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvYm1hbGxvYy90ZXN0L3Rlc3RibWFsbG9jLmNwcC4KKyAgICAgICAgKFRF
U1QpOgorCiAyMDE5LTA1LTI4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbZXdzLWJ1aWxkXSBSZW1vdmUgdW51c2VkIGJ1aWxkYm90IHRhYnMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNTdhYTdkMTgyZThmY2YwMDUzOTBlMjJiNjU0ZjMwNjA0NWU5
YzM3Zi4uZDJiNWQ4M2YwMjdiMWU4OTg3YzE5OGVjMDllZjlkYjA5YTY0Nzc1OSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTI2OCw2ICsyNjgsNyBAQAogCQk1MzY3NzAzNDFDQzgwMjI4MDBE
NDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzY3NzAzMzFDQzgwMjI4MDBENDI1QjEgLyog
V2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi87IH07CiAJCTUzNjc3MDM2MUNDODFCNjEw
MEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkw
MEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VD
MjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkg
LyogUHJpb3JpdHlRdWV1ZS5jcHAgKi87IH07CisJCTUzRkNERTZCMjI5RUZGQjkwMDU5OEVDRiAv
KiBJc29IZWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRkNERTZBMjI5RUZGQjkwMDU5OEVDRiAvKiBJc29IZWFwLmNwcCAqLzsgfTsKIAkJNTUy
MjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTIyNkEy
RTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovOyB9Owog
CQk1NTk3RjgzNjFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgzNDFE
OTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi87IH07CiAJCTU1
QTgxN0ZDMjE4MTAwRTAwMDA0QTM5QSAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTgxN0ZC
MjE4MTAwRTAwMDA0QTM5QSAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSAqLzsg
fTsKQEAgLTE2OTcsNiArMTY5OCw3IEBACiAJCTUzNjc3MDMzMUNDODAyMjgwMEQ0MjVCMSAvKiBX
ZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzY3NzAzNTFDQzgxMkY5MDBENDI1QjEgLyogV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdlYlNjcmlw
dE9iamVjdERlc2NyaXB0aW9uLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
RUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW9yaXR5UXVldWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1M0ZDREU2QTIyOUVGRkI5MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJc29IZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2Uu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLWltYWdl
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgzNDFEOTU5NkM4MDA2
NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTVBODE3RkIyMTgxMDBFMDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbFN1
cHBvcnRlZEltYWdlVHlwZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODQ4
LDYgKzI4NTAsMTQgQEAKIAkJCXBhdGggPSBXZWJDb3JlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJNTNGQ0RFNjkyMjlFRkY2ODAwNTk4RUNGIC8qIGJtYWxsb2MgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUzRkNERTZBMjI5RUZG
QjkwMDU5OEVDRiAvKiBJc29IZWFwLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gYm1hbGxvYzsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTc1NjA5MTc2MTkyNTlDNTkwMDlF
RjA2RSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMzMyMyw2ICszMzMzLDcgQEAKIAkJQkM5MDk2NDYxMjU1NjE4OTAwMDgzNzU2IC8qIFdURiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTNGQ0RFNjky
MjlFRkY2ODAwNTk4RUNGIC8qIGJtYWxsb2MgKi8sCiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5
OEYyIC8qIGNmICovLAogCQkJCUUzQzIxQTc4MjFCMjVDODIwMDNCMzFBMyAvKiBjb2NvYSAqLywK
IAkJCQk3Q0JCQTA3NTE5QkI4QTA5MDBCQkYwMjUgLyogZGFyd2luICovLApAQCAtMzk2NCw2ICsz
OTc1LDcgQEAKIAkJCQk3QzgzREVEMjFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaE1hcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREVENDFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaFNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFMDFEMEE1OTBDMDBGRUJDRjMgLyogSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1M0ZDREU2QjIyOUVGRkI5
MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0VCNjJBQjIyMzYw
OURFMDA2OUNCQjAgLyogSXRlcmF0b3JSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTA1
MDk0MTFGQjlGMDY0MDBCMzNGQjggLyogSlNPTlZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzMUMxRDhFMURGOEVGNzIwMDZFOTc5RiAvKiBMRUJEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29I
ZWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMThiY2MyYjE5MDUwMTNlZDU4YmE4MTk3NGQ4YzI4MGRjMDlkOGQ4Zgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2Mv
SXNvSGVhcC5jcHAKQEAgLTAsMCArMSwzNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmICFVU0UoU1lTVEVNX01BTExPQykKKworI2luY2x1ZGUgPGJtYWxs
b2MvYm1hbGxvYy5oPgorI2luY2x1ZGUgPGJtYWxsb2MvRW52aXJvbm1lbnQuaD4KKyNpbmNsdWRl
IDxibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg+CisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRl
IDxjc3RkbGliPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3VzaW5nIG5h
bWVzcGFjZSBibWFsbG9jOwordXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M6OmFwaTsKKworI2RlZmlu
ZSBSVU4odGVzdCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAoraWYgKCFzaG91bGRS
dW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKK2JyZWFrOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKK3B1dHMoI3Rlc3QgIi4uLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCit0
ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorcHV0cygjdGVzdCAiOiBP
SyEiKTsgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKGZhbHNlKQorCisvLyBOb3RoaW5n
IGZhbmN5IGZvciBub3c7IHdlIGp1c3QgdXNlIHRoZSBleGlzdGluZyBXVEYgYXNzZXJ0aW9uIG1h
Y2hpbmVyeS4KKyNkZWZpbmUgQ0hFQ0soeCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2lmICghISh4KSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiticmVhazsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitmcHJpbnRmKHN0ZGVy
ciwgIiVzOiVkOiBpbiAlczogYXNzZXJ0aW9uICVzIGZhaWxlZC5cbiIsICAgICAgICAgXAorX19G
SUxFX18sIF9fTElORV9fLCBfX1BSRVRUWV9GVU5DVElPTl9fLCAjeCk7ICAgICAgICAgICAgICAg
XAorYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKK30gd2hpbGUgKGZhbHNlKQorCitzdGF0aWMgc3RkOjpzZXQ8dm9pZCo+IHRv
cHRyc2V0KGNvbnN0IHN0ZDo6dmVjdG9yPHZvaWQqPiYgcHRycykKK3sKKyAgICBzdGQ6OnNldDx2
b2lkKj4gcmVzdWx0OworICAgIGZvciAodm9pZCogcHRyIDogcHRycykgeworICAgICAgICBpZiAo
cHRyKQorICAgICAgICAgICAgcmVzdWx0Lmluc2VydChwdHIpOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBhc3NlcnRFbXB0eVBvaW50ZXJTZXQoY29uc3Qgc3Rk
OjpzZXQ8dm9pZCo+JiBwb2ludGVycykKK3sKKyAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgpLT5p
c0RlYnVnSGVhcEVuYWJsZWQoKSkgeworICAgICAgICBwcmludGYoIiAgICBza2lwcGluZyBjaGVj
a3MgYmVjYXVzZSBEZWJ1Z0hlYXAuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAocG9pbnRlcnMuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHByaW50ZigiUG9pbnRl
ciBzZXQgbm90IGVtcHR5IVxuIik7CisgICAgcHJpbnRmKCJQb2ludGVyczoiKTsKKyAgICBmb3Ig
KHZvaWQqIHB0ciA6IHBvaW50ZXJzKQorICAgICAgICBwcmludGYoIiAlcCIsIHB0cik7CisgICAg
cHJpbnRmKCJcbiIpOworICAgIENIRUNLKHBvaW50ZXJzLmVtcHR5KCkpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBoZWFwVHlwZT4KK3N0YXRpYyB2b2lkIGFzc2VydEhhc09iamVjdHMoSXNvSGVh
cDxoZWFwVHlwZT4mIGhlYXAsIHN0ZDo6c2V0PHZvaWQqPiBwb2ludGVycykKK3sKKyAgICBpZiAo
RW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgeworICAgICAgICBwcmlu
dGYoIiAgICBza2lwcGluZyBjaGVja3MgYmVjYXVzZSBEZWJ1Z0hlYXAuXG4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CisgICAgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKKyAgICBpbXBsLmZvckVhY2hMaXZl
T2JqZWN0KAorICAgICAgICBbJl0gKHZvaWQqIG9iamVjdCkgeworICAgICAgICAgICAgcG9pbnRl
cnMuZXJhc2Uob2JqZWN0KTsKKyAgICAgICAgfSk7CisgICAgYXNzZXJ0RW1wdHlQb2ludGVyU2V0
KHBvaW50ZXJzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+CitzdGF0aWMgdm9p
ZCBhc3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8
dm9pZCo+IHBvaW50ZXJzKQoreworICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdI
ZWFwRW5hYmxlZCgpKSB7CisgICAgICAgIHByaW50ZigiICAgIHNraXBwaW5nIGNoZWNrcyBiZWNh
dXNlIERlYnVnSGVhcC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGlt
cGwgPSBoZWFwLmltcGwoKTsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBs
LmxvY2spOworICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCisgICAgICAgIFsmXSAodm9pZCog
b2JqZWN0KSB7CisgICAgICAgICAgICBDSEVDSyhwb2ludGVycy5lcmFzZShvYmplY3QpID09IDEp
OworICAgICAgICB9KTsKKyAgICBhc3NlcnRFbXB0eVBvaW50ZXJTZXQocG9pbnRlcnMpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBoZWFwVHlwZT4KK3N0YXRpYyB2b2lkIGFzc2VydENsZWFuKElz
b0hlYXA8aGVhcFR5cGU+JiBoZWFwKQoreworICAgIHNjYXZlbmdlVGhpc1RocmVhZCgpOworICAg
IGlmICghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgeworICAgICAg
ICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgICAgICAgICBDSEVDSygh
aW1wbC5udW1MaXZlT2JqZWN0cygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBoZWFwLnNjYXZl
bmdlKCk7CisgICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgp
KSB7CisgICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKKyAgICAgICAgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKKyAgICAgICAgQ0hFQ0soIWltcGwubnVt
Q29tbWl0dGVkUGFnZXMoKSk7CisgICAgfQorfQorCitURVNUKGJtYWxsb2MsIElzb1NpbXBsZSkK
K3sKKyAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhlYXA7CisgICAgdm9pZCogcHRyMSA9IGhl
YXAuYWxsb2NhdGUoKTsKKyAgICBDSEVDSyhwdHIxKTsKKyAgICB2b2lkKiBwdHIyID0gaGVhcC5h
bGxvY2F0ZSgpOworICAgIENIRUNLKHB0cjIpOworICAgIENIRUNLKHB0cjEgIT0gcHRyMik7Cisg
ICAgQ0hFQ0soc3RkOjphYnMoc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjEpIC0gc3RhdGljX2Nhc3Q8
Y2hhcio+KHB0cjIpKSA+PSA4KTsKKyAgICBhc3NlcnRIYXNPYmplY3RzKGhlYXAsIHtwdHIxLCBw
dHIyfSk7CisgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEpOworICAgIGhlYXAuZGVhbGxvY2F0ZShw
dHIyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJc29TaW1w
bGVTY2F2ZW5nZUJlZm9yZURlYWxsb2MpCit7CisgICAgc3RhdGljIElzb0hlYXA8ZG91YmxlPiBo
ZWFwOworICAgIHZvaWQqIHB0cjEgPSBoZWFwLmFsbG9jYXRlKCk7CisgICAgQ0hFQ0socHRyMSk7
CisgICAgdm9pZCogcHRyMiA9IGhlYXAuYWxsb2NhdGUoKTsKKyAgICBDSEVDSyhwdHIyKTsKKyAg
ICBDSEVDSyhwdHIxICE9IHB0cjIpOworICAgIENIRUNLKHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNo
YXIqPihwdHIxKSAtIHN0YXRpY19jYXN0PGNoYXIqPihwdHIyKSkgPj0gOCk7CisgICAgc2NhdmVu
Z2VUaGlzVGhyZWFkKCk7CisgICAgYXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwge3B0cjEsIHB0
cjJ9KTsKKyAgICBoZWFwLmRlYWxsb2NhdGUocHRyMSk7CisgICAgaGVhcC5kZWFsbG9jYXRlKHB0
cjIpOworICAgIGFzc2VydENsZWFuKGhlYXApOworfQorCitURVNUKGJtYWxsb2MsIElzb0ZsaXBG
bG9wRnJhZ21lbnRlZFBhZ2VzKQoreworICAgIHN0YXRpYyBJc29IZWFwPGRvdWJsZT4gaGVhcDsK
KyAgICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxMDAw
MDA7IGktLTspIHsKKyAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgICAg
ICBDSEVDSyhwdHIpOworICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOworICAgIH0KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHRycy5zaXplKCk7IGkgKz0gMikgeworICAgICAgICBo
ZWFwLmRlYWxsb2NhdGUocHRyc1tpXSk7CisgICAgICAgIHB0cnNbaV0gPSBudWxscHRyOworICAg
IH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBwdHJzLnNpemUoKSAvIDI7IGktLTspCisgICAgICAg
IHB0cnMucHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7CisgICAgZm9yICh2b2lkKiBwdHIgOiBw
dHJzKQorICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFw
KTsKK30KKworVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdl
SW5NaWRkbGUpCit7CisgICAgc3RhdGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOworICAgIHN0ZDo6
dmVjdG9yPHZvaWQqPiBwdHJzOworICAgIGZvciAodW5zaWduZWQgaSA9IDEwMDAwMDsgaS0tOykg
eworICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7CisgICAgICAgIENIRUNLKHB0
cik7CisgICAgICAgIHB0cnMucHVzaF9iYWNrKHB0cik7CisgICAgfQorICAgIENIRUNLKHRvcHRy
c2V0KHB0cnMpLnNpemUoKSA9PSBwdHJzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHB0cnMuc2l6ZSgpOyBpICs9IDIpIHsKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0
cnNbaV0pOworICAgICAgICBwdHJzW2ldID0gbnVsbHB0cjsKKyAgICB9CisgICAgaGVhcC5zY2F2
ZW5nZSgpOworICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlOworICAgIGF1dG8m
IGltcGwgPSBoZWFwLmltcGwoKTsKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgICAgIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0g
aW1wbC5udW1Db21taXR0ZWRQYWdlcygpOworICAgIH0KKyAgICBhc3NlcnRIYXNPbmx5T2JqZWN0
cyhoZWFwLCB0b3B0cnNldChwdHJzKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXpl
KCkgLyAyOyBpLS07KQorICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOwor
ICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsK
KyAgICAgICAgQ0hFQ0sobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPT0gaW1wbC5udW1Db21taXR0
ZWRQYWdlcygpKTsKKyAgICB9CisgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQorICAgICAgICBo
ZWFwLmRlYWxsb2NhdGUocHRyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30KKworVEVTVChi
bWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUyODgpCit7
CisgICAgc3RhdGljIElzb0hlYXA8Y2hhclsyODhdPiBoZWFwOworICAgIHN0ZDo6dmVjdG9yPHZv
aWQqPiBwdHJzOworICAgIGZvciAodW5zaWduZWQgaSA9IDEwMDAwMDsgaS0tOykgeworICAgICAg
ICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7CisgICAgICAgIENIRUNLKHB0cik7CisgICAg
ICAgIHB0cnMucHVzaF9iYWNrKHB0cik7CisgICAgfQorICAgIENIRUNLKHRvcHRyc2V0KHB0cnMp
LnNpemUoKSA9PSBwdHJzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0
cnMuc2l6ZSgpOyBpICs9IDIpIHsKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOwor
ICAgICAgICBwdHJzW2ldID0gbnVsbHB0cjsKKyAgICB9CisgICAgaGVhcC5zY2F2ZW5nZSgpOwor
ICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlOworICAgIGF1dG8mIGltcGwgPSBo
ZWFwLmltcGwoKTsKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2Vy
KGltcGwubG9jayk7CisgICAgICAgIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1D
b21taXR0ZWRQYWdlcygpOworICAgIH0KKyAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB0
b3B0cnNldChwdHJzKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXplKCkgLyAyOyBp
LS07KQorICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOworICAgIHsKKyAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKKyAgICAgICAg
Q0hFQ0sobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPT0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygp
KTsKKyAgICB9CisgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQorICAgICAgICBoZWFwLmRlYWxs
b2NhdGUocHRyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJ
c29NYWxsb2NBbmRGcmVlRmFzdCkKK3sKKyAgICBzdGF0aWMgSXNvSGVhcDxjaGFyWzI1Nl0+IGhl
YXA7CisgICAgdm9pZCogcHRyID0gbnVsbHB0cjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDFl
NjsgKytpKSB7CisgICAgICAgIHB0ciA9IGhlYXAuYWxsb2NhdGUoKTsKKyAgICAgICAgaGVhcC5k
ZWFsbG9jYXRlKHB0cik7CisgICAgfQorICAgIENIRUNLKCFJc29QYWdlQmFzZTo6cGFnZUZvcihw
dHIpLT5pc1NoYXJlZCgpKTsKK30KKworY2xhc3MgQmlzb01hbGxvY2VkIHsKKyAgICBNQUtFX0JJ
U09fTUFMTE9DRUQoQmlzb01hbGxvY2VkLCBCTk9FWFBPUlQpOworcHVibGljOgorICAgIEJpc29N
YWxsb2NlZChpbnQgeCwgZmxvYXQgeSkKKyAgICAgICAgOiB4KHgpCisgICAgICAgICwgeSh5KQor
ICAgIHsKKyAgICB9CisKKyAgICBpbnQgeDsKKyAgICBmbG9hdCB5OworfTsKKworTUFLRV9CSVNP
X01BTExPQ0VEX0lNUEwoQmlzb01hbGxvY2VkKTsKKworVEVTVChibWFsbG9jLCBCaXNvTWFsbG9j
ZWQpCit7CisgICAgQmlzb01hbGxvY2VkKiBwdHIgPSBuZXcgQmlzb01hbGxvY2VkKDQsIDUpOwor
ICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01hbGxvY2VkOjpiaXNvSGVhcCgpLCB7IHB0ciB9KTsK
KyAgICBkZWxldGUgcHRyOworICAgIGFzc2VydENsZWFuKEJpc29NYWxsb2NlZDo6Ymlzb0hlYXAo
KSk7Cit9CisKK2NsYXNzIEJpc29NYWxsb2NlZElubGluZSB7CisgICAgTUFLRV9CSVNPX01BTExP
Q0VEX0lOTElORShCaXNvTWFsbG9jZWQpOworcHVibGljOgorICAgIEJpc29NYWxsb2NlZElubGlu
ZShpbnQgeCwgZmxvYXQgeSkKKyAgICAgICAgOiB4KHgpCisgICAgICAgICwgeSh5KQorICAgIHsK
KyAgICB9CisKKyAgICBpbnQgeDsKKyAgICBmbG9hdCB5OworfTsKKworVEVTVChibWFsbG9jLCBC
aXNvTWFsbG9jZWRJbmxpbmUpCit7CisgICAgQmlzb01hbGxvY2VkSW5saW5lKiBwdHIgPSBuZXcg
Qmlzb01hbGxvY2VkSW5saW5lKDQsIDUpOworICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01hbGxv
Y2VkSW5saW5lOjpiaXNvSGVhcCgpLCB7IHB0ciB9KTsKKyAgICBkZWxldGUgcHRyOworICAgIGFz
c2VydENsZWFuKEJpc29NYWxsb2NlZElubGluZTo6Ymlzb0hlYXAoKSk7Cit9CisKKworVEVTVChi
bWFsbG9jLCBTY2F2ZW5nZWRNZW1vcnlTaG91bGRCZVJldXNlZCkKK3sKKyAgICBzdGF0aWMgSXNv
SGVhcDxkb3VibGU+IGhlYXA7CisKKyAgICBhdXRvIHJ1biA9IFtdICh1bnNpZ25lZCBudW1QYWdl
c1RvQ29tbWl0KSB7CisgICAgICAgIGF1dG8qIHB0cjEgPSBoZWFwLmFsbG9jYXRlKCk7CisKKyAg
ICAgICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgO2krKykgeworICAgICAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOwor
ICAgICAgICAgICAgQ0hFQ0socHRyKTsKKyAgICAgICAgICAgIHB0cnMucHVzaF9iYWNrKHB0cik7
CisgICAgICAgICAgICBpZiAoaGVhcC5pbXBsKCkubnVtQ29tbWl0dGVkUGFnZXMoKSA9PSBudW1Q
YWdlc1RvQ29tbWl0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgc3RkOjpzZXQ8dm9pZCo+IHVuaXF1ZWRQdHJzID0gdG9wdHJzZXQocHRycyk7CisKKyAgICAg
ICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgSXNvUGFnZTxkZWNsdHlwZShoZWFwKTo6Q29uZmlnPjo6bnVtT2JqZWN0cyAtIDE7IGkrKykg
eworICAgICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOworICAgICAgICAgICAgdW5p
cXVlZFB0cnMuZXJhc2UocHRyc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBzY2F2ZW5nZSgp
OworICAgICAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB1bmlxdWVkUHRycyk7CisKKyAg
ICAgICAgLy8gRklYTUU6IFRoaXMgb25seSBzZWVtcyB0byBwYXNzIHdoZW4gbGxkYiBpcyBhdHRh
Y2hlZCBidXQgdGhlIHNjYXZlbmdlciB0aHJlYWQgaXNuJ3QgcnVubmluZy4uLgorICAgICAgICAv
LyBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzODQKKyAg
ICAgICAgYXV0byogcHRyMiA9IGhlYXAuYWxsb2NhdGUoKTsKKyAgICAgICAgLy8gQ0hFQ0socHRy
MSA9PSBwdHIyKTsKKyAgICB9OworCisgICAgcnVuKDIpOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370969</attachid>
            <date>2019-05-30 13:15:10 -0700</date>
            <delta_ts>2019-05-30 15:25:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-198301-20190530131509.patch</filename>
            <type>text/plain</type>
            <size>50272</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZGRmZDgwNjdiOTYwY2Yw
ZWFmNmMyMDBiOWExM2VlMGM4NWIwOGFhMS4uYmE5ZGJmMGIyYTQyYjQ2NmUyODI4YWEwMTA4NjAw
YmJlYjNkMTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA1LTMwICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzb0hlYXBzIGRv
bid0IG5vdGljZSB1bmNvbW1pdHRlZCBWQSBiZWNvbWluZyB0aGUgZmlyc3QgZWxpZ2libGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIElzb0RpcmVjdG9y
eSBoYXMgYSBmaXJzdEVsaWdpYmxlIG1lbWJlciB0aGF0IGlzIHVzZWQgYXMgYW4KKyAgICAgICAg
b3B0aW1pemF0aW9uIHRvIGhlbHAgZmluZCB0aGUgZmlyc3QgZml0LiBIb3dldmVyIGlmIHRoZSBz
Y2F2ZW5nZXIKKyAgICAgICAgZGVjb21taXR0ZWQgYSBwYWdlIGJlZm9yZSBmaXJzdEVsaWdpYmxl
IHRoZW4gd2Ugd291bGRuJ3QgbW92ZQorICAgICAgICBmaXJzdEVsaWdpYmxlLiBUaHVzLCBpZiBu
byBzcGFjZSBpcyBldmVyIGZyZWVkIGJlbG93IGZpcnN0RWxpZ2libGUKKyAgICAgICAgd2Ugd2ls
bCBuZXZlciByZXVzZWQgdGhlIGRlY29tbWl0dGVkIG1lbW9yeSAoZS5nLiBpZiB0aGUgVkEgcGFn
ZQorICAgICAgICBpcyBkZWNvbW1pdHRlZCkuIFRoZSBmaXggaXMgdG8gbWFrZSBJc29EaXJlY3Rv
cnk6OmRpZERlY29tbWl0IG1vdmUKKyAgICAgICAgdGhlIGZpcnN0RWxpZ2libGUgcGFnZSBiYWNr
IGlmIHRoZSBkZWNvbW1pdHRlZCBwYWdlIGlzIHNtYWxsZXIKKyAgICAgICAgdGhhbiB0aGUgY3Vy
cmVudCBmaXJzdEVsaWdpYmxlLiBBcyBzdWNoLCB0aGlzIHBhdGNoIHJlbmFtZXMKKyAgICAgICAg
Zmlyc3RFbGlnaWJsZSB0byBmaXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZC4KKworICAgICAgICBB
bHNvLCB0aGlzIHBhdGNoIGNoYW5nZXMgZ2lnYWNhZ2VFbmFibGVkRm9yUHJvY2VzcyB0byBjaGVj
ayBpZiB0aGUKKyAgICAgICAgcHJvY2VzcyBzdGFydHMgd2l0aCBUZXN0IHJhdGhlciB0aGFuIGp1
c3QgdGVzdCBhcyBUZXN0V1RGIGRvZXMuCisKKyAgICAgICAgTGFzdGx5LCB1bmJla25vd25zdCB0
byBtZSBJc29IZWFwcyBhcmUgZGVwZW5kZW50IG9uIGdpZ2FjYWdlLCBzbworICAgICAgICBieSBy
ZW1vdmluZyBnaWdhY2FnZSBmcm9tIGFybTY0IEkgYWNjaWRlbnRhbGx5IGRpc2FibGVkCisgICAg
ICAgIElzb0hlYXBzLi4uCisKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnkuaDoKKyAgICAgICAgKiBibWFs
bG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBh
Z2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFn
ZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRE
ZWNvbW1pdCk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bDxDb25maWc+Ojp0YWtlRmlyc3RFbGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFw
SW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChi
bWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGJtYWxsb2MvSXNvVExTLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6ZGV0
ZXJtaW5lTWFsbG9jRmFsbGJhY2tTdGF0ZSk6CisgICAgICAgICogYm1hbGxvYy9Qcm9jZXNzQ2hl
Y2subW06CisgICAgICAgIChibWFsbG9jOjpnaWdhY2FnZUVuYWJsZWRGb3JQcm9jZXNzKToKKwog
MjAxOS0wNS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDTWFrZV0gVXNlIHRhcmdldCBvcmllbnRlZCBkZXNpZ24gZm9yIGJtYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
MmY4NWNmOTdjMjBmMWI3OWI4MTFmMWNmOTBhYjRkYmUzOTQ4NjFlLi5mNzQ3NWZhYjVlMjQxY2Q4
MzNjMDk3MmE2OWIzNWEzOGExODJkMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMyw4ICszMyw2IEBACiAJCTBGNUJGMTcz
MUYyM0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE3MjFGMjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzRC
OTNFMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNDMUY4OTcxM0UwMEI5MzVEMyAvKiBD
cnlwdG9SYW5kb20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjc0QjkzRjFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNEMUY4OTcx
M0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uY3BwICovOyB9OwotCQkwRjdFQjdGMjFGOTUyODUz
MDBGMUFCQ0IgLyogdGVzdGJtYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3RUI3RjExRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9j
LmNwcCAqLzsgfTsKLQkJMEY3RUI3RkExRjk1NDE0QzAwRjFBQkNCIC8qIGxpYmJtYWxsb2MuYSBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjI3MUJF
MThFQTM5NjMwMDhDMTUyRiAvKiBsaWJibWFsbG9jLmEgKi87IH07CiAJCTBGN0VCODIzMUY5NTQx
QjAwMEYxQUJDQiAvKiBFbGlnaWJpbGl0eVJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3RUI3RkMxRjk1NDFBRDAwRjFBQkNCIC8qIEVsaWdp
YmlsaXR5UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY3RUI4MjQxRjk1NDFCMDAwRjFBQkNCIC8qIElzb0hlYXBJbXBsSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3RUI3RkQx
Rjk1NDFBRDAwRjFBQkNCIC8qIElzb0hlYXBJbXBsSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0VCODI1MUY5NTQxQjAwMEYxQUJD
QiAvKiBEZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdFQjdGRTFGOTU0MUFEMDBGMUFCQ0IgLyogRGVmZXJyZWRU
cmlnZ2VySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMzcsNyArMTM1LDYgQEAKIAkJNjU5OUM1Q0QxRUMzRjE1OTAwQTJGN0JCIC8q
IEF2YWlsYWJsZU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU5OUM1Q0IxRUMzRjE1OTAwQTJGN0JCIC8qIEF2YWlsYWJsZU1lbW9yeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5Mzk4ODVC
MjA3NkVFQjYwMDc0QTJFNyAvKiBCdWxrRGVjb21taXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5Mzk4ODVBMjA3NkVFQjUwMDc0QTJFNyAvKiBCdWxr
RGVjb21taXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3OTVBQjNDNzIwNkUwRDM0MDA3NEZFNzYgLyogUGh5c2ljYWxQYWdlTWFwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTVBQjNDNjIwNkUwRDI1
MDA3NEZFNzYgLyogUGh5c2ljYWxQYWdlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0M1NzFFRkYyMjM4OEIwODAwNzdBM0M3IC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQyRkM2MjEyMDk2NDA5RTAwQTk5MzYyIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovOyB9OwogCQk3QzU3MUYwMTIyMzg4Qjg0MDA3N0EzQzcgLyogU3RkTGliRXh0cmFzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzU3MUYwMDIyMzg4
Qjg0MDA3N0EzQzcgLyogU3RkTGliRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQwOTM0MzMxRkNGNDA2RDAwRTg1RUI1IC8qIEJDb21w
aWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQw
OTM0MzIxRkNGNDA1MDAwRTg1RUI1IC8qIEJDb21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEMTRBRDI5MjAyNTI5QzQwMDg5MEUzQiAv
KiBQcm9jZXNzQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMTRBRDI3MjAyNTI5QTYwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2suaCAqLzsgfTsK
QEAgLTE1NCwxMyArMTUxLDYgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwotCQkwRjdFQjdGNzFGOTU0
MTI5MDBGMUFCQ0IgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFpbmVyUG9ydGFsID0gMTQ1RjY4MzcxNzlEQzQ1
RjAwRDY1NTk4IC8qIFByb2plY3Qgb2JqZWN0ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJl
bW90ZUdsb2JhbElEU3RyaW5nID0gMTRGMjcxQkQxOEVBMzk2MzAwOEMxNTJGOwotCQkJcmVtb3Rl
SW5mbyA9IGJtYWxsb2M7Ci0JCX07CiAJCTBGN0VCODU1MUY5NTUwNTQwMEYxQUJDQiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CiAJCQljb250YWluZXJQb3J0YWwgPSAxNDVGNjgzNzE3OURDNDVGMDBENjU1OTggLyogUHJvamVj
dCBvYmplY3QgKi87CkBAIC0xNzcsMTggKzE2Nyw2IEBACiAJCX07CiAvKiBFbmQgUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAotLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCi0JCTBGN0VCN0VEMUY5NTI4NTMwMEYxQUJDQiAvKiBDb3B5RmlsZXMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKLQkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKLQkJCWRz
dFN1YmZvbGRlclNwZWMgPSAwOwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7Ci0JCX07Ci0vKiBFbmQgUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCQkwRjI2QTdBNDIwNTQ4MzBEMDA5MEExNDEgLyogUGVyUHJvY2Vzcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQZXJQcm9jZXNzLmNwcDsgcGF0aCA9IGJtYWxs
b2MvUGVyUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTE2Nzcz
MUZBRDY4NTIwMDgyMzZBOCAvKiBibWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IGJtYWxsb2MuY3BwOyBwYXRoID0gYm1hbGxvYy9ibWFsbG9jLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMiw4ICsxODAsNiBAQAogCQkwRjVCRjE3MjFG
MjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCRXhwb3J0Lmg7IHBh
dGggPSBibWFsbG9jL0JFeHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDcnlwdG9SYW5kb20uaDsgcGF0aCA9IGJtYWxsb2MvQ3J5cHRvUmFu
ZG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzRCOTNEMUY4OTcxM0UwMEI5
MzVEMyAvKiBDcnlwdG9SYW5kb20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ3J5cHRvUmFuZG9tLmNwcDsgcGF0aCA9IGJtYWxsb2MvQ3J5cHRvUmFuZG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3RUI3RUYxRjk1Mjg1MzAwRjFBQkNCIC8q
IHRlc3RibWFsbG9jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSB0ZXN0Ym1hbGxvYzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJ
MEY3RUI3RjExRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IHRlc3RibWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
RUI3RkMxRjk1NDFBRDAwRjFBQkNCIC8qIEVsaWdpYmlsaXR5UmVzdWx0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVsaWdpYmlsaXR5UmVzdWx0Lmg7IHBhdGggPSBibWFsbG9j
L0VsaWdpYmlsaXR5UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJMEY3
RUI3RkQxRjk1NDFBRDAwRjFBQkNCIC8qIElzb0hlYXBJbXBsSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBJc29IZWFwSW1wbElubGluZXMuaDsgcGF0aCA9IGJtYWxs
b2MvSXNvSGVhcEltcGxJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
MEY3RUI3RkUxRjk1NDFBRDAwRjFBQkNCIC8qIERlZmVycmVkVHJpZ2dlcklubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOyBw
YXRoID0gYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKQEAgLTMyOCwxNSArMzA0LDYgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwotCQkwRjdFQjdFQzFGOTUyODUzMDBGMUFCQ0IgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTdDNTcxRUZGMjIzODhCMDgwMDc3QTNDNyAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJCTBGN0VCN0ZBMUY5NTQxNEMw
MEYxQUJDQiAvKiBsaWJibWFsbG9jLmEgaW4gRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIAkJMTRDQzM5NDExOEVB
ODc0MzAwNEFGRTM0IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNTYsMTQg
KzMyMyw2IEBACiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0JCTBGN0VCN0YwMUY5NTI4NTMwMEYxQUJDQiAv
KiB0ZXN0ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkw
RjdFQjdGMTFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdGJtYWxsb2MuY3BwICovLAotCQkJKTsKLQkJ
CXBhdGggPSB0ZXN0OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJMEY3RUI3
RjkxRjk1NDE0QzAwRjFBQkNCIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDUxLDE0ICs0MTAsMTIgQEAKIAkJCQkwRjdFQjdGQjFG
OTU0MTY5MDBGMUFCQ0IgLyogaXNvICovLAogCQkJCTE0NUY2ODQwMTc5REM0NUYwMEQ2NTU5OCAv
KiBQcm9kdWN0cyAqLywKIAkJCQkxNEQ5REI0RjE3RjI4Njg5MDBFQUFCNzkgLyogc3RkbGliICov
LAotCQkJCTBGN0VCN0YwMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0ICovLAogCQkJKTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTE0NUY2ODQwMTc5REM0NUYwMEQ2NTU5OCAv
KiBQcm9kdWN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJMEY3RUI3RUYxRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jICovLAogCQkJCTE0RjI3
MUJFMThFQTM5NjMwMDhDMTUyRiAvKiBsaWJibWFsbG9jLmEgKi8sCiAJCQkJMTRDQzM5NDQxOEVB
ODc0MzAwNEFGRTM0IC8qIGxpYm1ibWFsbG9jLmR5bGliICovLAogCQkJKTsKQEAgLTcwNywyNCAr
NjY0LDYgQEAKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCi0JCTBGN0VCN0VFMUY5NTI4NTMwMEYxQUJD
QiAvKiB0ZXN0Ym1hbGxvYyAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjdFQjdGNjFGOTUyODUzMDBGMUFCQ0IgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRlc3RibWFsbG9jIiAqLzsK
LQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTBGN0VCN0VCMUY5NTI4NTMwMEYxQUJDQiAvKiBTb3Vy
Y2VzICovLAotCQkJCTBGN0VCN0VDMUY5NTI4NTMwMEYxQUJDQiAvKiBGcmFtZXdvcmtzICovLAot
CQkJCTBGN0VCN0VEMUY5NTI4NTMwMEYxQUJDQiAvKiBDb3B5RmlsZXMgKi8sCi0JCQkpOwotCQkJ
YnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJMEY3RUI3Rjgx
Rjk1NDEyOTAwRjFBQkNCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFt
ZSA9IHRlc3RibWFsbG9jOwotCQkJcHJvZHVjdE5hbWUgPSB0ZXN0Ym1hbGxvYzsKLQkJCXByb2R1
Y3RSZWZlcmVuY2UgPSAwRjdFQjdFRjFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdGJtYWxsb2MgKi87
Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwotCQl9Owog
CQkxNENDMzk0MzE4RUE4NzQzMDA0QUZFMzQgLyogbWJtYWxsb2MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTRDQzM5NDUxOEVB
ODc0MzAwNEFGRTM0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJtYm1hbGxvYyIgKi87CkBAIC03NjksMTAgKzcwOCw2IEBACiAJCQkJTGFzdFN3aWZ0VXBk
YXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwogCQkJCVRhcmdl
dEF0dHJpYnV0ZXMgPSB7Ci0JCQkJCTBGN0VCN0VFMUY5NTI4NTMwMEYxQUJDQiA9IHsKLQkJCQkJ
CUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDkuMDsKLQkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0g
TWFudWFsOwotCQkJCQl9OwogCQkJCQkwRjdFQjg1MDFGOTU1MDRCMDBGMUFCQ0IgPSB7CiAJCQkJ
CQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA5LjA7CiAJCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9
IEF1dG9tYXRpYzsKQEAgLTc5NCwyMCArNzI5LDExIEBACiAJCQkJMEY3RUI4NTAxRjk1NTA0QjAw
RjFBQkNCIC8qIEFsbCAqLywKIAkJCQkxNEYyNzFCRDE4RUEzOTYzMDA4QzE1MkYgLyogYm1hbGxv
YyAqLywKIAkJCQkxNENDMzk0MzE4RUE4NzQzMDA0QUZFMzQgLyogbWJtYWxsb2MgKi8sCi0JCQkJ
MEY3RUI3RUUxRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jICovLAogCQkJKTsKIAkJfTsK
IC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwotCQkwRjdFQjdFQjFGOTUyODUzMDBGMUFCQ0IgLyogU291cmNlcyAq
LyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTBGN0VCN0YyMUY5NTI4NTMwMEYxQUJD
QiAvKiB0ZXN0Ym1hbGxvYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIAkJMTRDQzM5NDAxOEVBODc0MzAw
NEFGRTM0IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC04NTYsMTEgKzc4Miw2IEBACiAv
KiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJn
ZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KLQkJMEY3RUI3RjgxRjk1NDEyOTAwRjFBQkNCIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owot
CQkJdGFyZ2V0ID0gMTRGMjcxQkQxOEVBMzk2MzAwOEMxNTJGIC8qIGJtYWxsb2MgKi87Ci0JCQl0
YXJnZXRQcm94eSA9IDBGN0VCN0Y3MUY5NTQxMjkwMEYxQUJDQiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87Ci0JCX07CiAJCTBGN0VCODU2MUY5NTUwNTQwMEYxQUJDQiAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdl
dCA9IDE0RjI3MUJEMThFQTM5NjMwMDhDMTUyRiAvKiBibWFsbG9jICovOwpAQCAtODc0LDMwICs3
OTUsNiBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCi0JCTBGN0VCN0YzMUY5NTI4NTMwMEYx
QUJDQiAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxNEI2NTBDNzE4RjM5RjQ4MDA3NTE5NjggLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJ
fTsKLQkJMEY3RUI3RjQxRjk1Mjg1MzAwRjFBQkNCIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
MTRCNjUwQzcxOEYzOUY0ODAwNzUxOTY4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKLQkJ
CWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsK
LQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJMEY3RUI3RjUxRjk1Mjg1MzAwRjFB
QkNCIC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
LQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMTRCNjUwQzUxOEYzOUY0ODAwNzUxOTY4
IC8qIEJhc2UueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0J
CX07CiAJCTBGN0VCODUyMUY5NTUwNEIwMEYxQUJDQiAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTk5MiwxNiAr
ODg5LDYgQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCQkwRjdFQjdGNjFGOTUyODUzMDBG
MUFCQ0IgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRl
c3RibWFsbG9jIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWls
ZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTBGN0VCN0YzMUY5NTI4NTMwMEYxQUJDQiAvKiBEZWJ1
ZyAqLywKLQkJCQkwRjdFQjdGNDFGOTUyODUzMDBGMUFCQ0IgLyogUmVsZWFzZSAqLywKLQkJCQkw
RjdFQjdGNTFGOTUyODUzMDBGMUFCQ0IgLyogUHJvZHVjdGlvbiAqLywKLQkJCSk7Ci0JCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBQcm9kdWN0aW9uOwotCQl9OwogCQkwRjdFQjg1MTFGOTU1MDRCMDBGMUFCQ0IgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkFsbCIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCmluZGV4IDMwZGY4YTZmYjJiOTkw
NGEwNGY4NGUyMzk0MjljZTJkNmM4YjQ2YjkuLjFkODI0ZjQ5Yzc2NTczYmMzNzdiNjdiZGNiN2Nk
ZjUxMzhkYmYyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0
b3J5LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4
LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBCaXRzPG51bVBhZ2VzPiBtX2VtcHR5OwogICAgIEJp
dHM8bnVtUGFnZXM+IG1fY29tbWl0dGVkOwogICAgIHN0ZDo6YXJyYXk8SXNvUGFnZTxDb25maWc+
KiwgbnVtUGFnZXM+IG1fcGFnZXM7Ci0gICAgdW5zaWduZWQgbV9maXJzdEVsaWdpYmxlIHsgMCB9
OworICAgIHVuc2lnbmVkIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyAwIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGly
ZWN0b3J5SW5saW5lcy5oCmluZGV4IDY0MGQ4MmUxMjFkZDAxNWQ5N2MzNzY3OTc0Zjg2ZGZmMDEx
NzljNTguLmNjMGU2YTdkZWZlNGY4YmYwZmU2MmE0OWI0MWYyN2Y1ZmZjZjE4NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsOCArNDYs
OSBAQCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46Oklzb0RpcmVjdG9yeShJ
c29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNp
Z25lZCBwYXNzZWROdW1QYWdlcz4KIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0
b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZSgpCiB7Ci0gICAg
dW5zaWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUgfCB+bV9jb21taXR0ZWQpLmZpbmRCaXQo
bV9maXJzdEVsaWdpYmxlLCB0cnVlKTsKLSAgICBtX2ZpcnN0RWxpZ2libGUgPSBwYWdlSW5kZXg7
CisgICAgdW5zaWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUgfCB+bV9jb21taXR0ZWQpLmZp
bmRCaXQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgdHJ1ZSk7CisgICAgbV9maXJzdEVs
aWdpYmxlT3JEZWNvbW1pdHRlZCA9IHBhZ2VJbmRleDsKKyAgICBCQVNTRVJUKChtX2VsaWdpYmxl
IHwgfm1fY29tbWl0dGVkKS5maW5kQml0KDAsIHRydWUpID09IHBhZ2VJbmRleCk7CiAgICAgaWYg
KHBhZ2VJbmRleCA+PSBudW1QYWdlcykKICAgICAgICAgcmV0dXJuIEVsaWdpYmlsaXR5S2luZDo6
RnVsbDsKIApAQCAtOTcsOCArOTgsOCBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6ZGlkQmVjb21lKElzb1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUAogICAgICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVwIGRpZCBi
ZWNvbWUgZWxpZ2libGUuXG4iLCB0aGlzLCBwYWdlKTsKICAgICAgICAgbV9lbGlnaWJsZVtwYWdl
SW5kZXhdID0gdHJ1ZTsKLSAgICAgICAgbV9maXJzdEVsaWdpYmxlID0gc3RkOjptaW4obV9maXJz
dEVsaWdpYmxlLCBwYWdlSW5kZXgpOwotICAgICAgICB0aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxp
Z2libGUodGhpcyk7CisgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6
Om1pbihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCBwYWdlSW5kZXgpOworICAgICAgICB0
aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQodGhpcyk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIElzb1BhZ2VUcmlnZ2VyOjpFbXB0eToKICAgICAgICAgaWYgKHZl
cmJvc2UpCkBAIC0xMjIsNiArMTIzLDggQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNz
ZWROdW1QYWdlcz46OmRpZERlY29tbWl0KHVuc2lnbmVkIGluZGV4KQogICAgIEJBU1NFUlQoISFt
X2NvbW1pdHRlZFtpbmRleF0pOwogICAgIHRoaXMtPm1faGVhcC5pc05vTG9uZ2VyRnJlZWFibGUo
bV9wYWdlc1tpbmRleF0sIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CiAgICAgbV9jb21taXR0ZWRb
aW5kZXhdID0gZmFsc2U7CisgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0ZDo6
bWluKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIGluZGV4KTsKKyAgICB0aGlzLT5tX2hl
YXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQodGhpcyk7CiAgICAgdGhpcy0+bV9oZWFw
LmRpZERlY29tbWl0KG1fcGFnZXNbaW5kZXhdLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKaW5kZXggOWVkM2NjNTQxYjFmNDcxNmEz
ZTY5OTBiZjFmYWM5Y2EyYTliMDI0MS4uMjI4ZmE1NGM0OTdjOTllYTk5NWIwZDVhNjQ5YTRhN2Ux
ZWEyMjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDggKzgw
LDggQEAgcHVibGljOgogICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxp
Z2libGUoKTsKICAgICAKICAgICAvLyBDYWxsYmFja3MgZnJvbSBkaXJlY3RvcnkuCi0gICAgdm9p
ZCBkaWRCZWNvbWVFbGlnaWJsZShJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5l
RGlyZWN0b3J5PiopOwotICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGUoSXNvRGlyZWN0b3J5PENv
bmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qKTsKKyAgICB2b2lkIGRp
ZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2Vz
SW5JbmxpbmVEaXJlY3Rvcnk+Kik7CisgICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21t
aXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBh
Z2VzPiopOwogICAgIAogICAgIHZvaWQgc2NhdmVuZ2UoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+
Jikgb3ZlcnJpZGU7CiAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fbmV4dERpcmVjdG9yeVBhZ2VJbmRleCB7IDEgfTsgLy8gV2Ugc3RhcnQgYXQgMSBzbyB0aGF0
IHRoZSBoaWdoIHdhdGVyIG1hcmsgYmVpbmcgemVybyBtZWFucyB3ZSd2ZSBvbmx5IGFsbG9jYXRl
ZCBpbiB0aGUgaW5saW5lIGRpcmVjdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2F2ZW5nZS4KICAgICB1
bnNpZ25lZCBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgeyAwIH07CiAgICAgCi0gICAgYm9vbCBt
X2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGUgeyB0cnVlIH07Ci0gICAgSXNvRGlyZWN0b3J5UGFn
ZTxDb25maWc+KiBtX2ZpcnN0RWxpZ2libGVEaXJlY3RvcnkgeyBudWxscHRyIH07CisgICAgYm9v
bCBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkIHsgdHJ1ZSB9OworICAg
IElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGly
ZWN0b3J5IHsgbnVsbHB0ciB9OwogICAgIAogICAgIElzb1RMU0FsbG9jYXRvckVudHJ5PENvbmZp
Zz4gbV9hbGxvY2F0b3I7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29IZWFwSW1wbElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmgKaW5kZXggYmE0MTA5MzUyNzdjOTBkN2U3NzIxNWRiYmNkOWU3Zjg2MGJlZjgyNy4u
MjdiYTkzZTQyNTk1NTBlNTlmZjA4NTBkMzhmYWI0MWM2NzNiNmU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsMjYgKzQ0LDI2IEBAIElz
b0hlYXBJbXBsPENvbmZpZz46Oklzb0hlYXBJbXBsKCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZp
Zz4KIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZp
cnN0RWxpZ2libGUoKQogewotICAgIGlmIChtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGUpIHsK
KyAgICBpZiAobV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCkgewogICAg
ICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1faW5saW5lRGlyZWN0b3J5
LnRha2VGaXJzdEVsaWdpYmxlKCk7CiAgICAgICAgIGlmIChyZXN1bHQua2luZCA9PSBFbGlnaWJp
bGl0eUtpbmQ6OkZ1bGwpCi0gICAgICAgICAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGUg
PSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21t
aXR0ZWQgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZpcnN0RWxpZ2libGVEaXJlY3RvcnkpIHsKKyAgICBp
ZiAoIW1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSkgewogICAgICAgICAvLyBJ
ZiBub3RoaW5nIGlzIGVsaWdpYmxlLCBpdCBjYW4gb25seSBiZSBiZWNhdXNlIHdlIGhhdmUgbm8g
ZGlyZWN0b3JpZXMuIEl0IHdvdWxkbid0IGJlIHRoZSBlbmQKLSAgICAgICAgLy8gb2YgdGhlIHdv
cmxkIGlmIHdlIGJyb2tlIHRoaXMgaW52YXJpYW50LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBk
aWRCZWNvbWVFbGlnaWJsZSgpIHdvdWxkIG5lZWQKKyAgICAgICAgLy8gb2YgdGhlIHdvcmxkIGlm
IHdlIGJyb2tlIHRoaXMgaW52YXJpYW50LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCgpIHdvdWxkIG5lZWQKICAgICAgICAgLy8gYSBudWxsIGNo
ZWNrLgogICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1faGVhZERpcmVjdG9yeSk7CiAgICAgICAg
IFJFTEVBU0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5KTsKICAgICB9CiAgICAgCi0gICAgZm9y
ICg7IG1fZmlyc3RFbGlnaWJsZURpcmVjdG9yeTsgbV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5ID0g
bV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5LT5uZXh0KSB7Ci0gICAgICAgIEVsaWdpYmlsaXR5UmVz
dWx0PENvbmZpZz4gcmVzdWx0ID0gbV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5LT5wYXlsb2FkLnRh
a2VGaXJzdEVsaWdpYmxlKCk7CisgICAgZm9yICg7IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRl
ZERpcmVjdG9yeTsgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbV9maXJz
dEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LT5uZXh0KSB7CisgICAgICAgIEVsaWdpYmls
aXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGly
ZWN0b3J5LT5wYXlsb2FkLnRha2VGaXJzdEVsaWdpYmxlKCk7CiAgICAgICAgIGlmIChyZXN1bHQu
a2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpIHsKLSAgICAgICAgICAgIG1fZGlyZWN0b3J5
SGlnaFdhdGVybWFyayA9IHN0ZDo6bWF4KG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaywgbV9maXJz
dEVsaWdpYmxlRGlyZWN0b3J5LT5pbmRleCgpKTsKKyAgICAgICAgICAgIG1fZGlyZWN0b3J5SGln
aFdhdGVybWFyayA9IHN0ZDo6bWF4KG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaywgbV9maXJzdEVs
aWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LT5pbmRleCgpKTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CkBAIC03OCwyNiArNzgsMjYgQEAgRWxpZ2liaWxp
dHlSZXN1bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RFbGlnaWJsZSgp
CiAgICAgICAgIG1fdGFpbERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICB9CiAgICAgbV9k
aXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gbmV3RGlyZWN0b3J5LT5pbmRleCgpOwotICAgIG1fZmly
c3RFbGlnaWJsZURpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKKyAgICBtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7CiAgICAgRWxpZ2liaWxpdHlSZXN1
bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJlY3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2li
bGUoKTsKICAgICBSRUxFQVNFX0JBU1NFUlQocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5k
OjpGdWxsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlKElzb0RpcmVj
dG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCit2b2lk
IElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0Rp
cmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCiB7
CiAgICAgUkVMRUFTRV9CQVNTRVJUKGRpcmVjdG9yeSA9PSAmbV9pbmxpbmVEaXJlY3RvcnkpOwot
ICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZSA9IHRydWU7CisgICAgbV9pc0lubGluZURp
cmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGUo
SXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4q
IGRpcmVjdG9yeSkKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVP
ckRlY29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+
OjpudW1QYWdlcz4qIGRpcmVjdG9yeSkKIHsKLSAgICBSRUxFQVNFX0JBU1NFUlQobV9maXJzdEVs
aWdpYmxlRGlyZWN0b3J5KTsKKyAgICBSRUxFQVNFX0JBU1NFUlQobV9maXJzdEVsaWdpYmxlT3JE
ZWNvbW1pdGVkRGlyZWN0b3J5KTsKICAgICBhdXRvKiBkaXJlY3RvcnlQYWdlID0gSXNvRGlyZWN0
b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKGRpcmVjdG9yeSk7Ci0gICAgaWYgKGRpcmVjdG9yeVBh
Z2UtPmluZGV4KCkgPCBtX2ZpcnN0RWxpZ2libGVEaXJlY3RvcnktPmluZGV4KCkpCi0gICAgICAg
IG1fZmlyc3RFbGlnaWJsZURpcmVjdG9yeSA9IGRpcmVjdG9yeVBhZ2U7CisgICAgaWYgKGRpcmVj
dG9yeVBhZ2UtPmluZGV4KCkgPCBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rvcnkt
PmluZGV4KCkpCisgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9
IGRpcmVjdG9yeVBhZ2U7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvVExTLmNwcAppbmRleCBkYmMwZTdlYmEzYTMwYWUxMzg0ZjAwOTVjMGQ3MTI1Zjg0
MjdhMTczLi5jMjAzMjEzYjg1NWJkY2RjOWVkMDc5NmZkMjA0YWI1ZDk0OGQ4MDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5jcHAKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFMuY3BwCkBAIC0xODMsMTEgKzE4MywxMyBAQCB2b2lkIElzb1RMUzo6
ZGV0ZXJtaW5lTWFsbG9jRmFsbGJhY2tTdGF0ZSgpCiAgICAgICAgICAgICBpZiAoc19tYWxsb2NG
YWxsYmFja1N0YXRlICE9IE1hbGxvY0ZhbGxiYWNrU3RhdGU6OlVuZGVjaWRlZCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSNpZiBHSUdBQ0FHRV9FTkFCTEVECisjaWYgR0lHQUNBR0VfRU5B
QkxFRCB8fCBCQ1BVKEFSTTY0KQorI2lmICFCQ1BVKEFSTTY0KQogICAgICAgICAgICAgaWYgKCFH
aWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpIHsKICAgICAgICAgICAgICAgICBzX21hbGxvY0Zh
bGxiYWNrU3RhdGUgPSBNYWxsb2NGYWxsYmFja1N0YXRlOjpGYWxsQmFja1RvTWFsbG9jOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAg
Y29uc3QgY2hhciogZW52ID0gZ2V0ZW52KCJibWFsbG9jX0lzb0hlYXAiKTsKICAgICAgICAgICAg
IGlmIChlbnYgJiYgKCFzdHJjYXNlY21wKGVudiwgImZhbHNlIikgfHwgIXN0cmNhc2VjbXAoZW52
LCAibm8iKSB8fCAhc3RyY21wKGVudiwgIjAiKSkpCiAgICAgICAgICAgICAgICAgc19tYWxsb2NG
YWxsYmFja1N0YXRlID0gTWFsbG9jRmFsbGJhY2tTdGF0ZTo6RmFsbEJhY2tUb01hbGxvYzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUHJvY2Vzc0NoZWNrLm1tIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Qcm9jZXNzQ2hlY2subW0KaW5kZXggOTBmZGMzYmEzYmUwZDc3YzYx
ZGM3ZDkwODU2ZWI4MDg5M2NjOWEwYi4uM2JiNjNmMzUyNTQyOTg5OGIwOTk0Y2M4NTE3OTNiNTE5
NWY1MmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Qcm9jZXNzQ2hlY2su
bW0KKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Qcm9jZXNzQ2hlY2subW0KQEAgLTQ2LDcg
KzQ2LDggQEAgYm9vbCBnaWdhY2FnZUVuYWJsZWRGb3JQcm9jZXNzKCkKICAgICBib29sIGlzT3B0
SW5CaW5hcnkgPSBbcHJvY2Vzc05hbWUgaXNFcXVhbFRvU3RyaW5nOkAianNjIl0KICAgICAgICAg
fHwgW3Byb2Nlc3NOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkR1bXBSZW5kZXJUcmVlIl0KICAgICAg
ICAgfHwgW3Byb2Nlc3NOYW1lIGlzRXF1YWxUb1N0cmluZzpAIndhc20iXQotICAgICAgICB8fCBb
cHJvY2Vzc05hbWUgaGFzUHJlZml4OkAidGVzdCJdOworICAgICAgICB8fCBbcHJvY2Vzc05hbWUg
aGFzUHJlZml4OkAidGVzdCJdCisgICAgICAgIHx8IFtwcm9jZXNzTmFtZSBoYXNQcmVmaXg6QCJU
ZXN0Il07CiAKICAgICByZXR1cm4gaXNPcHRJbkJpbmFyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL3Rlc3QvdGVzdGJtYWxsb2MuY3BwIGIvU291cmNlL2JtYWxsb2MvdGVzdC90ZXN0
Ym1hbGxvYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmJjMTYyYWVmM2Nj
NWNjYmE4YmI1ZjViNzdmMWYyYjFhZWE1MWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL2JtYWxsb2MvdGVzdC90ZXN0Ym1hbGxvYy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSA8Ym1hbGxvYy9ibWFsbG9jLmg+Ci0jaW5jbHVk
ZSA8Ym1hbGxvYy9FbnZpcm9ubWVudC5oPgotI2luY2x1ZGUgPGJtYWxsb2MvSXNvSGVhcElubGlu
ZXMuaD4KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPHNl
dD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLXVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwotdXNpbmcg
bmFtZXNwYWNlIGJtYWxsb2M6OmFwaTsKLQotLy8gV2UgZG9uJ3QgaGF2ZSBhIE5PX1JFVFVSTl9E
VUVfVE9fRVhJVCwgbm9yIHNob3VsZCB3ZS4gVGhhdCdzIHJpZGljdWxvdXMuCi1zdGF0aWMgYm9v
bCBoaWRkZW5UcnV0aEJlY2F1c2VOb1JldHVybklzU3R1cGlkKCkgeyByZXR1cm4gdHJ1ZTsgfQot
Ci1zdGF0aWMgdm9pZCB1c2FnZSgpCi17Ci0gICAgcHV0cygiVXNhZ2U6IHRlc3RiMyBbPGZpbHRl
cj5dIik7Ci0gICAgaWYgKGhpZGRlblRydXRoQmVjYXVzZU5vUmV0dXJuSXNTdHVwaWQoKSkKLSAg
ICAgICAgZXhpdCgxKTsKLX0KLQotI2RlZmluZSBSVU4odGVzdCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICBpZiAoIXNob3VsZFJ1bigjdGVzdCkpICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBwdXRzKCN0ZXN0ICIuLi4iKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICB0ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBw
dXRzKCN0ZXN0ICI6IE9LISIpOyAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZh
bHNlKQotCi0vLyBOb3RoaW5nIGZhbmN5IGZvciBub3c7IHdlIGp1c3QgdXNlIHRoZSBleGlzdGlu
ZyBXVEYgYXNzZXJ0aW9uIG1hY2hpbmVyeS4KLSNkZWZpbmUgQ0hFQ0soeCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYg
KCEhKHgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczolZDog
aW4gJXM6IGFzc2VydGlvbiAlcyBmYWlsZWQuXG4iLCAgICAgICAgIFwKLSAgICAgICAgICAgIF9f
RklMRV9fLCBfX0xJTkVfXywgX19QUkVUVFlfRlVOQ1RJT05fXywgI3gpOyAgICAgICAgICAgICAg
IFwKLSAgICAgICAgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotc3RhdGljIHN0ZDo6
c2V0PHZvaWQqPiB0b3B0cnNldChjb25zdCBzdGQ6OnZlY3Rvcjx2b2lkKj4mIHB0cnMpCi17Ci0g
ICAgc3RkOjpzZXQ8dm9pZCo+IHJlc3VsdDsKLSAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpIHsK
LSAgICAgICAgaWYgKHB0cikKLSAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQocHRyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIHZvaWQgYXNzZXJ0RW1wdHlQb2ludGVy
U2V0KGNvbnN0IHN0ZDo6c2V0PHZvaWQqPiYgcG9pbnRlcnMpCi17Ci0gICAgaWYgKEVudmlyb25t
ZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKLSAgICAgICAgcHJpbnRmKCIgICAg
c2tpcHBpbmcgY2hlY2tzIGJlY2F1c2UgRGVidWdIZWFwLlxuIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKHBvaW50ZXJzLmVtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBw
cmludGYoIlBvaW50ZXIgc2V0IG5vdCBlbXB0eSFcbiIpOwotICAgIHByaW50ZigiUG9pbnRlcnM6
Iik7Ci0gICAgZm9yICh2b2lkKiBwdHIgOiBwb2ludGVycykKLSAgICAgICAgcHJpbnRmKCIgJXAi
LCBwdHIpOwotICAgIHByaW50ZigiXG4iKTsKLSAgICBDSEVDSyhwb2ludGVycy5lbXB0eSgpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+Ci1zdGF0aWMgdm9pZCBhc3NlcnRIYXNP
YmplY3RzKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBzdGQ6OnNldDx2b2lkKj4gcG9pbnRlcnMp
Ci17Ci0gICAgaWYgKEVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsK
LSAgICAgICAgcHJpbnRmKCIgICAgc2tpcHBpbmcgY2hlY2tzIGJlY2F1c2UgRGVidWdIZWFwLlxu
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgp
OwotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgaW1w
bC5mb3JFYWNoTGl2ZU9iamVjdCgKLSAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKLSAgICAg
ICAgICAgIHBvaW50ZXJzLmVyYXNlKG9iamVjdCk7Ci0gICAgICAgIH0pOwotICAgIGFzc2VydEVt
cHR5UG9pbnRlclNldChwb2ludGVycyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIGhlYXBUeXBl
Pgotc3RhdGljIHZvaWQgYXNzZXJ0SGFzT25seU9iamVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhl
YXAsIHN0ZDo6c2V0PHZvaWQqPiBwb2ludGVycykKLXsKLSAgICBpZiAoRW52aXJvbm1lbnQ6Omdl
dCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgewotICAgICAgICBwcmludGYoIiAgICBza2lwcGlu
ZyBjaGVja3MgYmVjYXVzZSBEZWJ1Z0hlYXAuXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAotICAgICAg
ICBbJl0gKHZvaWQqIG9iamVjdCkgewotICAgICAgICAgICAgQ0hFQ0socG9pbnRlcnMuZXJhc2Uo
b2JqZWN0KSA9PSAxKTsKLSAgICAgICAgfSk7Ci0gICAgYXNzZXJ0RW1wdHlQb2ludGVyU2V0KHBv
aW50ZXJzKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+Ci1zdGF0aWMgdm9pZCBh
c3NlcnRDbGVhbihJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCkKLXsKLSAgICBzY2F2ZW5nZVRoaXNU
aHJlYWQoKTsKLSAgICBpZiAoIUVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVk
KCkpIHsKLSAgICAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAg
ICAgICAgQ0hFQ0soIWltcGwubnVtTGl2ZU9iamVjdHMoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgaGVhcC5zY2F2ZW5nZSgpOwotICAgIGlmICghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVn
SGVhcEVuYWJsZWQoKSkgewotICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIENI
RUNLKCFpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQg
dGVzdElzb1NpbXBsZSgpCi17Ci0gICAgc3RhdGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOwotICAg
IHZvaWQqIHB0cjEgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgQ0hFQ0socHRyMSk7Ci0gICAgdm9p
ZCogcHRyMiA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICBDSEVDSyhwdHIyKTsKLSAgICBDSEVDSyhw
dHIxICE9IHB0cjIpOwotICAgIENIRUNLKHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNoYXIqPihwdHIx
KSAtIHN0YXRpY19jYXN0PGNoYXIqPihwdHIyKSkgPj0gOCk7Ci0gICAgYXNzZXJ0SGFzT2JqZWN0
cyhoZWFwLCB7cHRyMSwgcHRyMn0pOwotICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIxKTsKLSAgICBo
ZWFwLmRlYWxsb2NhdGUocHRyMik7Ci0gICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHRlc3RJc29TaW1wbGVTY2F2ZW5nZUJlZm9yZURlYWxsb2MoKQotewotICAgIHN0YXRp
YyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKLSAgICB2b2lkKiBwdHIxID0gaGVhcC5hbGxvY2F0ZSgp
OwotICAgIENIRUNLKHB0cjEpOwotICAgIHZvaWQqIHB0cjIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0g
ICAgQ0hFQ0socHRyMik7Ci0gICAgQ0hFQ0socHRyMSAhPSBwdHIyKTsKLSAgICBDSEVDSyhzdGQ6
OmFicyhzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMikp
ID49IDgpOwotICAgIHNjYXZlbmdlVGhpc1RocmVhZCgpOwotICAgIGFzc2VydEhhc09ubHlPYmpl
Y3RzKGhlYXAsIHtwdHIxLCBwdHIyfSk7Ci0gICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEpOwotICAg
IGhlYXAuZGVhbGxvY2F0ZShwdHIyKTsKLSAgICBhc3NlcnRDbGVhbihoZWFwKTsKLX0KLQotc3Rh
dGljIHZvaWQgdGVzdElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzKCkKLXsKLSAgICBzdGF0aWMg
SXNvSGVhcDxkb3VibGU+IGhlYXA7Ci0gICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMTAwMDAwOyBpLS07KSB7Ci0gICAgICAgIHZvaWQqIHB0ciA9IGhl
YXAuYWxsb2NhdGUoKTsKLSAgICAgICAgQ0hFQ0socHRyKTsKLSAgICAgICAgcHRycy5wdXNoX2Jh
Y2socHRyKTsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0cnMuc2l6ZSgp
OyBpICs9IDIpIHsKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOwotICAgICAgICBw
dHJzW2ldID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXpl
KCkgLyAyOyBpLS07KQotICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOwot
ICAgIGZvciAodm9pZCogcHRyIDogcHRycykKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7
Ci0gICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29GbGlwRmxv
cEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUoKQotewotICAgIHN0YXRpYyBJc29IZWFw
PGRvdWJsZT4gaGVhcDsKLSAgICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxMDAwMDA7IGktLTspIHsKLSAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxv
Y2F0ZSgpOwotICAgICAgICBDSEVDSyhwdHIpOwotICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIp
OwotICAgIH0KLSAgICBDSEVDSyh0b3B0cnNldChwdHJzKS5zaXplKCkgPT0gcHRycy5zaXplKCkp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7Ci0g
ICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKLSAgICAgICAgcHRyc1tpXSA9IG51bGxw
dHI7Ci0gICAgfQotICAgIGhlYXAuc2NhdmVuZ2UoKTsKLSAgICB1bnNpZ25lZCBudW1Db21taXR0
ZWRQYWdlc0JlZm9yZTsKLSAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgewotICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBu
dW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKLSAgICB9
Ci0gICAgYXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwgdG9wdHJzZXQocHRycykpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IHB0cnMuc2l6ZSgpIC8gMjsgaS0tOykKLSAgICAgICAgcHRycy5wdXNo
X2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIENIRUNLKG51bUNvbW1pdHRlZFBhZ2Vz
QmVmb3JlID09IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0gICAgfQotICAgIGZvciAodm9p
ZCogcHRyIDogcHRycykKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7Ci0gICAgYXNzZXJ0
Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29GbGlwRmxvcEZyYWdtZW50ZWRQ
YWdlc1NjYXZlbmdlSW5NaWRkbGUyODgoKQotewotICAgIHN0YXRpYyBJc29IZWFwPGNoYXJbMjg4
XT4gaGVhcDsKLSAgICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxMDAwMDA7IGktLTspIHsKLSAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgp
OwotICAgICAgICBDSEVDSyhwdHIpOwotICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOwotICAg
IH0KLSAgICBDSEVDSyh0b3B0cnNldChwdHJzKS5zaXplKCkgPT0gcHRycy5zaXplKCkpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7Ci0gICAgICAg
IGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKLSAgICAgICAgcHRyc1tpXSA9IG51bGxwdHI7Ci0g
ICAgfQotICAgIGhlYXAuc2NhdmVuZ2UoKTsKLSAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdl
c0JlZm9yZTsKLSAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBudW1Db21t
aXR0ZWRQYWdlc0JlZm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKLSAgICB9Ci0gICAg
YXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwgdG9wdHJzZXQocHRycykpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IHB0cnMuc2l6ZSgpIC8gMjsgaS0tOykKLSAgICAgICAgcHRycy5wdXNoX2JhY2so
aGVhcC5hbGxvY2F0ZSgpKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4g
bG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIENIRUNLKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3Jl
ID09IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0gICAgfQotICAgIGZvciAodm9pZCogcHRy
IDogcHRycykKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7Ci0gICAgYXNzZXJ0Q2xlYW4o
aGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29NYWxsb2NBbmRGcmVlRmFzdCgpCi17Ci0g
ICAgc3RhdGljIElzb0hlYXA8Y2hhclsyNTZdPiBoZWFwOwotICAgIHZvaWQqIHB0ciA9IG51bGxw
dHI7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxZTY7ICsraSkgewotICAgICAgICBwdHIgPSBo
ZWFwLmFsbG9jYXRlKCk7Ci0gICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwotICAgIH0KLSAg
ICBDSEVDSyghSXNvUGFnZUJhc2U6OnBhZ2VGb3IocHRyKS0+aXNTaGFyZWQoKSk7Ci19Ci0KLWNs
YXNzIEJpc29NYWxsb2NlZCB7Ci0gICAgTUFLRV9CSVNPX01BTExPQ0VEKEJpc29NYWxsb2NlZCwg
Qk5PRVhQT1JUKTsKLXB1YmxpYzoKLSAgICBCaXNvTWFsbG9jZWQoaW50IHgsIGZsb2F0IHkpCi0g
ICAgICAgIDogeCh4KQotICAgICAgICAsIHkoeSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGlu
dCB4OwotICAgIGZsb2F0IHk7Ci19OwotCi1NQUtFX0JJU09fTUFMTE9DRURfSU1QTChCaXNvTWFs
bG9jZWQpOwotCi1zdGF0aWMgdm9pZCB0ZXN0Qmlzb01hbGxvY2VkKCkKLXsKLSAgICBCaXNvTWFs
bG9jZWQqIHB0ciA9IG5ldyBCaXNvTWFsbG9jZWQoNCwgNSk7Ci0gICAgYXNzZXJ0SGFzT2JqZWN0
cyhCaXNvTWFsbG9jZWQ6OmJpc29IZWFwKCksIHsgcHRyIH0pOwotICAgIGRlbGV0ZSBwdHI7Ci0g
ICAgYXNzZXJ0Q2xlYW4oQmlzb01hbGxvY2VkOjpiaXNvSGVhcCgpKTsKLX0KLQotY2xhc3MgQmlz
b01hbGxvY2VkSW5saW5lIHsKLSAgICBNQUtFX0JJU09fTUFMTE9DRURfSU5MSU5FKEJpc29NYWxs
b2NlZCk7Ci1wdWJsaWM6Ci0gICAgQmlzb01hbGxvY2VkSW5saW5lKGludCB4LCBmbG9hdCB5KQot
ICAgICAgICA6IHgoeCkKLSAgICAgICAgLCB5KHkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBp
bnQgeDsKLSAgICBmbG9hdCB5OwotfTsKLQotc3RhdGljIHZvaWQgdGVzdEJpc29NYWxsb2NlZElu
bGluZSgpCi17Ci0gICAgQmlzb01hbGxvY2VkSW5saW5lKiBwdHIgPSBuZXcgQmlzb01hbGxvY2Vk
SW5saW5lKDQsIDUpOwotICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01hbGxvY2VkSW5saW5lOjpi
aXNvSGVhcCgpLCB7IHB0ciB9KTsKLSAgICBkZWxldGUgcHRyOwotICAgIGFzc2VydENsZWFuKEJp
c29NYWxsb2NlZElubGluZTo6Ymlzb0hlYXAoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJ1bihjb25z
dCBjaGFyKiBmaWx0ZXIpCi17Ci0gICAgYXV0byBzaG91bGRSdW4gPSBbJl0gKGNvbnN0IGNoYXIq
IHRlc3ROYW1lKSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuICFmaWx0ZXIgfHwgISFzdHJjYXNl
c3RyKHRlc3ROYW1lLCBmaWx0ZXIpOwotICAgIH07Ci0gICAgCi0gICAgUlVOKHRlc3RJc29TaW1w
bGUoKSk7Ci0gICAgUlVOKHRlc3RJc29TaW1wbGVTY2F2ZW5nZUJlZm9yZURlYWxsb2MoKSk7Ci0g
ICAgUlVOKHRlc3RJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlcygpKTsKLSAgICBSVU4odGVzdElz
b0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzU2NhdmVuZ2VJbk1pZGRsZSgpKTsKLSAgICBSVU4odGVz
dElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzU2NhdmVuZ2VJbk1pZGRsZTI4OCgpKTsKLSAgICBS
VU4odGVzdElzb01hbGxvY0FuZEZyZWVGYXN0KCkpOwotICAgIFJVTih0ZXN0Qmlzb01hbGxvY2Vk
KCkpOwotICAgIFJVTih0ZXN0Qmlzb01hbGxvY2VkSW5saW5lKCkpOwotICAgIAotICAgIHB1dHMo
IlN1Y2Nlc3MhIik7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAg
ICBjb25zdCBjaGFyKiBmaWx0ZXIgPSBudWxscHRyOwotICAgIHN3aXRjaCAoYXJnYykgewotICAg
IGNhc2UgMToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBmaWx0ZXIgPSBh
cmd2WzFdOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICB1c2FnZSgpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAgcnVuKGZpbHRlcik7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA0NGIwYzVjN2I0OGZmYzc2MmJjZDk0YzlmODVmYTUxNGY0ZGVmNjBjLi42MTdkYmIzZjNl
YTBiMzNhNjUwZTQ0MGZlMzU0Y2IyODUyYjg5MjYzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUtMzAgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgSXNvSGVhcHMg
ZG9uJ3Qgbm90aWNlIHVuY29tbWl0dGVkIFZBIGJlY29taW5nIHRoZSBmaXJzdCBlbGlnaWJsZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTW92ZSB0ZXN0
Ym1hbGxvYy5jcHAgdG8gVGVzdFdURiBzbyBpdCBydW5zIGluIGF1dG9tYXRpb24uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL2JtYWxsb2MvdGVzdC90ZXN0Ym1hbGxvYy5jcHAuCisgICAg
ICAgIChURVNUKToKKwogMjAxOS0wNS0yOCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2V3cy1idWlsZF0gUmVtb3ZlIHVudXNlZCBidWlsZGJvdCB0YWJz
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU3YWE3ZDE4MmU4ZmNmMDA1MzkwZTIyYjY1NGYz
MDYwNDVlOWMzN2YuLmQyYjVkODNmMDI3YjFlODk4N2MxOThlYzA5ZWY5ZGIwOWE2NDc3NTkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjgsNiArMjY4LDcgQEAKIAkJNTM2NzcwMzQxQ0M4
MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2NzcwMzMxQ0M4MDIyODAwRDQy
NUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tICovOyB9OwogCQk1MzY3NzAzNjFD
QzgxQjYxMDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzY3NzAzNTFD
QzgxMkY5MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCAqLzsgfTsK
IAkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFQzI1M0YxRTk2QkM4MDAw
MDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovOyB9OworCQk1M0ZDREU2QjIyOUVGRkI5MDA1
OThFQ0YgLyogSXNvSGVhcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0ZDREU2QTIyOUVGRkI5MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAgKi87IH07
CiAJCTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCAq
LzsgfTsKIAkJNTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVl
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5
N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovOyB9
OwogCQk1NUE4MTdGQzIxODEwMEUwMDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NUE4MTdGQjIxODEwMEUwMDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMu
bW0gKi87IH07CkBAIC0xNjk3LDYgKzE2OTgsNyBAQAogCQk1MzY3NzAzMzFDQzgwMjI4MDBENDI1
QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNj
cmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBX
ZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmlvcml0eVF1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNGQ0RFNkEyMjlFRkZCOTAwNTk4RUNGIC8qIElzb0hl
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXNvSGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU1MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJl
LWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFy
ZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0Y4MzQxRDk1
OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTgxN0ZCMjE4MTAwRTAwMDA0QTM5QSAvKiBBZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjg0OCw2ICsyODUwLDE0IEBACiAJCQlwYXRoID0gV2ViQ29yZTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCTUzRkNERTY5MjI5RUZGNjgwMDU5OEVDRiAvKiBibWFsbG9j
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1M0ZDREU2
QTIyOUVGRkI5MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGJt
YWxsb2M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3NTYwOTE3NjE5MjU5
QzU5MDA5RUYwNkUgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTMzMjMsNiArMzMzMyw3IEBACiAJCUJDOTA5NjQ2MTI1NTYxODkwMDA4Mzc1NiAv
KiBXVEYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUz
RkNERTY5MjI5RUZGNjgwMDU5OEVDRiAvKiBibWFsbG9jICovLAogCQkJCUMwOTkxQzRGMTQzQzdE
NjgwMDc5OThGMiAvKiBjZiAqLywKIAkJCQlFM0MyMUE3ODIxQjI1QzgyMDAzQjMxQTMgLyogY29j
b2EgKi8sCiAJCQkJN0NCQkEwNzUxOUJCOEEwOTAwQkJGMDI1IC8qIGRhcndpbiAqLywKQEAgLTM5
NjQsNiArMzk3NSw3IEBACiAJCQkJN0M4M0RFRDIxRDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hNYXAu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRDQxRDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hT
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRTAxRDBBNTkwQzAwRkVCQ0YzIC8qIElu
dGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTNGQ0RFNkIy
MjlFRkZCOTAwNTk4RUNGIC8qIElzb0hlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFQjYy
QUIyMjM2MDlERTAwNjlDQkIwIC8qIEl0ZXJhdG9yUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0EwNTA5NDExRkI5RjA2NDAwQjMzRkI4IC8qIEpTT05WYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MzFDMUQ4RTFERjhFRjcyMDA2RTk3OUYgLyogTEVCRGVjb2Rlci5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxs
b2MvSXNvSGVhcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lz
b0hlYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4YmNjMmIxOTA1MDEzZWQ1OGJhODE5NzRkOGMyODBkYzA5
ZDhkOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9i
bWFsbG9jL0lzb0hlYXAuY3BwCkBAIC0wLDAgKzEsMzQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiAhVVNFKFNZU1RFTV9NQUxMT0MpCisKKyNpbmNsdWRl
IDxibWFsbG9jL2JtYWxsb2MuaD4KKyNpbmNsdWRlIDxibWFsbG9jL0Vudmlyb25tZW50Lmg+Cisj
aW5jbHVkZSA8Ym1hbGxvYy9Jc29IZWFwSW5saW5lcy5oPgorCisjaW5jbHVkZSA8Y21hdGg+Cisj
aW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8dmVjdG9yPgorCit1
c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsKK3VzaW5nIG5hbWVzcGFjZSBibWFsbG9jOjphcGk7CisK
KyNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2lmICgh
c2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBcCiticmVhazsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCitwdXRzKCN0ZXN0ICIuLi4iKTsgICAgICAgICAgICAgICAgICAg
ICAgXAordGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3B1dHMoI3Rl
c3QgIjogT0shIik7ICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlIChmYWxzZSkKKworLy8g
Tm90aGluZyBmYW5jeSBmb3Igbm93OyB3ZSBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgV1RGIGFzc2Vy
dGlvbiBtYWNoaW5lcnkuCisjZGVmaW5lIENIRUNLKHgpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitpZiAoISEoeCkpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorYnJlYWs7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZnByaW50
ZihzdGRlcnIsICIlczolZDogaW4gJXM6IGFzc2VydGlvbiAlcyBmYWlsZWQuXG4iLCAgICAgICAg
IFwKK19fRklMRV9fLCBfX0xJTkVfXywgX19QUkVUVFlfRlVOQ1RJT05fXywgI3gpOyAgICAgICAg
ICAgICAgIFwKK2Fib3J0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCit9IHdoaWxlIChmYWxzZSkKKworc3RhdGljIHN0ZDo6c2V0PHZv
aWQqPiB0b3B0cnNldChjb25zdCBzdGQ6OnZlY3Rvcjx2b2lkKj4mIHB0cnMpCit7CisgICAgc3Rk
OjpzZXQ8dm9pZCo+IHJlc3VsdDsKKyAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpIHsKKyAgICAg
ICAgaWYgKHB0cikKKyAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQocHRyKTsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgYXNzZXJ0RW1wdHlQb2ludGVyU2V0KGNv
bnN0IHN0ZDo6c2V0PHZvaWQqPiYgcG9pbnRlcnMpCit7CisgICAgaWYgKEVudmlyb25tZW50Ojpn
ZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKKyAgICAgICAgcHJpbnRmKCIgICAgc2tpcHBp
bmcgY2hlY2tzIGJlY2F1c2UgRGVidWdIZWFwLlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKHBvaW50ZXJzLmVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBwcmludGYo
IlBvaW50ZXIgc2V0IG5vdCBlbXB0eSFcbiIpOworICAgIHByaW50ZigiUG9pbnRlcnM6Iik7Cisg
ICAgZm9yICh2b2lkKiBwdHIgOiBwb2ludGVycykKKyAgICAgICAgcHJpbnRmKCIgJXAiLCBwdHIp
OworICAgIHByaW50ZigiXG4iKTsKKyAgICBDSEVDSyhwb2ludGVycy5lbXB0eSgpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+CitzdGF0aWMgdm9pZCBhc3NlcnRIYXNPYmplY3Rz
KElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBzdGQ6OnNldDx2b2lkKj4gcG9pbnRlcnMpCit7Cisg
ICAgaWYgKEVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKKyAgICAg
ICAgcHJpbnRmKCIgICAgc2tpcHBpbmcgY2hlY2tzIGJlY2F1c2UgRGVidWdIZWFwLlxuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOworICAg
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgaW1wbC5mb3JF
YWNoTGl2ZU9iamVjdCgKKyAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKKyAgICAgICAgICAg
IHBvaW50ZXJzLmVyYXNlKG9iamVjdCk7CisgICAgICAgIH0pOworICAgIGFzc2VydEVtcHR5UG9p
bnRlclNldChwb2ludGVycyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIGhlYXBUeXBlPgorc3Rh
dGljIHZvaWQgYXNzZXJ0SGFzT25seU9iamVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXAsIHN0
ZDo6c2V0PHZvaWQqPiBwb2ludGVycykKK3sKKyAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgpLT5p
c0RlYnVnSGVhcEVuYWJsZWQoKSkgeworICAgICAgICBwcmludGYoIiAgICBza2lwcGluZyBjaGVj
a3MgYmVjYXVzZSBEZWJ1Z0hlYXAuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
dXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CisgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2Nr
ZXIoaW1wbC5sb2NrKTsKKyAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBbJl0g
KHZvaWQqIG9iamVjdCkgeworICAgICAgICAgICAgQ0hFQ0socG9pbnRlcnMuZXJhc2Uob2JqZWN0
KSA9PSAxKTsKKyAgICAgICAgfSk7CisgICAgYXNzZXJ0RW1wdHlQb2ludGVyU2V0KHBvaW50ZXJz
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+CitzdGF0aWMgdm9pZCBhc3NlcnRD
bGVhbihJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCkKK3sKKyAgICBzY2F2ZW5nZVRoaXNUaHJlYWQo
KTsKKyAgICBpZiAoIUVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsK
KyAgICAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOworICAgICAgICB7CisgICAgICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOworICAgICAgICAgICAg
Q0hFQ0soIWltcGwubnVtTGl2ZU9iamVjdHMoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaGVh
cC5zY2F2ZW5nZSgpOworICAgIGlmICghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVu
YWJsZWQoKSkgeworICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CisgICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgICAgIENIRUNLKCFp
bXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOworICAgIH0KK30KKworVEVTVChibWFsbG9jLCBJc29T
aW1wbGUpCit7CisgICAgc3RhdGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOworICAgIHZvaWQqIHB0
cjEgPSBoZWFwLmFsbG9jYXRlKCk7CisgICAgQ0hFQ0socHRyMSk7CisgICAgdm9pZCogcHRyMiA9
IGhlYXAuYWxsb2NhdGUoKTsKKyAgICBDSEVDSyhwdHIyKTsKKyAgICBDSEVDSyhwdHIxICE9IHB0
cjIpOworICAgIENIRUNLKHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNoYXIqPihwdHIxKSAtIHN0YXRp
Y19jYXN0PGNoYXIqPihwdHIyKSkgPj0gOCk7CisgICAgYXNzZXJ0SGFzT2JqZWN0cyhoZWFwLCB7
cHRyMSwgcHRyMn0pOworICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIxKTsKKyAgICBoZWFwLmRlYWxs
b2NhdGUocHRyMik7CisgICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Cit9CisKK1RFU1QoYm1hbGxvYywg
SXNvU2ltcGxlU2NhdmVuZ2VCZWZvcmVEZWFsbG9jKQoreworICAgIHN0YXRpYyBJc29IZWFwPGRv
dWJsZT4gaGVhcDsKKyAgICB2b2lkKiBwdHIxID0gaGVhcC5hbGxvY2F0ZSgpOworICAgIENIRUNL
KHB0cjEpOworICAgIHZvaWQqIHB0cjIgPSBoZWFwLmFsbG9jYXRlKCk7CisgICAgQ0hFQ0socHRy
Mik7CisgICAgQ0hFQ0socHRyMSAhPSBwdHIyKTsKKyAgICBDSEVDSyhzdGQ6OmFicyhzdGF0aWNf
Y2FzdDxjaGFyKj4ocHRyMSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMikpID49IDgpOworICAg
IHNjYXZlbmdlVGhpc1RocmVhZCgpOworICAgIGFzc2VydEhhc09ubHlPYmplY3RzKGhlYXAsIHtw
dHIxLCBwdHIyfSk7CisgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEpOworICAgIGhlYXAuZGVhbGxv
Y2F0ZShwdHIyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJ
c29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlcykKK3sKKyAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+
IGhlYXA7CisgICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTAwMDAwOyBpLS07KSB7CisgICAgICAgIHZvaWQqIHB0ciA9IGhlYXAuYWxsb2NhdGUoKTsK
KyAgICAgICAgQ0hFQ0socHRyKTsKKyAgICAgICAgcHRycy5wdXNoX2JhY2socHRyKTsKKyAgICB9
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0cnMuc2l6ZSgpOyBpICs9IDIpIHsKKyAg
ICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOworICAgICAgICBwdHJzW2ldID0gbnVsbHB0
cjsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXplKCkgLyAyOyBpLS07KQor
ICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOworICAgIGZvciAodm9pZCog
cHRyIDogcHRycykKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CisgICAgYXNzZXJ0Q2xl
YW4oaGVhcCk7Cit9CisKK1RFU1QoYm1hbGxvYywgSXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNT
Y2F2ZW5nZUluTWlkZGxlKQoreworICAgIHN0YXRpYyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKKyAg
ICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxMDAwMDA7
IGktLTspIHsKKyAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgICAgICBD
SEVDSyhwdHIpOworICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOworICAgIH0KKyAgICBDSEVD
Syh0b3B0cnNldChwdHJzKS5zaXplKCkgPT0gcHRycy5zaXplKCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7CisgICAgICAgIGhlYXAuZGVhbGxv
Y2F0ZShwdHJzW2ldKTsKKyAgICAgICAgcHRyc1tpXSA9IG51bGxwdHI7CisgICAgfQorICAgIGhl
YXAuc2NhdmVuZ2UoKTsKKyAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdlc0JlZm9yZTsKKyAg
ICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOworICAgICAgICBudW1Db21taXR0ZWRQYWdlc0Jl
Zm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKKyAgICB9CisgICAgYXNzZXJ0SGFzT25s
eU9iamVjdHMoaGVhcCwgdG9wdHJzZXQocHRycykpOworICAgIGZvciAodW5zaWduZWQgaSA9IHB0
cnMuc2l6ZSgpIC8gMjsgaS0tOykKKyAgICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5hbGxvY2F0
ZSgpKTsKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwu
bG9jayk7CisgICAgICAgIENIRUNLKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID09IGltcGwubnVt
Q29tbWl0dGVkUGFnZXMoKSk7CisgICAgfQorICAgIGZvciAodm9pZCogcHRyIDogcHRycykKKyAg
ICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CisgICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Cit9CisK
K1RFU1QoYm1hbGxvYywgSXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxl
Mjg4KQoreworICAgIHN0YXRpYyBJc29IZWFwPGNoYXJbMjg4XT4gaGVhcDsKKyAgICBzdGQ6OnZl
Y3Rvcjx2b2lkKj4gcHRyczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxMDAwMDA7IGktLTspIHsK
KyAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgICAgICBDSEVDSyhwdHIp
OworICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOworICAgIH0KKyAgICBDSEVDSyh0b3B0cnNl
dChwdHJzKS5zaXplKCkgPT0gcHRycy5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7CisgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHJz
W2ldKTsKKyAgICAgICAgcHRyc1tpXSA9IG51bGxwdHI7CisgICAgfQorICAgIGhlYXAuc2NhdmVu
Z2UoKTsKKyAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdlc0JlZm9yZTsKKyAgICBhdXRvJiBp
bXBsID0gaGVhcC5pbXBsKCk7CisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
IGxvY2tlcihpbXBsLmxvY2spOworICAgICAgICBudW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9IGlt
cGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKKyAgICB9CisgICAgYXNzZXJ0SGFzT25seU9iamVjdHMo
aGVhcCwgdG9wdHJzZXQocHRycykpOworICAgIGZvciAodW5zaWduZWQgaSA9IHB0cnMuc2l6ZSgp
IC8gMjsgaS0tOykKKyAgICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKKyAg
ICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Cisg
ICAgICAgIENIRUNLKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID09IGltcGwubnVtQ29tbWl0dGVk
UGFnZXMoKSk7CisgICAgfQorICAgIGZvciAodm9pZCogcHRyIDogcHRycykKKyAgICAgICAgaGVh
cC5kZWFsbG9jYXRlKHB0cik7CisgICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Cit9CisKK1RFU1QoYm1h
bGxvYywgSXNvTWFsbG9jQW5kRnJlZUZhc3QpCit7CisgICAgc3RhdGljIElzb0hlYXA8Y2hhclsy
NTZdPiBoZWFwOworICAgIHZvaWQqIHB0ciA9IG51bGxwdHI7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxZTY7ICsraSkgeworICAgICAgICBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7CisgICAgICAg
IGhlYXAuZGVhbGxvY2F0ZShwdHIpOworICAgIH0KKyAgICBDSEVDSyghSXNvUGFnZUJhc2U6OnBh
Z2VGb3IocHRyKS0+aXNTaGFyZWQoKSk7Cit9CisKK2NsYXNzIEJpc29NYWxsb2NlZCB7CisgICAg
TUFLRV9CSVNPX01BTExPQ0VEKEJpc29NYWxsb2NlZCwgQk5PRVhQT1JUKTsKK3B1YmxpYzoKKyAg
ICBCaXNvTWFsbG9jZWQoaW50IHgsIGZsb2F0IHkpCisgICAgICAgIDogeCh4KQorICAgICAgICAs
IHkoeSkKKyAgICB7CisgICAgfQorCisgICAgaW50IHg7CisgICAgZmxvYXQgeTsKK307CisKK01B
S0VfQklTT19NQUxMT0NFRF9JTVBMKEJpc29NYWxsb2NlZCk7CisKK1RFU1QoYm1hbGxvYywgQmlz
b01hbGxvY2VkKQoreworICAgIEJpc29NYWxsb2NlZCogcHRyID0gbmV3IEJpc29NYWxsb2NlZCg0
LCA1KTsKKyAgICBhc3NlcnRIYXNPYmplY3RzKEJpc29NYWxsb2NlZDo6Ymlzb0hlYXAoKSwgeyBw
dHIgfSk7CisgICAgZGVsZXRlIHB0cjsKKyAgICBhc3NlcnRDbGVhbihCaXNvTWFsbG9jZWQ6OmJp
c29IZWFwKCkpOworfQorCitjbGFzcyBCaXNvTWFsbG9jZWRJbmxpbmUgeworICAgIE1BS0VfQklT
T19NQUxMT0NFRF9JTkxJTkUoQmlzb01hbGxvY2VkKTsKK3B1YmxpYzoKKyAgICBCaXNvTWFsbG9j
ZWRJbmxpbmUoaW50IHgsIGZsb2F0IHkpCisgICAgICAgIDogeCh4KQorICAgICAgICAsIHkoeSkK
KyAgICB7CisgICAgfQorCisgICAgaW50IHg7CisgICAgZmxvYXQgeTsKK307CisKK1RFU1QoYm1h
bGxvYywgQmlzb01hbGxvY2VkSW5saW5lKQoreworICAgIEJpc29NYWxsb2NlZElubGluZSogcHRy
ID0gbmV3IEJpc29NYWxsb2NlZElubGluZSg0LCA1KTsKKyAgICBhc3NlcnRIYXNPYmplY3RzKEJp
c29NYWxsb2NlZElubGluZTo6Ymlzb0hlYXAoKSwgeyBwdHIgfSk7CisgICAgZGVsZXRlIHB0cjsK
KyAgICBhc3NlcnRDbGVhbihCaXNvTWFsbG9jZWRJbmxpbmU6OmJpc29IZWFwKCkpOworfQorCisK
K1RFU1QoYm1hbGxvYywgU2NhdmVuZ2VkTWVtb3J5U2hvdWxkQmVSZXVzZWQpCit7CisgICAgc3Rh
dGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOworCisgICAgYXV0byBydW4gPSBbXSAodW5zaWduZWQg
bnVtUGFnZXNUb0NvbW1pdCkgeworICAgICAgICBhdXRvKiBwdHIxID0gaGVhcC5hbGxvY2F0ZSgp
OworCisgICAgICAgIHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOworCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IDtpKyspIHsKKyAgICAgICAgICAgIHZvaWQqIHB0ciA9IGhlYXAuYWxsb2Nh
dGUoKTsKKyAgICAgICAgICAgIENIRUNLKHB0cik7CisgICAgICAgICAgICBwdHJzLnB1c2hfYmFj
ayhwdHIpOworICAgICAgICAgICAgaWYgKGhlYXAuaW1wbCgpLm51bUNvbW1pdHRlZFBhZ2VzKCkg
PT0gbnVtUGFnZXNUb0NvbW1pdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIHN0ZDo6c2V0PHZvaWQqPiB1bmlxdWVkUHRycyA9IHRvcHRyc2V0KHB0cnMpOwor
CisgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIxKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IElzb1BhZ2U8ZGVjbHR5cGUoaGVhcCk6OkNvbmZpZz46Om51bU9iamVjdHMgLSAx
OyBpKyspIHsKKyAgICAgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKKyAgICAgICAg
ICAgIHVuaXF1ZWRQdHJzLmVyYXNlKHB0cnNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgc2Nh
dmVuZ2UoKTsKKyAgICAgICAgYXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwgdW5pcXVlZFB0cnMp
OworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgc2VlbXMgdG8gcGFzcyB3aGVuIGxsZGIg
aXMgYXR0YWNoZWQgYnV0IHRoZSBzY2F2ZW5nZXIgdGhyZWFkIGlzbid0IHJ1bm5pbmcuLi4KKyAg
ICAgICAgLy8gc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
Mzg0CisgICAgICAgIGF1dG8qIHB0cjIgPSBoZWFwLmFsbG9jYXRlKCk7CisgICAgICAgIC8vIENI
RUNLKHB0cjEgPT0gcHRyMik7CisgICAgfTsKKworICAgIHJ1bigyKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370984</attachid>
            <date>2019-05-30 15:25:04 -0700</date>
            <delta_ts>2019-05-30 16:07:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-198301-20190530152502.patch</filename>
            <type>text/plain</type>
            <size>50292</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZGRmZDgwNjdiOTYwY2Yw
ZWFmNmMyMDBiOWExM2VlMGM4NWIwOGFhMS4uYmE5ZGJmMGIyYTQyYjQ2NmUyODI4YWEwMTA4NjAw
YmJlYjNkMTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA1LTMwICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzb0hlYXBzIGRv
bid0IG5vdGljZSB1bmNvbW1pdHRlZCBWQSBiZWNvbWluZyB0aGUgZmlyc3QgZWxpZ2libGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIElzb0RpcmVjdG9y
eSBoYXMgYSBmaXJzdEVsaWdpYmxlIG1lbWJlciB0aGF0IGlzIHVzZWQgYXMgYW4KKyAgICAgICAg
b3B0aW1pemF0aW9uIHRvIGhlbHAgZmluZCB0aGUgZmlyc3QgZml0LiBIb3dldmVyIGlmIHRoZSBz
Y2F2ZW5nZXIKKyAgICAgICAgZGVjb21taXR0ZWQgYSBwYWdlIGJlZm9yZSBmaXJzdEVsaWdpYmxl
IHRoZW4gd2Ugd291bGRuJ3QgbW92ZQorICAgICAgICBmaXJzdEVsaWdpYmxlLiBUaHVzLCBpZiBu
byBzcGFjZSBpcyBldmVyIGZyZWVkIGJlbG93IGZpcnN0RWxpZ2libGUKKyAgICAgICAgd2Ugd2ls
bCBuZXZlciByZXVzZWQgdGhlIGRlY29tbWl0dGVkIG1lbW9yeSAoZS5nLiBpZiB0aGUgVkEgcGFn
ZQorICAgICAgICBpcyBkZWNvbW1pdHRlZCkuIFRoZSBmaXggaXMgdG8gbWFrZSBJc29EaXJlY3Rv
cnk6OmRpZERlY29tbWl0IG1vdmUKKyAgICAgICAgdGhlIGZpcnN0RWxpZ2libGUgcGFnZSBiYWNr
IGlmIHRoZSBkZWNvbW1pdHRlZCBwYWdlIGlzIHNtYWxsZXIKKyAgICAgICAgdGhhbiB0aGUgY3Vy
cmVudCBmaXJzdEVsaWdpYmxlLiBBcyBzdWNoLCB0aGlzIHBhdGNoIHJlbmFtZXMKKyAgICAgICAg
Zmlyc3RFbGlnaWJsZSB0byBmaXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZC4KKworICAgICAgICBB
bHNvLCB0aGlzIHBhdGNoIGNoYW5nZXMgZ2lnYWNhZ2VFbmFibGVkRm9yUHJvY2VzcyB0byBjaGVj
ayBpZiB0aGUKKyAgICAgICAgcHJvY2VzcyBzdGFydHMgd2l0aCBUZXN0IHJhdGhlciB0aGFuIGp1
c3QgdGVzdCBhcyBUZXN0V1RGIGRvZXMuCisKKyAgICAgICAgTGFzdGx5LCB1bmJla25vd25zdCB0
byBtZSBJc29IZWFwcyBhcmUgZGVwZW5kZW50IG9uIGdpZ2FjYWdlLCBzbworICAgICAgICBieSBy
ZW1vdmluZyBnaWdhY2FnZSBmcm9tIGFybTY0IEkgYWNjaWRlbnRhbGx5IGRpc2FibGVkCisgICAg
ICAgIElzb0hlYXBzLi4uCisKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3RvcnkuaDoKKyAgICAgICAgKiBibWFs
bG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBh
Z2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFn
ZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRE
ZWNvbW1pdCk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bDxDb25maWc+Ojp0YWtlRmlyc3RFbGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFw
SW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChi
bWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGJtYWxsb2MvSXNvVExTLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6ZGV0
ZXJtaW5lTWFsbG9jRmFsbGJhY2tTdGF0ZSk6CisgICAgICAgICogYm1hbGxvYy9Qcm9jZXNzQ2hl
Y2subW06CisgICAgICAgIChibWFsbG9jOjpnaWdhY2FnZUVuYWJsZWRGb3JQcm9jZXNzKToKKwog
MjAxOS0wNS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDTWFrZV0gVXNlIHRhcmdldCBvcmllbnRlZCBkZXNpZ24gZm9yIGJtYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
MmY4NWNmOTdjMjBmMWI3OWI4MTFmMWNmOTBhYjRkYmUzOTQ4NjFlLi5mNzQ3NWZhYjVlMjQxY2Q4
MzNjMDk3MmE2OWIzNWEzOGExODJkMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMyw4ICszMyw2IEBACiAJCTBGNUJGMTcz
MUYyM0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE3MjFGMjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzRC
OTNFMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNDMUY4OTcxM0UwMEI5MzVEMyAvKiBD
cnlwdG9SYW5kb20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjc0QjkzRjFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNEMUY4OTcx
M0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uY3BwICovOyB9OwotCQkwRjdFQjdGMjFGOTUyODUz
MDBGMUFCQ0IgLyogdGVzdGJtYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3RUI3RjExRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9j
LmNwcCAqLzsgfTsKLQkJMEY3RUI3RkExRjk1NDE0QzAwRjFBQkNCIC8qIGxpYmJtYWxsb2MuYSBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjI3MUJF
MThFQTM5NjMwMDhDMTUyRiAvKiBsaWJibWFsbG9jLmEgKi87IH07CiAJCTBGN0VCODIzMUY5NTQx
QjAwMEYxQUJDQiAvKiBFbGlnaWJpbGl0eVJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3RUI3RkMxRjk1NDFBRDAwRjFBQkNCIC8qIEVsaWdp
YmlsaXR5UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY3RUI4MjQxRjk1NDFCMDAwRjFBQkNCIC8qIElzb0hlYXBJbXBsSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3RUI3RkQx
Rjk1NDFBRDAwRjFBQkNCIC8qIElzb0hlYXBJbXBsSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0VCODI1MUY5NTQxQjAwMEYxQUJD
QiAvKiBEZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdFQjdGRTFGOTU0MUFEMDBGMUFCQ0IgLyogRGVmZXJyZWRU
cmlnZ2VySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMzcsNyArMTM1LDYgQEAKIAkJNjU5OUM1Q0QxRUMzRjE1OTAwQTJGN0JCIC8q
IEF2YWlsYWJsZU1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU5OUM1Q0IxRUMzRjE1OTAwQTJGN0JCIC8qIEF2YWlsYWJsZU1lbW9yeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5Mzk4ODVC
MjA3NkVFQjYwMDc0QTJFNyAvKiBCdWxrRGVjb21taXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5Mzk4ODVBMjA3NkVFQjUwMDc0QTJFNyAvKiBCdWxr
RGVjb21taXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3OTVBQjNDNzIwNkUwRDM0MDA3NEZFNzYgLyogUGh5c2ljYWxQYWdlTWFwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTVBQjNDNjIwNkUwRDI1
MDA3NEZFNzYgLyogUGh5c2ljYWxQYWdlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0M1NzFFRkYyMjM4OEIwODAwNzdBM0M3IC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQyRkM2MjEyMDk2NDA5RTAwQTk5MzYyIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovOyB9OwogCQk3QzU3MUYwMTIyMzg4Qjg0MDA3N0EzQzcgLyogU3RkTGliRXh0cmFzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzU3MUYwMDIyMzg4
Qjg0MDA3N0EzQzcgLyogU3RkTGliRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQwOTM0MzMxRkNGNDA2RDAwRTg1RUI1IC8qIEJDb21w
aWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQw
OTM0MzIxRkNGNDA1MDAwRTg1RUI1IC8qIEJDb21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEMTRBRDI5MjAyNTI5QzQwMDg5MEUzQiAv
KiBQcm9jZXNzQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMTRBRDI3MjAyNTI5QTYwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2suaCAqLzsgfTsK
QEAgLTE1NCwxMyArMTUxLDYgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwotCQkwRjdFQjdGNzFGOTU0
MTI5MDBGMUFCQ0IgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFpbmVyUG9ydGFsID0gMTQ1RjY4MzcxNzlEQzQ1
RjAwRDY1NTk4IC8qIFByb2plY3Qgb2JqZWN0ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJl
bW90ZUdsb2JhbElEU3RyaW5nID0gMTRGMjcxQkQxOEVBMzk2MzAwOEMxNTJGOwotCQkJcmVtb3Rl
SW5mbyA9IGJtYWxsb2M7Ci0JCX07CiAJCTBGN0VCODU1MUY5NTUwNTQwMEYxQUJDQiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CiAJCQljb250YWluZXJQb3J0YWwgPSAxNDVGNjgzNzE3OURDNDVGMDBENjU1OTggLyogUHJvamVj
dCBvYmplY3QgKi87CkBAIC0xNzcsMTggKzE2Nyw2IEBACiAJCX07CiAvKiBFbmQgUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAotLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCi0JCTBGN0VCN0VEMUY5NTI4NTMwMEYxQUJDQiAvKiBDb3B5RmlsZXMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKLQkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKLQkJCWRz
dFN1YmZvbGRlclNwZWMgPSAwOwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7Ci0JCX07Ci0vKiBFbmQgUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCQkwRjI2QTdBNDIwNTQ4MzBEMDA5MEExNDEgLyogUGVyUHJvY2Vzcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQZXJQcm9jZXNzLmNwcDsgcGF0aCA9IGJtYWxs
b2MvUGVyUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTE2Nzcz
MUZBRDY4NTIwMDgyMzZBOCAvKiBibWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IGJtYWxsb2MuY3BwOyBwYXRoID0gYm1hbGxvYy9ibWFsbG9jLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMiw4ICsxODAsNiBAQAogCQkwRjVCRjE3MjFG
MjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCRXhwb3J0Lmg7IHBh
dGggPSBibWFsbG9jL0JFeHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDcnlwdG9SYW5kb20uaDsgcGF0aCA9IGJtYWxsb2MvQ3J5cHRvUmFu
ZG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzRCOTNEMUY4OTcxM0UwMEI5
MzVEMyAvKiBDcnlwdG9SYW5kb20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ3J5cHRvUmFuZG9tLmNwcDsgcGF0aCA9IGJtYWxsb2MvQ3J5cHRvUmFuZG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3RUI3RUYxRjk1Mjg1MzAwRjFBQkNCIC8q
IHRlc3RibWFsbG9jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSB0ZXN0Ym1hbGxvYzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJ
MEY3RUI3RjExRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IHRlc3RibWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
RUI3RkMxRjk1NDFBRDAwRjFBQkNCIC8qIEVsaWdpYmlsaXR5UmVzdWx0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVsaWdpYmlsaXR5UmVzdWx0Lmg7IHBhdGggPSBibWFsbG9j
L0VsaWdpYmlsaXR5UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJMEY3
RUI3RkQxRjk1NDFBRDAwRjFBQkNCIC8qIElzb0hlYXBJbXBsSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBJc29IZWFwSW1wbElubGluZXMuaDsgcGF0aCA9IGJtYWxs
b2MvSXNvSGVhcEltcGxJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
MEY3RUI3RkUxRjk1NDFBRDAwRjFBQkNCIC8qIERlZmVycmVkVHJpZ2dlcklubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOyBw
YXRoID0gYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKQEAgLTMyOCwxNSArMzA0LDYgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwotCQkwRjdFQjdFQzFGOTUyODUzMDBGMUFCQ0IgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTdDNTcxRUZGMjIzODhCMDgwMDc3QTNDNyAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJCTBGN0VCN0ZBMUY5NTQxNEMw
MEYxQUJDQiAvKiBsaWJibWFsbG9jLmEgaW4gRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIAkJMTRDQzM5NDExOEVB
ODc0MzAwNEFGRTM0IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNTYsMTQg
KzMyMyw2IEBACiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0JCTBGN0VCN0YwMUY5NTI4NTMwMEYxQUJDQiAv
KiB0ZXN0ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkw
RjdFQjdGMTFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdGJtYWxsb2MuY3BwICovLAotCQkJKTsKLQkJ
CXBhdGggPSB0ZXN0OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJMEY3RUI3
RjkxRjk1NDE0QzAwRjFBQkNCIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDUxLDE0ICs0MTAsMTIgQEAKIAkJCQkwRjdFQjdGQjFG
OTU0MTY5MDBGMUFCQ0IgLyogaXNvICovLAogCQkJCTE0NUY2ODQwMTc5REM0NUYwMEQ2NTU5OCAv
KiBQcm9kdWN0cyAqLywKIAkJCQkxNEQ5REI0RjE3RjI4Njg5MDBFQUFCNzkgLyogc3RkbGliICov
LAotCQkJCTBGN0VCN0YwMUY5NTI4NTMwMEYxQUJDQiAvKiB0ZXN0ICovLAogCQkJKTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTE0NUY2ODQwMTc5REM0NUYwMEQ2NTU5OCAv
KiBQcm9kdWN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJMEY3RUI3RUYxRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jICovLAogCQkJCTE0RjI3
MUJFMThFQTM5NjMwMDhDMTUyRiAvKiBsaWJibWFsbG9jLmEgKi8sCiAJCQkJMTRDQzM5NDQxOEVB
ODc0MzAwNEFGRTM0IC8qIGxpYm1ibWFsbG9jLmR5bGliICovLAogCQkJKTsKQEAgLTcwNywyNCAr
NjY0LDYgQEAKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCi0JCTBGN0VCN0VFMUY5NTI4NTMwMEYxQUJD
QiAvKiB0ZXN0Ym1hbGxvYyAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjdFQjdGNjFGOTUyODUzMDBGMUFCQ0IgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRlc3RibWFsbG9jIiAqLzsK
LQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTBGN0VCN0VCMUY5NTI4NTMwMEYxQUJDQiAvKiBTb3Vy
Y2VzICovLAotCQkJCTBGN0VCN0VDMUY5NTI4NTMwMEYxQUJDQiAvKiBGcmFtZXdvcmtzICovLAot
CQkJCTBGN0VCN0VEMUY5NTI4NTMwMEYxQUJDQiAvKiBDb3B5RmlsZXMgKi8sCi0JCQkpOwotCQkJ
YnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJMEY3RUI3Rjgx
Rjk1NDEyOTAwRjFBQkNCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFt
ZSA9IHRlc3RibWFsbG9jOwotCQkJcHJvZHVjdE5hbWUgPSB0ZXN0Ym1hbGxvYzsKLQkJCXByb2R1
Y3RSZWZlcmVuY2UgPSAwRjdFQjdFRjFGOTUyODUzMDBGMUFCQ0IgLyogdGVzdGJtYWxsb2MgKi87
Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwotCQl9Owog
CQkxNENDMzk0MzE4RUE4NzQzMDA0QUZFMzQgLyogbWJtYWxsb2MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTRDQzM5NDUxOEVB
ODc0MzAwNEFGRTM0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJtYm1hbGxvYyIgKi87CkBAIC03NjksMTAgKzcwOCw2IEBACiAJCQkJTGFzdFN3aWZ0VXBk
YXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwogCQkJCVRhcmdl
dEF0dHJpYnV0ZXMgPSB7Ci0JCQkJCTBGN0VCN0VFMUY5NTI4NTMwMEYxQUJDQiA9IHsKLQkJCQkJ
CUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDkuMDsKLQkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0g
TWFudWFsOwotCQkJCQl9OwogCQkJCQkwRjdFQjg1MDFGOTU1MDRCMDBGMUFCQ0IgPSB7CiAJCQkJ
CQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA5LjA7CiAJCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9
IEF1dG9tYXRpYzsKQEAgLTc5NCwyMCArNzI5LDExIEBACiAJCQkJMEY3RUI4NTAxRjk1NTA0QjAw
RjFBQkNCIC8qIEFsbCAqLywKIAkJCQkxNEYyNzFCRDE4RUEzOTYzMDA4QzE1MkYgLyogYm1hbGxv
YyAqLywKIAkJCQkxNENDMzk0MzE4RUE4NzQzMDA0QUZFMzQgLyogbWJtYWxsb2MgKi8sCi0JCQkJ
MEY3RUI3RUUxRjk1Mjg1MzAwRjFBQkNCIC8qIHRlc3RibWFsbG9jICovLAogCQkJKTsKIAkJfTsK
IC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwotCQkwRjdFQjdFQjFGOTUyODUzMDBGMUFCQ0IgLyogU291cmNlcyAq
LyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTBGN0VCN0YyMUY5NTI4NTMwMEYxQUJD
QiAvKiB0ZXN0Ym1hbGxvYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIAkJMTRDQzM5NDAxOEVBODc0MzAw
NEFGRTM0IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC04NTYsMTEgKzc4Miw2IEBACiAv
KiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJn
ZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KLQkJMEY3RUI3RjgxRjk1NDEyOTAwRjFBQkNCIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owot
CQkJdGFyZ2V0ID0gMTRGMjcxQkQxOEVBMzk2MzAwOEMxNTJGIC8qIGJtYWxsb2MgKi87Ci0JCQl0
YXJnZXRQcm94eSA9IDBGN0VCN0Y3MUY5NTQxMjkwMEYxQUJDQiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87Ci0JCX07CiAJCTBGN0VCODU2MUY5NTUwNTQwMEYxQUJDQiAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdl
dCA9IDE0RjI3MUJEMThFQTM5NjMwMDhDMTUyRiAvKiBibWFsbG9jICovOwpAQCAtODc0LDMwICs3
OTUsNiBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCi0JCTBGN0VCN0YzMUY5NTI4NTMwMEYx
QUJDQiAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxNEI2NTBDNzE4RjM5RjQ4MDA3NTE5NjggLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJ
fTsKLQkJMEY3RUI3RjQxRjk1Mjg1MzAwRjFBQkNCIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
MTRCNjUwQzcxOEYzOUY0ODAwNzUxOTY4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKLQkJ
CWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsK
LQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJMEY3RUI3RjUxRjk1Mjg1MzAwRjFB
QkNCIC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
LQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMTRCNjUwQzUxOEYzOUY0ODAwNzUxOTY4
IC8qIEJhc2UueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0J
CX07CiAJCTBGN0VCODUyMUY5NTUwNEIwMEYxQUJDQiAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTk5MiwxNiAr
ODg5LDYgQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCQkwRjdFQjdGNjFGOTUyODUzMDBG
MUFCQ0IgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRl
c3RibWFsbG9jIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWls
ZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTBGN0VCN0YzMUY5NTI4NTMwMEYxQUJDQiAvKiBEZWJ1
ZyAqLywKLQkJCQkwRjdFQjdGNDFGOTUyODUzMDBGMUFCQ0IgLyogUmVsZWFzZSAqLywKLQkJCQkw
RjdFQjdGNTFGOTUyODUzMDBGMUFCQ0IgLyogUHJvZHVjdGlvbiAqLywKLQkJCSk7Ci0JCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBQcm9kdWN0aW9uOwotCQl9OwogCQkwRjdFQjg1MTFGOTU1MDRCMDBGMUFCQ0IgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkFsbCIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCmluZGV4IDMwZGY4YTZmYjJiOTkw
NGEwNGY4NGUyMzk0MjljZTJkNmM4YjQ2YjkuLjFkODI0ZjQ5Yzc2NTczYmMzNzdiNjdiZGNiN2Nk
ZjUxMzhkYmYyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0
b3J5LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4
LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBCaXRzPG51bVBhZ2VzPiBtX2VtcHR5OwogICAgIEJp
dHM8bnVtUGFnZXM+IG1fY29tbWl0dGVkOwogICAgIHN0ZDo6YXJyYXk8SXNvUGFnZTxDb25maWc+
KiwgbnVtUGFnZXM+IG1fcGFnZXM7Ci0gICAgdW5zaWduZWQgbV9maXJzdEVsaWdpYmxlIHsgMCB9
OworICAgIHVuc2lnbmVkIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyAwIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGly
ZWN0b3J5SW5saW5lcy5oCmluZGV4IDY0MGQ4MmUxMjFkZDAxNWQ5N2MzNzY3OTc0Zjg2ZGZmMDEx
NzljNTguLmNjMGU2YTdkZWZlNGY4YmYwZmU2MmE0OWI0MWYyN2Y1ZmZjZjE4NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsOCArNDYs
OSBAQCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46Oklzb0RpcmVjdG9yeShJ
c29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNp
Z25lZCBwYXNzZWROdW1QYWdlcz4KIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0
b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZSgpCiB7Ci0gICAg
dW5zaWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUgfCB+bV9jb21taXR0ZWQpLmZpbmRCaXQo
bV9maXJzdEVsaWdpYmxlLCB0cnVlKTsKLSAgICBtX2ZpcnN0RWxpZ2libGUgPSBwYWdlSW5kZXg7
CisgICAgdW5zaWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUgfCB+bV9jb21taXR0ZWQpLmZp
bmRCaXQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgdHJ1ZSk7CisgICAgbV9maXJzdEVs
aWdpYmxlT3JEZWNvbW1pdHRlZCA9IHBhZ2VJbmRleDsKKyAgICBCQVNTRVJUKChtX2VsaWdpYmxl
IHwgfm1fY29tbWl0dGVkKS5maW5kQml0KDAsIHRydWUpID09IHBhZ2VJbmRleCk7CiAgICAgaWYg
KHBhZ2VJbmRleCA+PSBudW1QYWdlcykKICAgICAgICAgcmV0dXJuIEVsaWdpYmlsaXR5S2luZDo6
RnVsbDsKIApAQCAtOTcsOCArOTgsOCBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6ZGlkQmVjb21lKElzb1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUAogICAgICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVwIGRpZCBi
ZWNvbWUgZWxpZ2libGUuXG4iLCB0aGlzLCBwYWdlKTsKICAgICAgICAgbV9lbGlnaWJsZVtwYWdl
SW5kZXhdID0gdHJ1ZTsKLSAgICAgICAgbV9maXJzdEVsaWdpYmxlID0gc3RkOjptaW4obV9maXJz
dEVsaWdpYmxlLCBwYWdlSW5kZXgpOwotICAgICAgICB0aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxp
Z2libGUodGhpcyk7CisgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6
Om1pbihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCBwYWdlSW5kZXgpOworICAgICAgICB0
aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQodGhpcyk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIElzb1BhZ2VUcmlnZ2VyOjpFbXB0eToKICAgICAgICAgaWYgKHZl
cmJvc2UpCkBAIC0xMjIsNiArMTIzLDggQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNz
ZWROdW1QYWdlcz46OmRpZERlY29tbWl0KHVuc2lnbmVkIGluZGV4KQogICAgIEJBU1NFUlQoISFt
X2NvbW1pdHRlZFtpbmRleF0pOwogICAgIHRoaXMtPm1faGVhcC5pc05vTG9uZ2VyRnJlZWFibGUo
bV9wYWdlc1tpbmRleF0sIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CiAgICAgbV9jb21taXR0ZWRb
aW5kZXhdID0gZmFsc2U7CisgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0ZDo6
bWluKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIGluZGV4KTsKKyAgICB0aGlzLT5tX2hl
YXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQodGhpcyk7CiAgICAgdGhpcy0+bV9oZWFw
LmRpZERlY29tbWl0KG1fcGFnZXNbaW5kZXhdLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKaW5kZXggOWVkM2NjNTQxYjFmNDcxNmEz
ZTY5OTBiZjFmYWM5Y2EyYTliMDI0MS4uMjI4ZmE1NGM0OTdjOTllYTk5NWIwZDVhNjQ5YTRhN2Ux
ZWEyMjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDggKzgw
LDggQEAgcHVibGljOgogICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxp
Z2libGUoKTsKICAgICAKICAgICAvLyBDYWxsYmFja3MgZnJvbSBkaXJlY3RvcnkuCi0gICAgdm9p
ZCBkaWRCZWNvbWVFbGlnaWJsZShJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5l
RGlyZWN0b3J5PiopOwotICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGUoSXNvRGlyZWN0b3J5PENv
bmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qKTsKKyAgICB2b2lkIGRp
ZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2Vz
SW5JbmxpbmVEaXJlY3Rvcnk+Kik7CisgICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21t
aXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBh
Z2VzPiopOwogICAgIAogICAgIHZvaWQgc2NhdmVuZ2UoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+
Jikgb3ZlcnJpZGU7CiAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fbmV4dERpcmVjdG9yeVBhZ2VJbmRleCB7IDEgfTsgLy8gV2Ugc3RhcnQgYXQgMSBzbyB0aGF0
IHRoZSBoaWdoIHdhdGVyIG1hcmsgYmVpbmcgemVybyBtZWFucyB3ZSd2ZSBvbmx5IGFsbG9jYXRl
ZCBpbiB0aGUgaW5saW5lIGRpcmVjdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2F2ZW5nZS4KICAgICB1
bnNpZ25lZCBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgeyAwIH07CiAgICAgCi0gICAgYm9vbCBt
X2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGUgeyB0cnVlIH07Ci0gICAgSXNvRGlyZWN0b3J5UGFn
ZTxDb25maWc+KiBtX2ZpcnN0RWxpZ2libGVEaXJlY3RvcnkgeyBudWxscHRyIH07CisgICAgYm9v
bCBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkIHsgdHJ1ZSB9OworICAg
IElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGly
ZWN0b3J5IHsgbnVsbHB0ciB9OwogICAgIAogICAgIElzb1RMU0FsbG9jYXRvckVudHJ5PENvbmZp
Zz4gbV9hbGxvY2F0b3I7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29IZWFwSW1wbElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmgKaW5kZXggYmE0MTA5MzUyNzdjOTBkN2U3NzIxNWRiYmNkOWU3Zjg2MGJlZjgyNy4u
MjdiYTkzZTQyNTk1NTBlNTlmZjA4NTBkMzhmYWI0MWM2NzNiNmU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsMjYgKzQ0LDI2IEBAIElz
b0hlYXBJbXBsPENvbmZpZz46Oklzb0hlYXBJbXBsKCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZp
Zz4KIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZp
cnN0RWxpZ2libGUoKQogewotICAgIGlmIChtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGUpIHsK
KyAgICBpZiAobV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCkgewogICAg
ICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1faW5saW5lRGlyZWN0b3J5
LnRha2VGaXJzdEVsaWdpYmxlKCk7CiAgICAgICAgIGlmIChyZXN1bHQua2luZCA9PSBFbGlnaWJp
bGl0eUtpbmQ6OkZ1bGwpCi0gICAgICAgICAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGUg
PSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21t
aXR0ZWQgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZpcnN0RWxpZ2libGVEaXJlY3RvcnkpIHsKKyAgICBp
ZiAoIW1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSkgewogICAgICAgICAvLyBJ
ZiBub3RoaW5nIGlzIGVsaWdpYmxlLCBpdCBjYW4gb25seSBiZSBiZWNhdXNlIHdlIGhhdmUgbm8g
ZGlyZWN0b3JpZXMuIEl0IHdvdWxkbid0IGJlIHRoZSBlbmQKLSAgICAgICAgLy8gb2YgdGhlIHdv
cmxkIGlmIHdlIGJyb2tlIHRoaXMgaW52YXJpYW50LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBk
aWRCZWNvbWVFbGlnaWJsZSgpIHdvdWxkIG5lZWQKKyAgICAgICAgLy8gb2YgdGhlIHdvcmxkIGlm
IHdlIGJyb2tlIHRoaXMgaW52YXJpYW50LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCgpIHdvdWxkIG5lZWQKICAgICAgICAgLy8gYSBudWxsIGNo
ZWNrLgogICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1faGVhZERpcmVjdG9yeSk7CiAgICAgICAg
IFJFTEVBU0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5KTsKICAgICB9CiAgICAgCi0gICAgZm9y
ICg7IG1fZmlyc3RFbGlnaWJsZURpcmVjdG9yeTsgbV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5ID0g
bV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5LT5uZXh0KSB7Ci0gICAgICAgIEVsaWdpYmlsaXR5UmVz
dWx0PENvbmZpZz4gcmVzdWx0ID0gbV9maXJzdEVsaWdpYmxlRGlyZWN0b3J5LT5wYXlsb2FkLnRh
a2VGaXJzdEVsaWdpYmxlKCk7CisgICAgZm9yICg7IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRl
ZERpcmVjdG9yeTsgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbV9maXJz
dEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LT5uZXh0KSB7CisgICAgICAgIEVsaWdpYmls
aXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGly
ZWN0b3J5LT5wYXlsb2FkLnRha2VGaXJzdEVsaWdpYmxlKCk7CiAgICAgICAgIGlmIChyZXN1bHQu
a2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpIHsKLSAgICAgICAgICAgIG1fZGlyZWN0b3J5
SGlnaFdhdGVybWFyayA9IHN0ZDo6bWF4KG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaywgbV9maXJz
dEVsaWdpYmxlRGlyZWN0b3J5LT5pbmRleCgpKTsKKyAgICAgICAgICAgIG1fZGlyZWN0b3J5SGln
aFdhdGVybWFyayA9IHN0ZDo6bWF4KG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaywgbV9maXJzdEVs
aWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LT5pbmRleCgpKTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CkBAIC03OCwyNiArNzgsMjYgQEAgRWxpZ2liaWxp
dHlSZXN1bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RFbGlnaWJsZSgp
CiAgICAgICAgIG1fdGFpbERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICB9CiAgICAgbV9k
aXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gbmV3RGlyZWN0b3J5LT5pbmRleCgpOwotICAgIG1fZmly
c3RFbGlnaWJsZURpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKKyAgICBtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7CiAgICAgRWxpZ2liaWxpdHlSZXN1
bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJlY3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2li
bGUoKTsKICAgICBSRUxFQVNFX0JBU1NFUlQocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5k
OjpGdWxsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlKElzb0RpcmVj
dG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCit2b2lk
IElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0Rp
cmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCiB7
CiAgICAgUkVMRUFTRV9CQVNTRVJUKGRpcmVjdG9yeSA9PSAmbV9pbmxpbmVEaXJlY3RvcnkpOwot
ICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZSA9IHRydWU7CisgICAgbV9pc0lubGluZURp
cmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGUo
SXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4q
IGRpcmVjdG9yeSkKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVP
ckRlY29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+
OjpudW1QYWdlcz4qIGRpcmVjdG9yeSkKIHsKLSAgICBSRUxFQVNFX0JBU1NFUlQobV9maXJzdEVs
aWdpYmxlRGlyZWN0b3J5KTsKKyAgICBSRUxFQVNFX0JBU1NFUlQobV9maXJzdEVsaWdpYmxlT3JE
ZWNvbW1pdGVkRGlyZWN0b3J5KTsKICAgICBhdXRvKiBkaXJlY3RvcnlQYWdlID0gSXNvRGlyZWN0
b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKGRpcmVjdG9yeSk7Ci0gICAgaWYgKGRpcmVjdG9yeVBh
Z2UtPmluZGV4KCkgPCBtX2ZpcnN0RWxpZ2libGVEaXJlY3RvcnktPmluZGV4KCkpCi0gICAgICAg
IG1fZmlyc3RFbGlnaWJsZURpcmVjdG9yeSA9IGRpcmVjdG9yeVBhZ2U7CisgICAgaWYgKGRpcmVj
dG9yeVBhZ2UtPmluZGV4KCkgPCBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rvcnkt
PmluZGV4KCkpCisgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9
IGRpcmVjdG9yeVBhZ2U7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvVExTLmNwcAppbmRleCBkYmMwZTdlYmEzYTMwYWUxMzg0ZjAwOTVjMGQ3MTI1Zjg0
MjdhMTczLi5jMjAzMjEzYjg1NWJkY2RjOWVkMDc5NmZkMjA0YWI1ZDk0OGQ4MDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5jcHAKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFMuY3BwCkBAIC0xODMsMTEgKzE4MywxMyBAQCB2b2lkIElzb1RMUzo6
ZGV0ZXJtaW5lTWFsbG9jRmFsbGJhY2tTdGF0ZSgpCiAgICAgICAgICAgICBpZiAoc19tYWxsb2NG
YWxsYmFja1N0YXRlICE9IE1hbGxvY0ZhbGxiYWNrU3RhdGU6OlVuZGVjaWRlZCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSNpZiBHSUdBQ0FHRV9FTkFCTEVECisjaWYgR0lHQUNBR0VfRU5B
QkxFRCB8fCBCQ1BVKEFSTTY0KQorI2lmICFCQ1BVKEFSTTY0KQogICAgICAgICAgICAgaWYgKCFH
aWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpIHsKICAgICAgICAgICAgICAgICBzX21hbGxvY0Zh
bGxiYWNrU3RhdGUgPSBNYWxsb2NGYWxsYmFja1N0YXRlOjpGYWxsQmFja1RvTWFsbG9jOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAg
Y29uc3QgY2hhciogZW52ID0gZ2V0ZW52KCJibWFsbG9jX0lzb0hlYXAiKTsKICAgICAgICAgICAg
IGlmIChlbnYgJiYgKCFzdHJjYXNlY21wKGVudiwgImZhbHNlIikgfHwgIXN0cmNhc2VjbXAoZW52
LCAibm8iKSB8fCAhc3RyY21wKGVudiwgIjAiKSkpCiAgICAgICAgICAgICAgICAgc19tYWxsb2NG
YWxsYmFja1N0YXRlID0gTWFsbG9jRmFsbGJhY2tTdGF0ZTo6RmFsbEJhY2tUb01hbGxvYzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUHJvY2Vzc0NoZWNrLm1tIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Qcm9jZXNzQ2hlY2subW0KaW5kZXggOTBmZGMzYmEzYmUwZDc3YzYx
ZGM3ZDkwODU2ZWI4MDg5M2NjOWEwYi4uM2JiNjNmMzUyNTQyOTg5OGIwOTk0Y2M4NTE3OTNiNTE5
NWY1MmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Qcm9jZXNzQ2hlY2su
bW0KKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Qcm9jZXNzQ2hlY2subW0KQEAgLTQ2LDcg
KzQ2LDggQEAgYm9vbCBnaWdhY2FnZUVuYWJsZWRGb3JQcm9jZXNzKCkKICAgICBib29sIGlzT3B0
SW5CaW5hcnkgPSBbcHJvY2Vzc05hbWUgaXNFcXVhbFRvU3RyaW5nOkAianNjIl0KICAgICAgICAg
fHwgW3Byb2Nlc3NOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkR1bXBSZW5kZXJUcmVlIl0KICAgICAg
ICAgfHwgW3Byb2Nlc3NOYW1lIGlzRXF1YWxUb1N0cmluZzpAIndhc20iXQotICAgICAgICB8fCBb
cHJvY2Vzc05hbWUgaGFzUHJlZml4OkAidGVzdCJdOworICAgICAgICB8fCBbcHJvY2Vzc05hbWUg
aGFzUHJlZml4OkAidGVzdCJdCisgICAgICAgIHx8IFtwcm9jZXNzTmFtZSBoYXNQcmVmaXg6QCJU
ZXN0Il07CiAKICAgICByZXR1cm4gaXNPcHRJbkJpbmFyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL3Rlc3QvdGVzdGJtYWxsb2MuY3BwIGIvU291cmNlL2JtYWxsb2MvdGVzdC90ZXN0
Ym1hbGxvYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmJjMTYyYWVmM2Nj
NWNjYmE4YmI1ZjViNzdmMWYyYjFhZWE1MWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL2JtYWxsb2MvdGVzdC90ZXN0Ym1hbGxvYy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSA8Ym1hbGxvYy9ibWFsbG9jLmg+Ci0jaW5jbHVk
ZSA8Ym1hbGxvYy9FbnZpcm9ubWVudC5oPgotI2luY2x1ZGUgPGJtYWxsb2MvSXNvSGVhcElubGlu
ZXMuaD4KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPHNl
dD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLXVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwotdXNpbmcg
bmFtZXNwYWNlIGJtYWxsb2M6OmFwaTsKLQotLy8gV2UgZG9uJ3QgaGF2ZSBhIE5PX1JFVFVSTl9E
VUVfVE9fRVhJVCwgbm9yIHNob3VsZCB3ZS4gVGhhdCdzIHJpZGljdWxvdXMuCi1zdGF0aWMgYm9v
bCBoaWRkZW5UcnV0aEJlY2F1c2VOb1JldHVybklzU3R1cGlkKCkgeyByZXR1cm4gdHJ1ZTsgfQot
Ci1zdGF0aWMgdm9pZCB1c2FnZSgpCi17Ci0gICAgcHV0cygiVXNhZ2U6IHRlc3RiMyBbPGZpbHRl
cj5dIik7Ci0gICAgaWYgKGhpZGRlblRydXRoQmVjYXVzZU5vUmV0dXJuSXNTdHVwaWQoKSkKLSAg
ICAgICAgZXhpdCgxKTsKLX0KLQotI2RlZmluZSBSVU4odGVzdCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICBpZiAoIXNob3VsZFJ1bigjdGVzdCkpICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBwdXRzKCN0ZXN0ICIuLi4iKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICB0ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBw
dXRzKCN0ZXN0ICI6IE9LISIpOyAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZh
bHNlKQotCi0vLyBOb3RoaW5nIGZhbmN5IGZvciBub3c7IHdlIGp1c3QgdXNlIHRoZSBleGlzdGlu
ZyBXVEYgYXNzZXJ0aW9uIG1hY2hpbmVyeS4KLSNkZWZpbmUgQ0hFQ0soeCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYg
KCEhKHgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczolZDog
aW4gJXM6IGFzc2VydGlvbiAlcyBmYWlsZWQuXG4iLCAgICAgICAgIFwKLSAgICAgICAgICAgIF9f
RklMRV9fLCBfX0xJTkVfXywgX19QUkVUVFlfRlVOQ1RJT05fXywgI3gpOyAgICAgICAgICAgICAg
IFwKLSAgICAgICAgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotc3RhdGljIHN0ZDo6
c2V0PHZvaWQqPiB0b3B0cnNldChjb25zdCBzdGQ6OnZlY3Rvcjx2b2lkKj4mIHB0cnMpCi17Ci0g
ICAgc3RkOjpzZXQ8dm9pZCo+IHJlc3VsdDsKLSAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpIHsK
LSAgICAgICAgaWYgKHB0cikKLSAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQocHRyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIHZvaWQgYXNzZXJ0RW1wdHlQb2ludGVy
U2V0KGNvbnN0IHN0ZDo6c2V0PHZvaWQqPiYgcG9pbnRlcnMpCi17Ci0gICAgaWYgKEVudmlyb25t
ZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsKLSAgICAgICAgcHJpbnRmKCIgICAg
c2tpcHBpbmcgY2hlY2tzIGJlY2F1c2UgRGVidWdIZWFwLlxuIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKHBvaW50ZXJzLmVtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBw
cmludGYoIlBvaW50ZXIgc2V0IG5vdCBlbXB0eSFcbiIpOwotICAgIHByaW50ZigiUG9pbnRlcnM6
Iik7Ci0gICAgZm9yICh2b2lkKiBwdHIgOiBwb2ludGVycykKLSAgICAgICAgcHJpbnRmKCIgJXAi
LCBwdHIpOwotICAgIHByaW50ZigiXG4iKTsKLSAgICBDSEVDSyhwb2ludGVycy5lbXB0eSgpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+Ci1zdGF0aWMgdm9pZCBhc3NlcnRIYXNP
YmplY3RzKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBzdGQ6OnNldDx2b2lkKj4gcG9pbnRlcnMp
Ci17Ci0gICAgaWYgKEVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpIHsK
LSAgICAgICAgcHJpbnRmKCIgICAgc2tpcHBpbmcgY2hlY2tzIGJlY2F1c2UgRGVidWdIZWFwLlxu
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgp
OwotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgaW1w
bC5mb3JFYWNoTGl2ZU9iamVjdCgKLSAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKLSAgICAg
ICAgICAgIHBvaW50ZXJzLmVyYXNlKG9iamVjdCk7Ci0gICAgICAgIH0pOwotICAgIGFzc2VydEVt
cHR5UG9pbnRlclNldChwb2ludGVycyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIGhlYXBUeXBl
Pgotc3RhdGljIHZvaWQgYXNzZXJ0SGFzT25seU9iamVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhl
YXAsIHN0ZDo6c2V0PHZvaWQqPiBwb2ludGVycykKLXsKLSAgICBpZiAoRW52aXJvbm1lbnQ6Omdl
dCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgewotICAgICAgICBwcmludGYoIiAgICBza2lwcGlu
ZyBjaGVja3MgYmVjYXVzZSBEZWJ1Z0hlYXAuXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAotICAgICAg
ICBbJl0gKHZvaWQqIG9iamVjdCkgewotICAgICAgICAgICAgQ0hFQ0socG9pbnRlcnMuZXJhc2Uo
b2JqZWN0KSA9PSAxKTsKLSAgICAgICAgfSk7Ci0gICAgYXNzZXJ0RW1wdHlQb2ludGVyU2V0KHBv
aW50ZXJzKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+Ci1zdGF0aWMgdm9pZCBh
c3NlcnRDbGVhbihJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCkKLXsKLSAgICBzY2F2ZW5nZVRoaXNU
aHJlYWQoKTsKLSAgICBpZiAoIUVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVk
KCkpIHsKLSAgICAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAg
ICAgICAgQ0hFQ0soIWltcGwubnVtTGl2ZU9iamVjdHMoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgaGVhcC5zY2F2ZW5nZSgpOwotICAgIGlmICghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVn
SGVhcEVuYWJsZWQoKSkgewotICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIENI
RUNLKCFpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQg
dGVzdElzb1NpbXBsZSgpCi17Ci0gICAgc3RhdGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOwotICAg
IHZvaWQqIHB0cjEgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgQ0hFQ0socHRyMSk7Ci0gICAgdm9p
ZCogcHRyMiA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICBDSEVDSyhwdHIyKTsKLSAgICBDSEVDSyhw
dHIxICE9IHB0cjIpOwotICAgIENIRUNLKHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNoYXIqPihwdHIx
KSAtIHN0YXRpY19jYXN0PGNoYXIqPihwdHIyKSkgPj0gOCk7Ci0gICAgYXNzZXJ0SGFzT2JqZWN0
cyhoZWFwLCB7cHRyMSwgcHRyMn0pOwotICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIxKTsKLSAgICBo
ZWFwLmRlYWxsb2NhdGUocHRyMik7Ci0gICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHRlc3RJc29TaW1wbGVTY2F2ZW5nZUJlZm9yZURlYWxsb2MoKQotewotICAgIHN0YXRp
YyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKLSAgICB2b2lkKiBwdHIxID0gaGVhcC5hbGxvY2F0ZSgp
OwotICAgIENIRUNLKHB0cjEpOwotICAgIHZvaWQqIHB0cjIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0g
ICAgQ0hFQ0socHRyMik7Ci0gICAgQ0hFQ0socHRyMSAhPSBwdHIyKTsKLSAgICBDSEVDSyhzdGQ6
OmFicyhzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMikp
ID49IDgpOwotICAgIHNjYXZlbmdlVGhpc1RocmVhZCgpOwotICAgIGFzc2VydEhhc09ubHlPYmpl
Y3RzKGhlYXAsIHtwdHIxLCBwdHIyfSk7Ci0gICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEpOwotICAg
IGhlYXAuZGVhbGxvY2F0ZShwdHIyKTsKLSAgICBhc3NlcnRDbGVhbihoZWFwKTsKLX0KLQotc3Rh
dGljIHZvaWQgdGVzdElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzKCkKLXsKLSAgICBzdGF0aWMg
SXNvSGVhcDxkb3VibGU+IGhlYXA7Ci0gICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMTAwMDAwOyBpLS07KSB7Ci0gICAgICAgIHZvaWQqIHB0ciA9IGhl
YXAuYWxsb2NhdGUoKTsKLSAgICAgICAgQ0hFQ0socHRyKTsKLSAgICAgICAgcHRycy5wdXNoX2Jh
Y2socHRyKTsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0cnMuc2l6ZSgp
OyBpICs9IDIpIHsKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOwotICAgICAgICBw
dHJzW2ldID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXpl
KCkgLyAyOyBpLS07KQotICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOwot
ICAgIGZvciAodm9pZCogcHRyIDogcHRycykKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7
Ci0gICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29GbGlwRmxv
cEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUoKQotewotICAgIHN0YXRpYyBJc29IZWFw
PGRvdWJsZT4gaGVhcDsKLSAgICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxMDAwMDA7IGktLTspIHsKLSAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxv
Y2F0ZSgpOwotICAgICAgICBDSEVDSyhwdHIpOwotICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIp
OwotICAgIH0KLSAgICBDSEVDSyh0b3B0cnNldChwdHJzKS5zaXplKCkgPT0gcHRycy5zaXplKCkp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7Ci0g
ICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKLSAgICAgICAgcHRyc1tpXSA9IG51bGxw
dHI7Ci0gICAgfQotICAgIGhlYXAuc2NhdmVuZ2UoKTsKLSAgICB1bnNpZ25lZCBudW1Db21taXR0
ZWRQYWdlc0JlZm9yZTsKLSAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgewotICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBu
dW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKLSAgICB9
Ci0gICAgYXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwgdG9wdHJzZXQocHRycykpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IHB0cnMuc2l6ZSgpIC8gMjsgaS0tOykKLSAgICAgICAgcHRycy5wdXNo
X2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIENIRUNLKG51bUNvbW1pdHRlZFBhZ2Vz
QmVmb3JlID09IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0gICAgfQotICAgIGZvciAodm9p
ZCogcHRyIDogcHRycykKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7Ci0gICAgYXNzZXJ0
Q2xlYW4oaGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29GbGlwRmxvcEZyYWdtZW50ZWRQ
YWdlc1NjYXZlbmdlSW5NaWRkbGUyODgoKQotewotICAgIHN0YXRpYyBJc29IZWFwPGNoYXJbMjg4
XT4gaGVhcDsKLSAgICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxMDAwMDA7IGktLTspIHsKLSAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgp
OwotICAgICAgICBDSEVDSyhwdHIpOwotICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOwotICAg
IH0KLSAgICBDSEVDSyh0b3B0cnNldChwdHJzKS5zaXplKCkgPT0gcHRycy5zaXplKCkpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7Ci0gICAgICAg
IGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKLSAgICAgICAgcHRyc1tpXSA9IG51bGxwdHI7Ci0g
ICAgfQotICAgIGhlYXAuc2NhdmVuZ2UoKTsKLSAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdl
c0JlZm9yZTsKLSAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBudW1Db21t
aXR0ZWRQYWdlc0JlZm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKLSAgICB9Ci0gICAg
YXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwgdG9wdHJzZXQocHRycykpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IHB0cnMuc2l6ZSgpIC8gMjsgaS0tOykKLSAgICAgICAgcHRycy5wdXNoX2JhY2so
aGVhcC5hbGxvY2F0ZSgpKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4g
bG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIENIRUNLKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3Jl
ID09IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0gICAgfQotICAgIGZvciAodm9pZCogcHRy
IDogcHRycykKLSAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7Ci0gICAgYXNzZXJ0Q2xlYW4o
aGVhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJc29NYWxsb2NBbmRGcmVlRmFzdCgpCi17Ci0g
ICAgc3RhdGljIElzb0hlYXA8Y2hhclsyNTZdPiBoZWFwOwotICAgIHZvaWQqIHB0ciA9IG51bGxw
dHI7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxZTY7ICsraSkgewotICAgICAgICBwdHIgPSBo
ZWFwLmFsbG9jYXRlKCk7Ci0gICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwotICAgIH0KLSAg
ICBDSEVDSyghSXNvUGFnZUJhc2U6OnBhZ2VGb3IocHRyKS0+aXNTaGFyZWQoKSk7Ci19Ci0KLWNs
YXNzIEJpc29NYWxsb2NlZCB7Ci0gICAgTUFLRV9CSVNPX01BTExPQ0VEKEJpc29NYWxsb2NlZCwg
Qk5PRVhQT1JUKTsKLXB1YmxpYzoKLSAgICBCaXNvTWFsbG9jZWQoaW50IHgsIGZsb2F0IHkpCi0g
ICAgICAgIDogeCh4KQotICAgICAgICAsIHkoeSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGlu
dCB4OwotICAgIGZsb2F0IHk7Ci19OwotCi1NQUtFX0JJU09fTUFMTE9DRURfSU1QTChCaXNvTWFs
bG9jZWQpOwotCi1zdGF0aWMgdm9pZCB0ZXN0Qmlzb01hbGxvY2VkKCkKLXsKLSAgICBCaXNvTWFs
bG9jZWQqIHB0ciA9IG5ldyBCaXNvTWFsbG9jZWQoNCwgNSk7Ci0gICAgYXNzZXJ0SGFzT2JqZWN0
cyhCaXNvTWFsbG9jZWQ6OmJpc29IZWFwKCksIHsgcHRyIH0pOwotICAgIGRlbGV0ZSBwdHI7Ci0g
ICAgYXNzZXJ0Q2xlYW4oQmlzb01hbGxvY2VkOjpiaXNvSGVhcCgpKTsKLX0KLQotY2xhc3MgQmlz
b01hbGxvY2VkSW5saW5lIHsKLSAgICBNQUtFX0JJU09fTUFMTE9DRURfSU5MSU5FKEJpc29NYWxs
b2NlZCk7Ci1wdWJsaWM6Ci0gICAgQmlzb01hbGxvY2VkSW5saW5lKGludCB4LCBmbG9hdCB5KQot
ICAgICAgICA6IHgoeCkKLSAgICAgICAgLCB5KHkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBp
bnQgeDsKLSAgICBmbG9hdCB5OwotfTsKLQotc3RhdGljIHZvaWQgdGVzdEJpc29NYWxsb2NlZElu
bGluZSgpCi17Ci0gICAgQmlzb01hbGxvY2VkSW5saW5lKiBwdHIgPSBuZXcgQmlzb01hbGxvY2Vk
SW5saW5lKDQsIDUpOwotICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01hbGxvY2VkSW5saW5lOjpi
aXNvSGVhcCgpLCB7IHB0ciB9KTsKLSAgICBkZWxldGUgcHRyOwotICAgIGFzc2VydENsZWFuKEJp
c29NYWxsb2NlZElubGluZTo6Ymlzb0hlYXAoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJ1bihjb25z
dCBjaGFyKiBmaWx0ZXIpCi17Ci0gICAgYXV0byBzaG91bGRSdW4gPSBbJl0gKGNvbnN0IGNoYXIq
IHRlc3ROYW1lKSAtPiBib29sIHsKLSAgICAgICAgcmV0dXJuICFmaWx0ZXIgfHwgISFzdHJjYXNl
c3RyKHRlc3ROYW1lLCBmaWx0ZXIpOwotICAgIH07Ci0gICAgCi0gICAgUlVOKHRlc3RJc29TaW1w
bGUoKSk7Ci0gICAgUlVOKHRlc3RJc29TaW1wbGVTY2F2ZW5nZUJlZm9yZURlYWxsb2MoKSk7Ci0g
ICAgUlVOKHRlc3RJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlcygpKTsKLSAgICBSVU4odGVzdElz
b0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzU2NhdmVuZ2VJbk1pZGRsZSgpKTsKLSAgICBSVU4odGVz
dElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzU2NhdmVuZ2VJbk1pZGRsZTI4OCgpKTsKLSAgICBS
VU4odGVzdElzb01hbGxvY0FuZEZyZWVGYXN0KCkpOwotICAgIFJVTih0ZXN0Qmlzb01hbGxvY2Vk
KCkpOwotICAgIFJVTih0ZXN0Qmlzb01hbGxvY2VkSW5saW5lKCkpOwotICAgIAotICAgIHB1dHMo
IlN1Y2Nlc3MhIik7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAg
ICBjb25zdCBjaGFyKiBmaWx0ZXIgPSBudWxscHRyOwotICAgIHN3aXRjaCAoYXJnYykgewotICAg
IGNhc2UgMToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBmaWx0ZXIgPSBh
cmd2WzFdOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICB1c2FnZSgpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAgcnVuKGZpbHRlcik7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA5MzQ2YTE0ZjdlZDIyODcxZTg3NTAzM2JjMzdjZGI2MWRkODYxZTBhLi5kNmVhMDljMDcy
NWI4NzJlMmFjNWVmYmM0Zjc2NzkwYTE0ODVmNzg0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUtMzAgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgSXNvSGVhcHMg
ZG9uJ3Qgbm90aWNlIHVuY29tbWl0dGVkIFZBIGJlY29taW5nIHRoZSBmaXJzdCBlbGlnaWJsZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTW92ZSB0ZXN0
Ym1hbGxvYy5jcHAgdG8gVGVzdFdURiBzbyBpdCBydW5zIGluIGF1dG9tYXRpb24uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL2JtYWxsb2MvdGVzdC90ZXN0Ym1hbGxvYy5jcHAuCisgICAg
ICAgIChURVNUKToKKwogMjAxOS0wNS0zMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBTdG9wIFN0b3JhZ2VNYW5hZ2VyIHdoZW4gbmV0d29yayBwcm9jZXNzIGlz
IHJlYWR5IHRvIHN1c3BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjA4MDFjMGEzYTZm
NWFlODQxMTQxNjI1YjQyNjJjNGY4OTBjMTBhYy4uOTNjMTk2NzkzNjY5MDI5N2Y4ODk4OTVlYjUx
ZGE1YzhhNjc0MzUxZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2OCw2ICsyNjgsNyBA
QAogCQk1MzY3NzAzNDFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzY3
NzAzMzFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24ubW0gKi87
IH07CiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlw
dGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlw
dGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3JpdHlR
dWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi87IH07CisJCTUz
RkNERTZCMjI5RUZGQjkwMDU5OEVDRiAvKiBJc29IZWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkNERTZBMjI5RUZGQjkwMDU5OEVDRiAvKiBJ
c29IZWFwLmNwcCAqLzsgfTsKIAkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxhcmdlLXJl
ZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNx
dWFyZS1pbWFnZS5odG1sICovOyB9OwogCQk1NTk3RjgzNjFEOTU5NkM4MDA2NkJDMjEgLyogU3lu
Y2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4
ZWRRdWV1ZS5jcHAgKi87IH07CiAJCTU1QTgxN0ZDMjE4MTAwRTAwMDA0QTM5QSAvKiBBZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1QTgxN0ZCMjE4MTAwRTAwMDA0QTM5QSAvKiBBZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VUeXBlcy5tbSAqLzsgfTsKQEAgLTE3MDEsNiArMTcwMiw3IEBACiAJCTUzNjc3
MDMzMUNDODAyMjgwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdERlc2Ny
aXB0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzY3NzAzNTFDQzgxMkY5
MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0
eVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW9yaXR5
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0ZDREU2QTIyOUVGRkI5
MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJc29IZWFwLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8q
IGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhl
ZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBODE3RkIyMTgxMDBF
MDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yODU0LDYgKzI4NTYsMTQgQEAKIAkJCXBhdGggPSBXZWJDb3Jl
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTNGQ0RFNjkyMjlFRkY2ODAw
NTk4RUNGIC8qIGJtYWxsb2MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTUzRkNERTZBMjI5RUZGQjkwMDU5OEVDRiAvKiBJc29IZWFwLmNwcCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gYm1hbGxvYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTc1NjA5MTc2MTkyNTlDNTkwMDlFRjA2RSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzMzMSw2ICszMzQxLDcgQEAKIAkJQkM5MDk2NDYx
MjU1NjE4OTAwMDgzNzU2IC8qIFdURiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJNTNGQ0RFNjkyMjlFRkY2ODAwNTk4RUNGIC8qIGJtYWxsb2MgKi8sCiAJ
CQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAogCQkJCUUzQzIxQTc4MjFCMjVD
ODIwMDNCMzFBMyAvKiBjb2NvYSAqLywKIAkJCQk3Q0JCQTA3NTE5QkI4QTA5MDBCQkYwMjUgLyog
ZGFyd2luICovLApAQCAtMzk3Miw2ICszOTgzLDcgQEAKIAkJCQk3QzgzREVEMjFEMEE1OTBDMDBG
RUJDRjMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVENDFEMEE1OTBD
MDBGRUJDRjMgLyogSGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFMDFEMEE1
OTBDMDBGRUJDRjMgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1M0ZDREU2QjIyOUVGRkI5MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0VCNjJBQjIyMzYwOURFMDA2OUNCQjAgLyogSXRlcmF0b3JSYW5nZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QTA1MDk0MTFGQjlGMDY0MDBCMzNGQjggLyogSlNPTlZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMUMxRDhFMURGOEVGNzIwMDZFOTc5RiAvKiBMRUJE
ZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIyYWNhN2FhZGM1YjRiNGMz
OTNiMzFmZTRkYWE3MjgzMzdjYmFkMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKQEAgLTAsMCArMSwzNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmICFVU0UoU1lTVEVNX01B
TExPQykKKworI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgorI2luY2x1ZGUgPGJtYWxsb2Mv
RW52aXJvbm1lbnQuaD4KKyNpbmNsdWRlIDxibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg+CisKKyNp
bmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPHNldD4KKyNpbmNs
dWRlIDx2ZWN0b3I+CisKK3VzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwordXNpbmcgbmFtZXNwYWNl
IGJtYWxsb2M6OmFwaTsKKworI2RlZmluZSBSVU4odGVzdCkgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAoraWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKK2Jy
ZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3B1dHMoI3Rlc3QgIi4uLiIpOyAg
ICAgICAgICAgICAgICAgICAgICBcCit0ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorcHV0cygjdGVzdCAiOiBPSyEiKTsgICAgICAgICAgICAgICAgICAgIFwKK30gd2hp
bGUgKGZhbHNlKQorCisvLyBOb3RoaW5nIGZhbmN5IGZvciBub3c7IHdlIGp1c3QgdXNlIHRoZSBl
eGlzdGluZyBXVEYgYXNzZXJ0aW9uIG1hY2hpbmVyeS4KKyNkZWZpbmUgQ0hFQ0soeCkgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2lmICgh
ISh4KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiticmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCitmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBpbiAlczogYXNzZXJ0aW9uICVzIGZh
aWxlZC5cbiIsICAgICAgICAgXAorX19GSUxFX18sIF9fTElORV9fLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAjeCk7ICAgICAgICAgICAgICAgXAorYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKGZhbHNlKQorCitz
dGF0aWMgc3RkOjpzZXQ8dm9pZCo+IHRvcHRyc2V0KGNvbnN0IHN0ZDo6dmVjdG9yPHZvaWQqPiYg
cHRycykKK3sKKyAgICBzdGQ6OnNldDx2b2lkKj4gcmVzdWx0OworICAgIGZvciAodm9pZCogcHRy
IDogcHRycykgeworICAgICAgICBpZiAocHRyKQorICAgICAgICAgICAgcmVzdWx0Lmluc2VydChw
dHIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBhc3NlcnRF
bXB0eVBvaW50ZXJTZXQoY29uc3Qgc3RkOjpzZXQ8dm9pZCo+JiBwb2ludGVycykKK3sKKyAgICBp
ZiAoRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgeworICAgICAgICBw
cmludGYoIiAgICBza2lwcGluZyBjaGVja3MgYmVjYXVzZSBEZWJ1Z0hlYXAuXG4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocG9pbnRlcnMuZW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIHByaW50ZigiUG9pbnRlciBzZXQgbm90IGVtcHR5IVxuIik7CisgICAgcHJpbnRm
KCJQb2ludGVyczoiKTsKKyAgICBmb3IgKHZvaWQqIHB0ciA6IHBvaW50ZXJzKQorICAgICAgICBw
cmludGYoIiAlcCIsIHB0cik7CisgICAgcHJpbnRmKCJcbiIpOworICAgIENIRUNLKHBvaW50ZXJz
LmVtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBoZWFwVHlwZT4KK3N0YXRpYyB2b2lk
IGFzc2VydEhhc09iamVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXAsIHN0ZDo6c2V0PHZvaWQq
PiBwb2ludGVycykKK3sKKyAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVu
YWJsZWQoKSkgeworICAgICAgICBwcmludGYoIiAgICBza2lwcGluZyBjaGVja3MgYmVjYXVzZSBE
ZWJ1Z0hlYXAuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvJiBpbXBsID0g
aGVhcC5pbXBsKCk7CisgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2Nr
KTsKKyAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBbJl0gKHZvaWQqIG9iamVj
dCkgeworICAgICAgICAgICAgcG9pbnRlcnMuZXJhc2Uob2JqZWN0KTsKKyAgICAgICAgfSk7Cisg
ICAgYXNzZXJ0RW1wdHlQb2ludGVyU2V0KHBvaW50ZXJzKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgaGVhcFR5cGU+CitzdGF0aWMgdm9pZCBhc3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhl
YXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZXJzKQoreworICAgIGlmIChFbnZp
cm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CisgICAgICAgIHByaW50Zigi
ICAgIHNraXBwaW5nIGNoZWNrcyBiZWNhdXNlIERlYnVnSGVhcC5cbiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKKyAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOworICAgIGltcGwuZm9yRWFjaExpdmVPYmpl
Y3QoCisgICAgICAgIFsmXSAodm9pZCogb2JqZWN0KSB7CisgICAgICAgICAgICBDSEVDSyhwb2lu
dGVycy5lcmFzZShvYmplY3QpID09IDEpOworICAgICAgICB9KTsKKyAgICBhc3NlcnRFbXB0eVBv
aW50ZXJTZXQocG9pbnRlcnMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBoZWFwVHlwZT4KK3N0
YXRpYyB2b2lkIGFzc2VydENsZWFuKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwKQoreworICAgIHNj
YXZlbmdlVGhpc1RocmVhZCgpOworICAgIGlmICghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVn
SGVhcEVuYWJsZWQoKSkgeworICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9j
ayk7CisgICAgICAgICAgICBDSEVDSyghaW1wbC5udW1MaXZlT2JqZWN0cygpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBoZWFwLnNjYXZlbmdlKCk7CisgICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0
KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmlt
cGwoKTsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsK
KyAgICAgICAgQ0hFQ0soIWltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CisgICAgfQorfQorCitU
RVNUKGJtYWxsb2MsIElzb1NpbXBsZSkKK3sKKyAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhl
YXA7CisgICAgdm9pZCogcHRyMSA9IGhlYXAuYWxsb2NhdGUoKTsKKyAgICBDSEVDSyhwdHIxKTsK
KyAgICB2b2lkKiBwdHIyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgIENIRUNLKHB0cjIpOworICAg
IENIRUNLKHB0cjEgIT0gcHRyMik7CisgICAgQ0hFQ0soc3RkOjphYnMoc3RhdGljX2Nhc3Q8Y2hh
cio+KHB0cjEpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjIpKSA+PSA4KTsKKyAgICBhc3NlcnRI
YXNPYmplY3RzKGhlYXAsIHtwdHIxLCBwdHIyfSk7CisgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEp
OworICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30K
KworVEVTVChibWFsbG9jLCBJc29TaW1wbGVTY2F2ZW5nZUJlZm9yZURlYWxsb2MpCit7CisgICAg
c3RhdGljIElzb0hlYXA8ZG91YmxlPiBoZWFwOworICAgIHZvaWQqIHB0cjEgPSBoZWFwLmFsbG9j
YXRlKCk7CisgICAgQ0hFQ0socHRyMSk7CisgICAgdm9pZCogcHRyMiA9IGhlYXAuYWxsb2NhdGUo
KTsKKyAgICBDSEVDSyhwdHIyKTsKKyAgICBDSEVDSyhwdHIxICE9IHB0cjIpOworICAgIENIRUNL
KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNoYXIqPihwdHIxKSAtIHN0YXRpY19jYXN0PGNoYXIqPihw
dHIyKSkgPj0gOCk7CisgICAgc2NhdmVuZ2VUaGlzVGhyZWFkKCk7CisgICAgYXNzZXJ0SGFzT25s
eU9iamVjdHMoaGVhcCwge3B0cjEsIHB0cjJ9KTsKKyAgICBoZWFwLmRlYWxsb2NhdGUocHRyMSk7
CisgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjIpOworICAgIGFzc2VydENsZWFuKGhlYXApOworfQor
CitURVNUKGJtYWxsb2MsIElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzKQoreworICAgIHN0YXRp
YyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKKyAgICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxMDAwMDA7IGktLTspIHsKKyAgICAgICAgdm9pZCogcHRyID0g
aGVhcC5hbGxvY2F0ZSgpOworICAgICAgICBDSEVDSyhwdHIpOworICAgICAgICBwdHJzLnB1c2hf
YmFjayhwdHIpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHRycy5zaXpl
KCk7IGkgKz0gMikgeworICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyc1tpXSk7CisgICAgICAg
IHB0cnNbaV0gPSBudWxscHRyOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBwdHJzLnNp
emUoKSAvIDI7IGktLTspCisgICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7
CisgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQorICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRy
KTsKKyAgICBhc3NlcnRDbGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJc29GbGlwRmxv
cEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUpCit7CisgICAgc3RhdGljIElzb0hlYXA8
ZG91YmxlPiBoZWFwOworICAgIHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOworICAgIGZvciAodW5z
aWduZWQgaSA9IDEwMDAwMDsgaS0tOykgeworICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9j
YXRlKCk7CisgICAgICAgIENIRUNLKHB0cik7CisgICAgICAgIHB0cnMucHVzaF9iYWNrKHB0cik7
CisgICAgfQorICAgIENIRUNLKHRvcHRyc2V0KHB0cnMpLnNpemUoKSA9PSBwdHJzLnNpemUoKSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0cnMuc2l6ZSgpOyBpICs9IDIpIHsKKyAg
ICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNbaV0pOworICAgICAgICBwdHJzW2ldID0gbnVsbHB0
cjsKKyAgICB9CisgICAgaGVhcC5zY2F2ZW5nZSgpOworICAgIHVuc2lnbmVkIG51bUNvbW1pdHRl
ZFBhZ2VzQmVmb3JlOworICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKKyAgICB7CisgICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgICAgIG51
bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpOworICAgIH0K
KyAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB0b3B0cnNldChwdHJzKSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gcHRycy5zaXplKCkgLyAyOyBpLS07KQorICAgICAgICBwdHJzLnB1c2hf
YmFjayhoZWFwLmFsbG9jYXRlKCkpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKKyAgICAgICAgQ0hFQ0sobnVtQ29tbWl0dGVkUGFnZXNC
ZWZvcmUgPT0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKKyAgICB9CisgICAgZm9yICh2b2lk
KiBwdHIgOiBwdHJzKQorICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKKyAgICBhc3NlcnRD
bGVhbihoZWFwKTsKK30KKworVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdl
c1NjYXZlbmdlSW5NaWRkbGUyODgpCit7CisgICAgc3RhdGljIElzb0hlYXA8Y2hhclsyODhdPiBo
ZWFwOworICAgIHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOworICAgIGZvciAodW5zaWduZWQgaSA9
IDEwMDAwMDsgaS0tOykgeworICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7Cisg
ICAgICAgIENIRUNLKHB0cik7CisgICAgICAgIHB0cnMucHVzaF9iYWNrKHB0cik7CisgICAgfQor
ICAgIENIRUNLKHRvcHRyc2V0KHB0cnMpLnNpemUoKSA9PSBwdHJzLnNpemUoKSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHB0cnMuc2l6ZSgpOyBpICs9IDIpIHsKKyAgICAgICAgaGVh
cC5kZWFsbG9jYXRlKHB0cnNbaV0pOworICAgICAgICBwdHJzW2ldID0gbnVsbHB0cjsKKyAgICB9
CisgICAgaGVhcC5zY2F2ZW5nZSgpOworICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVm
b3JlOworICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKKyAgICB7CisgICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgICAgIG51bUNvbW1pdHRl
ZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpOworICAgIH0KKyAgICBhc3Nl
cnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB0b3B0cnNldChwdHJzKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gcHRycy5zaXplKCkgLyAyOyBpLS07KQorICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFw
LmFsbG9jYXRlKCkpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2Nr
ZXIoaW1wbC5sb2NrKTsKKyAgICAgICAgQ0hFQ0sobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPT0g
aW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKKyAgICB9CisgICAgZm9yICh2b2lkKiBwdHIgOiBw
dHJzKQorICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKKyAgICBhc3NlcnRDbGVhbihoZWFw
KTsKK30KKworVEVTVChibWFsbG9jLCBJc29NYWxsb2NBbmRGcmVlRmFzdCkKK3sKKyAgICBzdGF0
aWMgSXNvSGVhcDxjaGFyWzI1Nl0+IGhlYXA7CisgICAgdm9pZCogcHRyID0gbnVsbHB0cjsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgICAgIHB0ciA9IGhlYXAuYWxs
b2NhdGUoKTsKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CisgICAgfQorICAgIENIRUNL
KCFJc29QYWdlQmFzZTo6cGFnZUZvcihwdHIpLT5pc1NoYXJlZCgpKTsKK30KKworY2xhc3MgQmlz
b01hbGxvY2VkIHsKKyAgICBNQUtFX0JJU09fTUFMTE9DRUQoQmlzb01hbGxvY2VkLCBCTk9FWFBP
UlQpOworcHVibGljOgorICAgIEJpc29NYWxsb2NlZChpbnQgeCwgZmxvYXQgeSkKKyAgICAgICAg
OiB4KHgpCisgICAgICAgICwgeSh5KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgeDsKKyAgICBm
bG9hdCB5OworfTsKKworTUFLRV9CSVNPX01BTExPQ0VEX0lNUEwoQmlzb01hbGxvY2VkKTsKKwor
VEVTVChibWFsbG9jLCBCaXNvTWFsbG9jZWQpCit7CisgICAgQmlzb01hbGxvY2VkKiBwdHIgPSBu
ZXcgQmlzb01hbGxvY2VkKDQsIDUpOworICAgIGFzc2VydEhhc09iamVjdHMoQmlzb01hbGxvY2Vk
OjpiaXNvSGVhcCgpLCB7IHB0ciB9KTsKKyAgICBkZWxldGUgcHRyOworICAgIGFzc2VydENsZWFu
KEJpc29NYWxsb2NlZDo6Ymlzb0hlYXAoKSk7Cit9CisKK2NsYXNzIEJpc29NYWxsb2NlZElubGlu
ZSB7CisgICAgTUFLRV9CSVNPX01BTExPQ0VEX0lOTElORShCaXNvTWFsbG9jZWQpOworcHVibGlj
OgorICAgIEJpc29NYWxsb2NlZElubGluZShpbnQgeCwgZmxvYXQgeSkKKyAgICAgICAgOiB4KHgp
CisgICAgICAgICwgeSh5KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgeDsKKyAgICBmbG9hdCB5
OworfTsKKworVEVTVChibWFsbG9jLCBCaXNvTWFsbG9jZWRJbmxpbmUpCit7CisgICAgQmlzb01h
bGxvY2VkSW5saW5lKiBwdHIgPSBuZXcgQmlzb01hbGxvY2VkSW5saW5lKDQsIDUpOworICAgIGFz
c2VydEhhc09iamVjdHMoQmlzb01hbGxvY2VkSW5saW5lOjpiaXNvSGVhcCgpLCB7IHB0ciB9KTsK
KyAgICBkZWxldGUgcHRyOworICAgIGFzc2VydENsZWFuKEJpc29NYWxsb2NlZElubGluZTo6Ymlz
b0hlYXAoKSk7Cit9CisKKworVEVTVChibWFsbG9jLCBTY2F2ZW5nZWRNZW1vcnlTaG91bGRCZVJl
dXNlZCkKK3sKKyAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhlYXA7CisKKyAgICBhdXRvIHJ1
biA9IFtdICh1bnNpZ25lZCBudW1QYWdlc1RvQ29tbWl0KSB7CisgICAgICAgIGF1dG8qIHB0cjEg
PSBoZWFwLmFsbG9jYXRlKCk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7CisK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgO2krKykgeworICAgICAgICAgICAgdm9pZCog
cHRyID0gaGVhcC5hbGxvY2F0ZSgpOworICAgICAgICAgICAgQ0hFQ0socHRyKTsKKyAgICAgICAg
ICAgIHB0cnMucHVzaF9iYWNrKHB0cik7CisgICAgICAgICAgICBpZiAoaGVhcC5pbXBsKCkubnVt
Q29tbWl0dGVkUGFnZXMoKSA9PSBudW1QYWdlc1RvQ29tbWl0KQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpzZXQ8dm9pZCo+IHVuaXF1ZWRQdHJzID0g
dG9wdHJzZXQocHRycyk7CisKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgSXNvUGFnZTxkZWNsdHlwZShoZWFwKTo6Q29uZmln
Pjo6bnVtT2JqZWN0cyAtIDE7IGkrKykgeworICAgICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0
cnNbaV0pOworICAgICAgICAgICAgdW5pcXVlZFB0cnMuZXJhc2UocHRyc1tpXSk7CisgICAgICAg
IH0KKworICAgICAgICBzY2F2ZW5nZSgpOworICAgICAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyho
ZWFwLCB1bmlxdWVkUHRycyk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgb25seSBzZWVtcyB0
byBwYXNzIHdoZW4gbGxkYiBpcyBhdHRhY2hlZCBidXQgdGhlIHNjYXZlbmdlciB0aHJlYWQgaXNu
J3QgcnVubmluZy4uLgorICAgICAgICAvLyBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTgzODQKKyAgICAgICAgLy8gYXV0byogcHRyMiA9IGhlYXAuYWxsb2Nh
dGUoKTsKKyAgICAgICAgLy8gQ0hFQ0socHRyMSA9PSBwdHIyKTsKKyAgICB9OworCisgICAgcnVu
KDIpOworfQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>