<?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>225032</bug_id>
          
          <creation_ts>2021-04-25 10:33:19 -0700</creation_ts>
          <short_desc>[JSC] Remove defaultValue() from the method table</short_desc>
          <delta_ts>2021-04-27 13:57:32 -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>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1754016</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-25 10:33:19 -0700</bug_when>
    <thetext>[JSC] Remove defaultValue() from the method table</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754018</commentid>
    <comment_count>1</comment_count>
      <attachid>427005</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-25 10:36:09 -0700</bug_when>
    <thetext>Created attachment 427005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754025</commentid>
    <comment_count>2</comment_count>
      <attachid>427005</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-25 10:46:26 -0700</bug_when>
    <thetext>Comment on attachment 427005
Patch

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

&gt; Source/JavaScriptCore/API/JSCallbackObject.h:202
&gt; +    static EncodedJSValue customToPrimitiveImpl(JSGlobalObject*, CallFrame*);

Not sure what the word &quot;impl&quot; means in this function name. Aren’t most functions &quot;implementations&quot;? How is this one different?

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:235
&gt; +    const JSCallbackObject* thisObject = jsDynamicCast&lt;const JSCallbackObject*&gt;(vm, callFrame-&gt;thisValue());

This is the kind of line of code where auto really shines, cutting down on repetitiveness and making this almost 1/3 shorter and easier to look over.

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:238
&gt; +    PreferredPrimitiveType hint = toPreferredPrimitiveType(globalObject, callFrame-&gt;argument(0));

Same.

&gt; Source/WebCore/bridge/runtime_object.cpp:187
&gt; +        return setUpSymbolToPrimitiveSlot&lt;convertRuntimeObjectToPrimitive&gt;(thisObject, lexicalGlobalObject, slot);

We can hope that this Objective-C bridging is almost obsolete. Would be so nice to delete it some day.

The value materializing only at this point is not something I would necessarily be OK with if this was still in active use, but I suspect it will be good enough to keep existing clients working.

&gt; Source/WebCore/bridge/runtime_object.cpp:228
&gt; +    const RuntimeObject* thisObject = jsDynamicCast&lt;const RuntimeObject*&gt;(vm, callFrame-&gt;thisValue());

auto?

&gt; Source/WebCore/bridge/runtime_object.cpp:231
&gt; +    RefPtr&lt;Instance&gt; instance = thisObject-&gt;getInternalInstance();

auto and makeRefPtr?

&gt; Source/WebCore/bridge/runtime_object.cpp:234
&gt; +    PreferredPrimitiveType hint = toPreferredPrimitiveType(lexicalGlobalObject, callFrame-&gt;argument(0));

auto?

&gt; Source/WebCore/bridge/runtime_object.h:94
&gt; +template&lt;RawNativeFunction toPrimitiveImpl&gt;

Not a fan of the &quot;impl&quot; here.

&gt; Source/WebCore/bridge/objc/objc_runtime.h:127
&gt; +    ObjcInstance* getInternalObjCInstance() const { return _instance.get(); }

WebKit coding style recommends against the use of the word &quot;get&quot; in function names like this one.

&gt; Source/WebCore/bridge/objc/objc_runtime.mm:314
&gt; +    const ObjcFallbackObjectImp* thisObject = jsDynamicCast&lt;const ObjcFallbackObjectImp*&gt;(vm, callFrame-&gt;thisValue());

auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754085</commentid>
    <comment_count>3</comment_count>
      <attachid>427013</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-25 16:30:05 -0700</bug_when>
    <thetext>Created attachment 427013
Patch

Fix X86 build and npruntime tests, drop &quot;impl&quot; and lazy materialization, and use `auto` for WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754086</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-25 16:30:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 427005 [details]
&gt; Patch

Thank you for detailed comments, Darin!

&gt; &gt; Source/JavaScriptCore/API/JSCallbackObject.h:202
&gt; &gt; +    static EncodedJSValue customToPrimitiveImpl(JSGlobalObject*, CallFrame*);
&gt; 
&gt; Not sure what the word &quot;impl&quot; means in this function name. Aren’t most
&gt; functions &quot;implementations&quot;? How is this one different?

Removed the &quot;impl&quot;.
It was there because customToPrimitive() has the similar signature to callImpl() / constructImpl(), but unlike them, it&apos;s private and self-contained.

&gt; &gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:235
&gt; &gt; +    const JSCallbackObject* thisObject = jsDynamicCast&lt;const JSCallbackObject*&gt;(vm, callFrame-&gt;thisValue());
&gt; 
&gt; This is the kind of line of code where auto really shines, cutting down on
&gt; repetitiveness and making this almost 1/3 shorter and easier to look over.
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:238
&gt; &gt; +    PreferredPrimitiveType hint = toPreferredPrimitiveType(globalObject, callFrame-&gt;argument(0));
&gt; 
&gt; Same.

Removed the `const`, slightly cleaning up the code, but I am a little hesitant to use `auto` here.
Unlike WebCore, JSC code base is a bit more type-explicit: in this file, `auto` is used only for throw scopes.

&gt; &gt; Source/WebCore/bridge/runtime_object.cpp:187
&gt; &gt; +        return setUpSymbolToPrimitiveSlot&lt;convertRuntimeObjectToPrimitive&gt;(thisObject, lexicalGlobalObject, slot);
&gt; 
&gt; We can hope that this Objective-C bridging is almost obsolete. Would be so
&gt; nice to delete it some day.
&gt; 
&gt; The value materializing only at this point is not something I would
&gt; necessarily be OK with if this was still in active use, but I suspect it
&gt; will be good enough to keep existing clients working.

The purpose of lazy materialization was to avoid creating &amp; putting JSFunction during construction.
Since the bridging is almost obsolete, there is no point to (micro) optimize. Removed.

&gt; &gt; Source/WebCore/bridge/runtime_object.cpp:228
&gt; &gt; +    const RuntimeObject* thisObject = jsDynamicCast&lt;const RuntimeObject*&gt;(vm, callFrame-&gt;thisValue());
&gt; 
&gt; auto?
&gt; 
&gt; &gt; Source/WebCore/bridge/runtime_object.cpp:231
&gt; &gt; +    RefPtr&lt;Instance&gt; instance = thisObject-&gt;getInternalInstance();
&gt; 
&gt; auto and makeRefPtr?
&gt; 
&gt; &gt; Source/WebCore/bridge/runtime_object.cpp:234
&gt; &gt; +    PreferredPrimitiveType hint = toPreferredPrimitiveType(lexicalGlobalObject, callFrame-&gt;argument(0));
&gt; 
&gt; auto?

Changed.

&gt; &gt; Source/WebCore/bridge/runtime_object.h:94
&gt; &gt; +template&lt;RawNativeFunction toPrimitiveImpl&gt;
&gt; 
&gt; Not a fan of the &quot;impl&quot; here.

Removed the whole helper.

&gt; &gt; Source/WebCore/bridge/objc/objc_runtime.h:127
&gt; &gt; +    ObjcInstance* getInternalObjCInstance() const { return _instance.get(); }
&gt; 
&gt; WebKit coding style recommends against the use of the word &quot;get&quot; in function names like this one.

It does, but wouldn&apos;t it be nice to make ObjcFallbackObjectImp::getInternalObjCInstance() consistent with its friends?

    ObjCRuntimeObject::getInternalObjCInstance()
    CRuntimeObject::getInternalCInstance()
    RuntimeObject::getInternalInstance()

&gt; &gt; Source/WebCore/bridge/objc/objc_runtime.mm:314
&gt; &gt; +    const ObjcFallbackObjectImp* thisObject = jsDynamicCast&lt;const ObjcFallbackObjectImp*&gt;(vm, callFrame-&gt;thisValue());
&gt; 
&gt; auto?

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754175</commentid>
    <comment_count>5</comment_count>
      <attachid>427040</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-26 07:15:40 -0700</bug_when>
    <thetext>Created attachment 427040
Patch

Simplify RuntimeObject::getOwnPropertySlot() and tweak ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754700</commentid>
    <comment_count>6</comment_count>
      <attachid>427040</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 11:07:38 -0700</bug_when>
    <thetext>Comment on attachment 427040
Patch

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

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:238
&gt; +    JSCallbackObject* thisObject = jsDynamicCast&lt;JSCallbackObject*&gt;(vm, callFrame-&gt;thisValue());
&gt; +    if (!thisObject)
&gt; +        return throwVMTypeError(globalObject, scope, &quot;JSCallbackObject[Symbol.toPrimitive] method called on incompatible |this| value.&quot;_s);
&gt; +    PreferredPrimitiveType hint = toPreferredPrimitiveType(globalObject, callFrame-&gt;argument(0));

As someone who has been here with JavaScriptCore and WebCore all along, quite sad that the coding styles are diverging on minor stylistic questions like how we use auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754777</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-27 13:56:28 -0700</bug_when>
    <thetext>Committed r276660 (237087@main): &lt;https://commits.webkit.org/237087@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427040.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754779</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-27 13:57:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/77228749&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427005</attachid>
            <date>2021-04-25 10:36:09 -0700</date>
            <delta_ts>2021-04-25 16:30:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225032-20210425203607.patch</filename>
            <type>text/plain</type>
            <size>31118</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc2NTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDIxLTA0LTI1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbSlNDXSBSZW1vdmUgZGVmYXVsdFZhbHVlKCkgZnJvbSB0aGUgbWV0aG9kIHRhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIG5vdCBvbmx5IHJlbW92ZXMgdGhlIHVubmVjZXNzYXJ5IG1ldGhvZCB0YWJsZSBlbnRyeSwg
YnV0IGFsc28gbWFrZXMKKyAgICAgICAgdGhlIHByZXNlbmNlIG9mIGN1c3RvbSBUb1ByaW1pdGl2
ZSBiZWhhdmlvciBvYnNlcnZhYmxlIHRvIHVzZXJsYW5kIGNvZGUuCisKKyAgICAgICAgRm9yIEpT
Q2FsbGJhY2tPYmplY3QsIFN5bWJvbC50b1ByaW1pdGl2ZSBtZXRob2QgaXMgY3JlYXRlZCBvbmx5
IGlmIENvbnZlcnRUb1R5cGUKKyAgICAgICAgY2FsbGJhY2sgaXMgcHJlc2VudCwgYmVmb3JlIGlu
aXRpYWxpemF0aW9uIGNhbGxiYWNrcy4gRm9yIE9iamVjdGl2ZS1DIHJ1bnRpbWUKKyAgICAgICAg
b2JqZWN0cywgaXQncyBtYXRlcmlhbGl6ZWQgb24gZmlyc3QgYWNjZXNzLgorCisgICAgICAgIFRv
IG1haW50YWluIG9iamVjdCBpZGVudGl0eSBhbmQgKHBvc3NpYmx5KSBlbmFibGUgY2FjaGluZywg
U3ltYm9sLnRvUHJpbWl0aXZlIG1ldGhvZAorICAgICAgICBpcyBzdG9yZWQgb24gYSBzdHJ1Y3R1
cmUuIFRvIGF2b2lkIGFueSBwb3RlbnRpYWwgYnJlYWthZ2UsIGl0J3MgbWFkZSByZXBsYWNlYWJs
ZQorICAgICAgICBhbmQgY29uZmlndXJhYmxlLCBjb3ZlcmluZyB0aGUgY2FzZSB3aGVuIGl0cyBo
b2xkZXIgaXMgdXNlZCBhcyBhIFtbUHJveHlUYXJnZXRdXS4KKworICAgICAgICBBbHNvLCB0aGlz
IGNoYW5nZSBhZGRzIGFkZGl0aW9uYWwgb3JkaW5hcnlUb1ByaW1pdGl2ZSgpIGNhc3QgdG8gZml4
IGFuIGludmFyaWFudCAKKyAgICAgICAgdGhhdCB0b1ByaW1pdGl2ZSgpIHJldHVybnMgYSBwcmlt
aXRpdmUgdmFsdWUgYXMgcGVyIHNwZWMgWzFdLCB3aGljaCB3YXMgYnJva2VuIGlmCisgICAgICAg
IENvbnZlcnRUb1R5cGUgY2FsbGJhY2sgcmV0dXJuZWQgYW4gb2JqZWN0LgorCisgICAgICAgIFsx
XTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZSAoc3RlcCAyLmIudmkp
CisgICAgICAgICAgICAgaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJp
bWl0aXZlIChzdGVwIDYpCisgICAgICAgICAgICAgQ2hlY2tlZCB2aWEgQVNTRVJUIGluIEpTVmFs
dWU6OnRvU3RyaW5nU2xvd0Nhc2UoKQorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAo
SlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQpOgorICAgICAgICAoSlNDOjpKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbVRvUHJpbWl0aXZlSW1wbCk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVzdGFwaS5qczoKKyAgICAgICAgKEV2
aWxFeGNlcHRpb25PYmplY3QudG9OdW1iZXIpOgorICAgICAgICAoRXZpbEV4Y2VwdGlvbk9iamVj
dC50b1N0cmluZ0V4cGxpY2l0KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpkZWZhdWx0
VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0b1ByaW1pdGl2
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZhdWx0VmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc0FkZFNsb3dDYXNlKToKKwogMjAyMS0wNC0yMyAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBbWUFSUiBJbnRl
cnByZXRlcl0gSW1wcm9wZXIgYmFja3RyYWNrIG9mIHBhcmVudGhlc2VzIHdpdGggbm9uLXplcm8g
YmFzZWQgZ3JlZWR5IHF1YW50aWZpZXJzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMjc2NTYzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3
ICsxOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJiwgU3Vic3BhY2VBY2Nlc3Mp
OwotICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CisgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGN1c3RvbVRvUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2
aXNpb24gMjc2NTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxMyArMTEyLDIzIEBAIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVChnbG9iYWxPYmplY3Qp
OworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgCiAgICAgVmVjdG9yPEpT
T2JqZWN0SW5pdGlhbGl6ZUNhbGxiYWNrLCAxNj4gaW5pdFJvdXRpbmVzOworICAgIGJvb2wgY3Vz
dG9tVG9QcmltaXRpdmUgPSBmYWxzZTsKICAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBjbGFzc1Jl
ZigpOwogICAgIGRvIHsKKyAgICAgICAgaWYgKGpzQ2xhc3MtPmNvbnZlcnRUb1R5cGUpCisgICAg
ICAgICAgICBjdXN0b21Ub1ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGlmIChKU09iamVjdElu
aXRpYWxpemVDYWxsYmFjayBpbml0aWFsaXplID0ganNDbGFzcy0+aW5pdGlhbGl6ZSkKICAgICAg
ICAgICAgIGluaXRSb3V0aW5lcy5hcHBlbmQoaW5pdGlhbGl6ZSk7CiAgICAgfSB3aGlsZSAoKGpz
Q2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykpOworCisgICAgaWYgKGN1c3RvbVRvUHJpbWl0
aXZlKSB7CisgICAgICAgIHRoaXMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9Q
cmltaXRpdmVTeW1ib2wsCisgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVdIl9zLCBjdXN0b21Ub1ByaW1pdGl2ZUlt
cGwpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOworICAgIH0KICAgICAKICAgICAvLyBpbml0aWFsaXplIGZyb20gYmFzZSB0
byBkZXJpdmVkCiAgICAgZm9yIChpbnQgaSA9IHN0YXRpY19jYXN0PGludD4oaW5pdFJvdXRpbmVz
LnNpemUoKSkgLSAxOyBpID49IDA7IGktLSkgewpAQCAtMjE3LDEyICsyMjcsMTcgQEAgYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBybwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgotSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bHRWYWx1ZShj
b25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCitFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmN1c3RvbVRvUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxs
YmFja09iamVjdCo+KG9iamVjdCk7CisgICAgY29uc3QgSlNDYWxsYmFja09iamVjdCogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJKU0NhbGxiYWNrT2JqZWN0W1N5
bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8IHZh
bHVlLiJfcyk7CisgICAgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50ID0gdG9QcmVmZXJyZWRQ
cmltaXRpdmVUeXBlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwogICAgIEpTQ29udGV4dFJlZiBjdHgg
PSB0b1JlZihnbG9iYWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZihq
c0Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzT2JqZWN0KSk7CiAgICAgOjpKU1R5cGUganNIaW50
ID0gaGludCA9PSBQcmVmZXJTdHJpbmcgPyBrSlNUeXBlU3RyaW5nIDoga0pTVHlwZU51bWJlcjsK
QEAgLTIzMSwxNiArMjQ2LDE4IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpk
ZWZhdWwKICAgICAgICAgaWYgKEpTT2JqZWN0Q29udmVydFRvVHlwZUNhbGxiYWNrIGNvbnZlcnRU
b1R5cGUgPSBqc0NsYXNzLT5jb252ZXJ0VG9UeXBlKSB7CiAgICAgICAgICAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGNv
bnZlcnRUb1R5cGUoY3R4LCB0aGlzUmVmLCBqc0hpbnQsICZleGNlcHRpb24pOwotICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHRvSlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0
KSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBqc1Jlc3VsdCA9IHRvSlMoZ2xvYmFsT2JqZWN0
LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShqc1Jlc3VsdC5pc09iamVj
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVj
dChqc1Jlc3VsdCktPm9yZGluYXJ5VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBoaW50KSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Jlc3VsdCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiB0
b0pTKGdsb2JhbE9iamVjdCwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFBhcmVudDo6ZGVmYXVsdFZhbHVlKG9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBoaW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUodGhpc09iamVjdC0+b3JkaW5hcnlUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGhp
bnQpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBp
LmpzCShyZXZpc2lvbiAyNzY1NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgs
MjQgQEAgc2hvdWxkQmUoInN5bWJvbFRvU3RyaW5nVGFnRGVzY3JpcHRvci5jbwogTXlPYmplY3Rb
U3ltYm9sLnRvU3RyaW5nVGFnXSA9ICJGb28iOwogc2hvdWxkQmUoIk9iamVjdC5wcm90b3R5cGUu
dG9TdHJpbmcuY2FsbChNeU9iamVjdCkiLCAiW29iamVjdCBGb29dIik7CiAKK3ZhciBzeW1ib2xU
b1ByaW1pdGl2ZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15
T2JqZWN0LCBTeW1ib2wudG9QcmltaXRpdmUpOworc2hvdWxkQmUoInR5cGVvZiBzeW1ib2xUb1By
aW1pdGl2ZURlc2NyaXB0b3IiLCAib2JqZWN0Iik7CitzaG91bGRCZSgic3ltYm9sVG9QcmltaXRp
dmVEZXNjcmlwdG9yLnZhbHVlIiwgTXlPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSk7CitzaG91
bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLndyaXRhYmxlIiwgdHJ1ZSk7CitzaG91
bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmVudW1lcmFibGUiLCBmYWxzZSk7Citz
aG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIsIHRydWUp
OworCitzaG91bGRCZSgiTXlPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSgnZGVmYXVsdCcpIiwg
MSk7CitzaG91bGRCZSgiTXlPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSgnbnVtYmVyJykiLCAx
KTsKK3Nob3VsZEJlKCJNeU9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSIsICJN
eU9iamVjdEFzU3RyaW5nIik7CisKK3Nob3VsZFRocm93KCJNeU9iamVjdFtTeW1ib2wudG9Qcmlt
aXRpdmVdKCdmb28nKSIpOworc2hvdWxkVGhyb3coIk15T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2
ZV0uY2FsbCh7fSwgJ2RlZmF1bHQnKSIpOworc2hvdWxkVGhyb3coIigwLCBNeU9iamVjdFtTeW1i
b2wudG9QcmltaXRpdmVdKSgnZGVmYXVsdCcpIik7CisKK015T2JqZWN0W1N5bWJvbC50b1ByaW1p
dGl2ZV0gPSAoKSA9PiBudWxsOworc2hvdWxkQmUoIk15T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2
ZV0oJ2JhcicpIiwgbnVsbCk7CisKIGRlcml2ZWQgPSBuZXcgRGVyaXZlZCgpOwogCiBzaG91bGRC
ZSgiZGVyaXZlZCBpbnN0YW5jZW9mIERlcml2ZWQiLCB0cnVlKTsKQEAgLTI4Nyw2ICszMDUsMTEg
QEAgc2hvdWxkVGhyb3coIkV2aWxFeGNlcHRpb25PYmplY3QqNSIpOwogRXZpbEV4Y2VwdGlvbk9i
amVjdC50b1N0cmluZ0V4cGxpY2l0ID0gZnVuY3Rpb24gZigpIHsgcmV0dXJuIGYoKTsgfQogc2hv
dWxkVGhyb3coIlN0cmluZyhFdmlsRXhjZXB0aW9uT2JqZWN0KSIpOwogCitFdmlsRXhjZXB0aW9u
T2JqZWN0LnRvTnVtYmVyID0gKCkgPT4gKHsgdmFsdWVPZjogKCkgPT4gNDgxNSB9KTsKK3Nob3Vs
ZEJlKCJOdW1iZXIoRXZpbEV4Y2VwdGlvbk9iamVjdCkiLCA0ODE1KTsKK0V2aWxFeGNlcHRpb25P
YmplY3QudG9TdHJpbmdFeHBsaWNpdCA9ICgpID0+ICh7IHRvU3RyaW5nOiAoKSA9PiAiZm9vYmFy
IiB9KTsKK3Nob3VsZEJlKCJgJHtFdmlsRXhjZXB0aW9uT2JqZWN0fWAiLCAiZm9vYmFyIik7CisK
IHNob3VsZEJlKCJjb25zb2xlIiwgIltvYmplY3QgY29uc29sZV0iKTsKIHNob3VsZEJlKCJ0eXBl
b2YgY29uc29sZS5sb2ciLCAiZnVuY3Rpb24iKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3NjU2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw5ICs3
NCw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdXNpbmcgVG9UaGlzRnVuY3Rpb25QdHIg
PSBKU1ZhbHVlICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKICAgICBU
b1RoaXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkodG9UaGlzKTsKIAotICAgIHVzaW5n
IERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyID0gSlNWYWx1ZSAoKikoY29uc3QgSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwotICAgIERlZmF1bHRWYWx1
ZUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkZWZhdWx0VmFsdWUpOwotCiAgICAgdXNp
bmcgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZSk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRS
WShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25Q
dHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKTsKQEAgLTE2
MCw3ICsxNTcsNiBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRvUHV0UHJv
cGVydHlTZWN1cml0eUNoZWNrLCBcCiAgICAgICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAotICAg
ICAgICAmQ2xhc3NOYW1lOjpkZWZhdWx0VmFsdWUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0
T3duUHJvcGVydHlOYW1lcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25TcGVjaWFsUHJv
cGVydHlOYW1lcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpjdXN0b21IYXNJbnN0YW5jZSwgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAy
NzY1NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODMsMTIgKzE4Myw2IEBAIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0Nl
bGwqIGNlbGwpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKTsKIH0KIAot
SlNWYWx1ZSBKU0NlbGw6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCiBib29sIEpTQ2VsbDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyNzY1
NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQ0LDcgKzI0NCw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgU3RydWN0dXJlKiwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpOwogCiAgICAgLy8gRHVt
bXkgaW1wbGVtZW50YXRpb25zIG9mIG92ZXJyaWRlLWFibGUgc3RhdGljIGZ1bmN0aW9ucyBmb3Ig
Y2xhc3NlcyB0byBwdXQgaW4gdGhlaXIgTWV0aG9kVGFibGUKLSAgICBzdGF0aWMgSlNWYWx1ZSBk
ZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCB2b2lkIGdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShy
ZXZpc2lvbiAyNzY1NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMTYsMTEgKzIyMTYsNiBAQCBKU1ZhbHVlIEpTT2Jq
ZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKEpTCiAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJObyBkZWZhdWx0IHZhbHVlIl9zKTsKIH0KIAotSlNWYWx1ZSBK
U09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKLXsKLSAgICBy
ZXR1cm4gb2JqZWN0LT5vcmRpbmFyeVRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgaGludCk7Ci19
Ci0KIEpTVmFsdWUgSlNPYmplY3Q6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yMjMxLDcgKzIyMjYsNyBAQCBKU1Zh
bHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iCiAgICAgaWYgKHZhbHVlKQogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRoaXMt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVmYXVsdFZhbHVlKHRoaXMsIGdsb2JhbE9iamVjdCwgcHJlZmVy
cmVkVHlwZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3JkaW5hcnlUb1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpKTsKIH0KIAogYm9vbCBKU09iamVjdDo6
Z2V0T3duU3RhdGljUHJvcGVydHlTbG90KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAyNzY1NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNyArNjYyLDYgQEAgcHVi
bGljOgogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCBw
cm9wZXJ0eU5hbWUpOwogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1
aW50NjRfdCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
VmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBKU1ZhbHVlIG9yZGluYXJ5VG9QcmltaXRpdmUoSlNH
bG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHZh
bHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3NjU2MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw2IEBAIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamUK
IAogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIC8vIGV4Y2VwdGlvbiBm
b3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1bHRWYWx1ZSgpCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHAxID0gdjEudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NjU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTI1ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgZGVmYXVs
dFZhbHVlKCkgZnJvbSB0aGUgbWV0aG9kIHRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2JqYy13
cmFwcGVyLXRvcHJpbWl0aXZlLmh0bWwKKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1
ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVmYXVsdFZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OnNldFVwU3ltYm9sVG9QcmltaXRpdmVTbG90KToKKwogMjAyMS0wNC0yNCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEZXBsb3kgUmVmL1JlZlB0ciBpbiBE
ZWxldGVTZWxlY3Rpb25Db21tYW5kCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5jcHAJKHJldmlzaW9uIDI3NjU2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIEJpbmRpbmdzIHsKIAogV0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVP
YmplY3Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVPYmplY3QpIH07CiAKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnZlcnRSdW50aW1lT2JqZWN0VG9QcmltaXRp
dmUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFJ1bnRpbWVPYmplY3Qp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFJ1bnRpbWVDb25zdHJ1Y3Rv
cik7CiAKQEAgLTE3OCw3ICsxNzksMTMgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSgogICAgICAgICAKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiAgICAgCi0gICAgcmV0
dXJuIGluc3RhbmNlLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBib29sIGZvdW5kID0gaW5zdGFuY2Ut
PmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
KyAgICBpZiAoZm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChwcm9wZXJ0eU5h
bWUudWlkKCkgPT0gdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wuaW1wbCgpKQor
ICAgICAgICByZXR1cm4gc2V0VXBTeW1ib2xUb1ByaW1pdGl2ZVNsb3Q8Y29udmVydFJ1bnRpbWVP
YmplY3RUb1ByaW1pdGl2ZT4odGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgc2xvdCk7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0y
MTMsMjEgKzIyMCwyNCBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1KU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmRlZmF1bHRW
YWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQorSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGNvbnZlcnRSdW50aW1lT2JqZWN0VG9QcmltaXRpdmUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgY29uc3QgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxjb25zdCBSdW50aW1lT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmpl
Y3QtPm1faW5zdGFuY2UpCi0gICAgICAgIHJldHVybiB0aHJvd1J1bnRpbWVPYmplY3RJbnZhbGlk
QWNjZXNzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIAotICAgIFJlZlB0
cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqZWN0LT5tX2luc3RhbmNlOworICAgIGNvbnN0
IFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PGNvbnN0IFJ1bnRpbWVP
YmplY3QqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlJ1bnRpbWVPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSBtZXRob2QgY2FsbGVkIG9u
IGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUuIl9zKTsKKyAgICBSZWZQdHI8SW5zdGFuY2U+IGlu
c3RhbmNlID0gdGhpc09iamVjdC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpOworICAgIGlmICghaW5z
dGFuY2UpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSdW50aW1lT2JqZWN0
SW52YWxpZEFjY2Vzc0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlKSk7CisgICAgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50ID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGxleGlj
YWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpbnN0YW5jZS0+YmVnaW4oKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGluc3RhbmNlLT5kZWZhdWx0VmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwg
aGludCk7CiAgICAgaW5zdGFuY2UtPmVuZCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oY2FsbFJ1bnRpbWVPYmplY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaAkocmV2aXNpb24gMjc2NTYzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDYWxsRGF0YShKU0Nl
bGwqKTsKICAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKIApA
QCAtOTEsNiArOTAsMTggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJbnN0YW5jZT4gbV9pbnN0
YW5jZTsKIH07CisKK3RlbXBsYXRlPFJhd05hdGl2ZUZ1bmN0aW9uIHRvUHJpbWl0aXZlSW1wbD4K
K2Jvb2wgc2V0VXBTeW1ib2xUb1ByaW1pdGl2ZVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1pdGl2ZVN5bWJvbCkgPT0gaW52YWxpZE9mZnNl
dCkgeworICAgICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9Q
cmltaXRpdmVTeW1ib2wsCisgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVdIl9zLCB0b1ByaW1pdGl2ZUltcGwpLAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgIH0KKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChv
YmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2ws
IHNsb3QpOworfQogICAgIAogfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmgJKHJldmlzaW9uIDI3NjU2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgfQogCisgICAgT2JqY0luc3RhbmNlKiBnZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgp
IGNvbnN0IHsgcmV0dXJuIF9pbnN0YW5jZS5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIE9iamNG
YWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5j
ZSosIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsT2JqZWN0Kik7CkBAIC0xMzMsNyArMTM1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDYWxsRGF0YShK
U0NlbGwqKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAgIGJvb2wgdG9Cb29sZWFuKEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4gYmVjYXVzZSBu
b25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBuZWVkIHRvIHNv
bHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiAyNzY1NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVz
cGFjZSBCaW5kaW5ncyB7CiAKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnZl
cnRPYmpDRmFsbGJhY2tPYmplY3RUb1ByaW1pdGl2ZSk7CisKIENsYXNzU3RydWN0UHRyIHdlYlNj
cmlwdE9iamVjdENsYXNzKCkKIHsKICAgICBzdGF0aWMgQ2xhc3NTdHJ1Y3RQdHI8V2ViU2NyaXB0
T2JqZWN0PiB3ZWJTY3JpcHRPYmplY3RDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiV2ViU2Ny
aXB0T2JqZWN0Iik7CkBAIC0yMzQsOCArMjM2LDExIEBAIHZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpmaW5pc2hDcmVhdGkKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQog
Ci1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jv
b2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBpZiAocHJvcGVydHlOYW1lLnVpZCgpID09IHZtLnByb3BlcnR5TmFtZXMtPnRv
UHJpbWl0aXZlU3ltYm9sLmltcGwoKSkKKyAgICAgICAgcmV0dXJuIHNldFVwU3ltYm9sVG9Qcmlt
aXRpdmVTbG90PGNvbnZlcnRPYmpDRmFsbGJhY2tPYmplY3RUb1ByaW1pdGl2ZT4ob2JqZWN0LCBn
bG9iYWxPYmplY3QsIHNsb3QpOwogICAgIC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9tIGdldHRp
bmcgY2FsbGVkIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgZmFsc2UKICAgICBzbG90LnNldFVu
ZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzAxLDExICszMDYsMTcgQEAgYm9vbCBP
YmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotSlNWYWx1ZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSkKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb252ZXJ0T2JqQ0Zh
bGxiYWNrT2JqZWN0VG9QcmltaXRpdmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCk7Ci0gICAgY29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCo+KG9iamVjdCk7Ci0gICAg
cmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHRoaXNPYmplY3Qt
Pm1faXRlbSkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmpjRmFsbGJhY2tPYmplY3RbU3ltYm9s
LnRvUHJpbWl0aXZlXSBtZXRob2QgY2FsbGVkIG9uIGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUu
Il9zKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNPYmplY3QtPmdldEludGVybmFsT2JqQ0luc3RhbmNlKCktPmdldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCB0
aGlzT2JqZWN0LT5wcm9wZXJ0eU5hbWUoKSkpKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXA6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCopIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNzY1NjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNC0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3ZlIGRlZmF1bHRWYWx1ZSgpIGZyb20gdGhlIG1l
dGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1MDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2JqYy13cmFwcGVyLXRvcHJpbWl0aXZlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3Jh
cHBlci10b3ByaW1pdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAyMS0wNC0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2luZyB0aGUgc291cmNlIG9mIGEgbW9kZWwgZWxl
bWVudCB3aXRoIGNsaXBwaW5nIGFwcGxpZWQgZG9lcyBub3QgdXBkYXRlIHRoZSBtb2RlbApJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci10b3ByaW1p
dGl2ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZG9tL29iamMtd3JhcHBlci10b3ByaW1pdGl2ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci10
b3ByaW1pdGl2ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAor
VGhpcyB0ZXN0cyBUb1ByaW1pdGl2ZSBwZXJmb3JtZWQgb24gT2JqZWN0aXZlLUMgd3JhcHBlciBv
YmplY3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitSdW50aW1lT2JqZWN0CisK
K1BBU1MgJycgKyBvYmpDQ29udHJvbGxlciBpcyAnPE9iakNDb250cm9sbGVyPicKK1BBU1MgK29i
akNDb250cm9sbGVyIGlzIDAKK1BBU1MgYCR7b2JqQ0NvbnRyb2xsZXJ9YCBpcyAnPE9iakNDb250
cm9sbGVyPicKKworUEFTUyBvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVdKCdkZWZh
dWx0JykgaXMgJzxPYmpDQ29udHJvbGxlcj4nCitQQVNTIG9iakNDb250cm9sbGVyW1N5bWJvbC50
b1ByaW1pdGl2ZV0oJ251bWJlcicpIGlzIDAKK1BBU1Mgb2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRv
UHJpbWl0aXZlXSgnc3RyaW5nJykgaXMgJzxPYmpDQ29udHJvbGxlcj4nCitQQVNTIG9iakNDb250
cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEV4cGVjdGVkIHByaW1pdGl2ZSBoaW50IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdu
dW1iZXInLCAnc3RyaW5nJy4uCitQQVNTIG9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2
ZV0uY2FsbCh7fSwgJ2RlZmF1bHQnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSdW50aW1l
T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUg
fHRoaXN8IHZhbHVlLi4KK1BBU1MgKDAsIG9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2
ZV0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUnVudGltZU9iamVjdFtTeW1ib2wudG9Q
cmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4uCisK
K1J1bnRpbWVPYmplY3QgKHJlZGVmaW5lZCBTeW1ib2wudG9QcmltaXRpdmUpCisKK1BBU1MgdHlw
ZW9mIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvciBpcyAnb2JqZWN0JworUEFTUyBzeW1ib2xU
b1ByaW1pdGl2ZURlc2NyaXB0b3IudmFsdWUgaXMgb2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0K
K1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLndyaXRhYmxlIGlzIHRydWUKK1BBU1Mg
c3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1Mgc3lt
Ym9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCisKK1BBU1Mgb2Jq
ZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oKSBpcyAnYmFyJworUEFTUyB0eXBlb2Ygc3ltYm9sVG9Q
cmltaXRpdmVEZXNjcmlwdG9yIGlzICdvYmplY3QnCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVz
Y3JpcHRvci52YWx1ZSBpcyBuZXdUb1ByaW1pdGl2ZQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURl
c2NyaXB0b3Iud3JpdGFibGUgaXMgZmFsc2UKK1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlw
dG9yLmVudW1lcmFibGUgaXMgdHJ1ZQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlIGlzIHRydWUKKworUEFTUyBvYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSBp
cyAxMjMKKworT2JqY0ZhbGxiYWNrT2JqZWN0SW1wCisKK1BBU1MgJycgKyBmYWxsYmFja09iamVj
dCBpcyAndW5kZWZpbmVkJworUEFTUyArZmFsbGJhY2tPYmplY3QgaXMgTmFOCitQQVNTIGAke2Zh
bGxiYWNrT2JqZWN0fWAgaXMgJ3VuZGVmaW5lZCcKKworUEFTUyBmYWxsYmFja09iamVjdFtTeW1i
b2wudG9QcmltaXRpdmVdKCkgaXMgdW5kZWZpbmVkCitQQVNTIGZhbGxiYWNrT2JqZWN0W1N5bWJv
bC50b1ByaW1pdGl2ZV0oJ2ZvbycpIGlzIHVuZGVmaW5lZAorUEFTUyBmYWxsYmFja09iamVjdFtT
eW1ib2wudG9QcmltaXRpdmVdLmNhbGwoe30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9i
amNGYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5j
b21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4uCitQQVNTICgwLCBmYWxsYmFja09iamVjdFtTeW1ib2wu
dG9QcmltaXRpdmVdKSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamNGYWxsYmFja09i
amVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0
aGlzfCB2YWx1ZS4uCisKK09iamNGYWxsYmFja09iamVjdEltcCAocmVkZWZpbmVkIFN5bWJvbC50
b1ByaW1pdGl2ZSkKKworUEFTUyB0eXBlb2Ygc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yIGlz
ICdvYmplY3QnCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci52YWx1ZSBpcyBvYmpl
Y3RbU3ltYm9sLnRvUHJpbWl0aXZlXQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3Iu
d3JpdGFibGUgaXMgdHJ1ZQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuZW51bWVy
YWJsZSBpcyBmYWxzZQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuY29uZmlndXJh
YmxlIGlzIHRydWUKKworUEFTUyBvYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSgpIGlzICdiYXIn
CitQQVNTIHR5cGVvZiBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IgaXMgJ29iamVjdCcKK1BB
U1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLnZhbHVlIGlzIG5ld1RvUHJpbWl0aXZlCitQ
QVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBz
eW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCitQQVNTIHN5bWJv
bFRvUHJpbWl0aXZlRGVzY3JpcHRvci5jb25maWd1cmFibGUgaXMgdHJ1ZQorCitQQVNTIG9iamVj
dFtTeW1ib2wudG9QcmltaXRpdmVdIGlzIDEyMworCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9kb20vb2JqYy13cmFwcGVyLXRvcHJpbWl0aXZlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci10b3ByaW1p
dGl2ZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2RvbS9vYmpjLXdyYXBwZXItdG9wcmltaXRpdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDg2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
cnVuVGVzdCgpCit7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgVG9QcmltaXRpdmUgcGVy
Zm9ybWVkIG9uIE9iamVjdGl2ZS1DIHdyYXBwZXIgb2JqZWN0LiIpOworICAgIGlmICghd2luZG93
Lm9iakNDb250cm9sbGVyKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIndpbmRvdy5vYmpDQ29udHJv
bGxlciBkb2VzIG5vdCBleGlzdC4gUnVuIHdpdGggLS1kdW1wLXJlbmRlci10cmVlLiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZGVidWcoIlJ1bnRpbWVPYmplY3RcbiIpOworCisg
ICAgc2hvdWxkQmUoIicnICsgb2JqQ0NvbnRyb2xsZXIiLCAiJzxPYmpDQ29udHJvbGxlcj4nIik7
CisgICAgc2hvdWxkQmUoIitvYmpDQ29udHJvbGxlciIsICIwIik7CisgICAgc2hvdWxkQmUoImAk
e29iakNDb250cm9sbGVyfWAiLCAiJzxPYmpDQ29udHJvbGxlcj4nIik7CisKKyAgICBkZWJ1Zygi
Iik7CisgICAgc2hvdWxkQmUoIm9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2Rl
ZmF1bHQnKSIsICInPE9iakNDb250cm9sbGVyPiciKTsKKyAgICBzaG91bGRCZSgib2JqQ0NvbnRy
b2xsZXJbU3ltYm9sLnRvUHJpbWl0aXZlXSgnbnVtYmVyJykiLCAiMCIpOworICAgIHNob3VsZEJl
KCJvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSIsICInPE9iakND
b250cm9sbGVyPiciKTsKKyAgICBzaG91bGRUaHJvdygib2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRv
UHJpbWl0aXZlXSgnZm9vJykiKTsKKyAgICBzaG91bGRUaHJvdygib2JqQ0NvbnRyb2xsZXJbU3lt
Ym9sLnRvUHJpbWl0aXZlXS5jYWxsKHt9LCAnZGVmYXVsdCcpIik7CisgICAgc2hvdWxkVGhyb3co
IigwLCBvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVdKSgpIik7CisKKyAgICBkZWJ1
ZygiXG5SdW50aW1lT2JqZWN0IChyZWRlZmluZWQgU3ltYm9sLnRvUHJpbWl0aXZlKVxuIik7Cisg
ICAgdGVzdERlZmluZU93blByb3BlcnR5KG9iakNDb250cm9sbGVyKTsKKworICAgIGRlYnVnKCJc
bk9iamNGYWxsYmFja09iamVjdEltcFxuIik7CisKKyAgICBmYWxsYmFja09iamVjdCA9IG9iakND
b250cm9sbGVyLnVuZGVmaW5lZEtleTsKKworICAgIHNob3VsZEJlKCInJyArIGZhbGxiYWNrT2Jq
ZWN0IiwgIid1bmRlZmluZWQnIik7CisgICAgc2hvdWxkQmUoIitmYWxsYmFja09iamVjdCIsICJO
YU4iKTsKKyAgICBzaG91bGRCZSgiYCR7ZmFsbGJhY2tPYmplY3R9YCIsICIndW5kZWZpbmVkJyIp
OworCisgICAgZGVidWcoIiIpOworICAgIHNob3VsZEJlKCJmYWxsYmFja09iamVjdFtTeW1ib2wu
dG9QcmltaXRpdmVdKCkiLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmUoImZhbGxiYWNrT2Jq
ZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2ZvbycpIiwgInVuZGVmaW5lZCIpOworICAgIHNob3Vs
ZFRocm93KCJmYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdLmNhbGwoe30pIik7Cisg
ICAgc2hvdWxkVGhyb3coIigwLCBmYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKSgp
Iik7CisKKyAgICBkZWJ1ZygiXG5PYmpjRmFsbGJhY2tPYmplY3RJbXAgKHJlZGVmaW5lZCBTeW1i
b2wudG9QcmltaXRpdmUpXG4iKTsKKyAgICB0ZXN0RGVmaW5lT3duUHJvcGVydHkoZmFsbGJhY2tP
YmplY3QpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdERlZmluZU93blByb3BlcnR5KF9vYmpl
Y3QpCit7CisgICAgb2JqZWN0ID0gX29iamVjdDsKKworICAgIHN5bWJvbFRvUHJpbWl0aXZlRGVz
Y3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wu
dG9QcmltaXRpdmUpOworICAgIHNob3VsZEJlKCJ0eXBlb2Ygc3ltYm9sVG9QcmltaXRpdmVEZXNj
cmlwdG9yIiwgIidvYmplY3QnIik7CisgICAgc2hvdWxkQmUoInN5bWJvbFRvUHJpbWl0aXZlRGVz
Y3JpcHRvci52YWx1ZSIsICJvYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSIpOworICAgIHNob3Vs
ZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3Iud3JpdGFibGUiLCAidHJ1ZSIpOworICAg
IHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuZW51bWVyYWJsZSIsICJmYWxz
ZSIpOworICAgIHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuY29uZmlndXJh
YmxlIiwgInRydWUiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBuZXdUb1ByaW1pdGl2ZSA9ICgp
ID0+ICJiYXIiOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIFN5bWJvbC50b1By
aW1pdGl2ZSwgeyB2YWx1ZTogbmV3VG9QcmltaXRpdmUsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVy
YWJsZTogdHJ1ZSB9KTsKKyAgICBzaG91bGRCZSgib2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0o
KSIsICInYmFyJyIpOworCisgICAgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC50b1ByaW1pdGl2ZSk7Cisg
ICAgc2hvdWxkQmUoInR5cGVvZiBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IiLCAiJ29iamVj
dCciKTsKKyAgICBzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLnZhbHVlIiwg
Im5ld1RvUHJpbWl0aXZlIik7CisgICAgc2hvdWxkQmUoInN5bWJvbFRvUHJpbWl0aXZlRGVzY3Jp
cHRvci53cml0YWJsZSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2
ZURlc2NyaXB0b3IuZW51bWVyYWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN5bWJvbFRv
UHJpbWl0aXZlRGVzY3JpcHRvci5jb25maWd1cmFibGUiLCAidHJ1ZSIpOworCisgICAgZGVidWco
IiIpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIFN5bWJvbC50b1ByaW1pdGl2
ZSwgeyBnZXQ6ICgpID0+IDEyMyB9KTsKKyAgICBzaG91bGRCZSgib2JqZWN0W1N5bWJvbC50b1By
aW1pdGl2ZV0iLCAiMTIzIik7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworPC9zY3Jp
cHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwkocmV2aXNpb24gMjc2NTYzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTU1Nyw2ICs1NTcsNyBAQCBsb2FkZXIvbmF2
aWdhdGlvbi13aGlsZS1kZWZlcnJpbmctbG9hZHMuCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBkb2Vz
bid0IGhhdmUgb2JqQ0NvbnRyb2xsZXIKIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9vYmpjLXdyYXBw
ZXItaWRlbnRpdHkuaHRtbAorcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci10b3By
aW1pdGl2ZS5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vd3JhcHBlci1jbGFzc2VzLW9iamMu
aHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3dyYXBwZXItcm91bmQtdHJpcHBpbmcuaHRtbAog
cGxhdGZvcm0vbWFjL2Zhc3Qvb2JqYy9kb20taHRtbC1zZWxlY3QtYWN0aXZhdGUuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427013</attachid>
            <date>2021-04-25 16:30:05 -0700</date>
            <delta_ts>2021-04-26 07:15:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225032-20210426023004.patch</filename>
            <type>text/plain</type>
            <size>34867</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc2NTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDIxLTA0LTI1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbSlNDXSBSZW1vdmUgZGVmYXVsdFZhbHVlKCkgZnJvbSB0aGUgbWV0aG9kIHRhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIG5vdCBvbmx5IHJlbW92ZXMgdGhlIHVubmVjZXNzYXJ5IG1ldGhvZCB0YWJsZSBlbnRyeSwg
YnV0IGFsc28gbWFrZXMKKyAgICAgICAgdGhlIHByZXNlbmNlIG9mIGN1c3RvbSBUb1ByaW1pdGl2
ZSBiZWhhdmlvciBvYnNlcnZhYmxlIHRvIHVzZXJsYW5kIGNvZGUuCisKKyAgICAgICAgVG8gbWFp
bnRhaW4gb2JqZWN0IGlkZW50aXR5IGFuZCAocG9zc2libHkpIGVuYWJsZSBjYWNoaW5nLCBTeW1i
b2wudG9QcmltaXRpdmUgbWV0aG9kCisgICAgICAgIGlzIHN0b3JlZCBvbiBhIHN0cnVjdHVyZS4g
VG8gYXZvaWQgYW55IHBvdGVudGlhbCBicmVha2FnZSwgaXQncyBtYWRlIHJlcGxhY2VhYmxlCisg
ICAgICAgIGFuZCBjb25maWd1cmFibGUsIGNvdmVyaW5nIHRoZSBjYXNlIHdoZW4gaXRzIGhvbGRl
ciBpcyB1c2VkIGFzIGEgW1tQcm94eVRhcmdldF1dLgorCisgICAgICAgIEZvciBKU0NhbGxiYWNr
T2JqZWN0LCBTeW1ib2wudG9QcmltaXRpdmUgbWV0aG9kIGlzIGNyZWF0ZWQgb25seSBpZiBDb252
ZXJ0VG9UeXBlCisgICAgICAgIGNhbGxiYWNrIGlzIHByZXNlbnQsIGJlZm9yZSBpbml0aWFsaXph
dGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgQWxzbywgdGhpcyBjaGFuZ2UgYWRkcyBhZGRpdGlv
bmFsIG9yZGluYXJ5VG9QcmltaXRpdmUoKSBjYXN0IHRvIGZpeCB0aGUgaW52YXJpYW50CisgICAg
ICAgIHRoYXQgdG9QcmltaXRpdmUoKSByZXR1cm5zIGEgcHJpbWl0aXZlIHZhbHVlIGFzIHBlciBz
cGVjIFsxXSwgd2hpY2ggd2FzIGJyb2tlbiBpZgorICAgICAgICBDb252ZXJ0VG9UeXBlIGNhbGxi
YWNrIHJldHVybmVkIGFuIG9iamVjdC4gU2VlIEFTU0VSVCBpbiBKU1ZhbHVlOjp0b1N0cmluZ1Ns
b3dDYXNlKCkuCisKKyAgICAgICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRv
cHJpbWl0aXZlIChzdGVwIDIuYi52aSkKKyAgICAgICAgICAgICBodHRwczovL3RjMzkuZXMvZWNt
YTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmUgKHN0ZXAgNikKKworICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbml0KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21Ub1ByaW1pdGl2ZSk6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVzdGFwaS5qczoK
KyAgICAgICAgKEV2aWxFeGNlcHRpb25PYmplY3QudG9OdW1iZXIpOgorICAgICAgICAoRXZpbEV4
Y2VwdGlvbk9iamVjdC50b1N0cmluZ0V4cGxpY2l0KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNz
SW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpkZWZhdWx0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
Ojp0b1ByaW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZhdWx0VmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc0FkZFNsb3dDYXNlKToKKwog
MjAyMS0wNC0yMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWUFSUiBJbnRlcnByZXRlcl0gSW1wcm9wZXIgYmFja3RyYWNrIG9mIHBhcmVudGhlc2VzIHdp
dGggbm9uLXplcm8gYmFzZWQgZ3JlZWR5IHF1YW50aWZpZXJzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMjc2NTYzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OSw3ICsxOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKIAogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJiwgU3Vi
c3BhY2VBY2Nlc3MpOwotICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CisgICAgc3Rh
dGljIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBFbmNvZGVkSlNWYWx1ZSBjdXN0b21Ub1ByaW1p
dGl2ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjc2NTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMiwxMyArMTEyLDIzIEBAIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiB2b2lk
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewogICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CiAgICAgCisgICAgYm9vbCBoYXNDb252ZXJ0VG9UeXBlID0gZmFsc2U7CiAg
ICAgVmVjdG9yPEpTT2JqZWN0SW5pdGlhbGl6ZUNhbGxiYWNrLCAxNj4gaW5pdFJvdXRpbmVzOwog
ICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7CiAgICAgZG8geworICAgICAgICBp
ZiAoanNDbGFzcy0+Y29udmVydFRvVHlwZSkKKyAgICAgICAgICAgIGhhc0NvbnZlcnRUb1R5cGUg
PSB0cnVlOwogICAgICAgICBpZiAoSlNPYmplY3RJbml0aWFsaXplQ2FsbGJhY2sgaW5pdGlhbGl6
ZSA9IGpzQ2xhc3MtPmluaXRpYWxpemUpCiAgICAgICAgICAgICBpbml0Um91dGluZXMuYXBwZW5k
KGluaXRpYWxpemUpOwogICAgIH0gd2hpbGUgKChqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xh
c3MpKTsKKworICAgIGlmIChoYXNDb252ZXJ0VG9UeXBlKSB7CisgICAgICAgIHRoaXMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wsCisgICAgICAgICAg
ICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9Qcmlt
aXRpdmVdIl9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgfQogICAgIAogICAg
IC8vIGluaXRpYWxpemUgZnJvbSBiYXNlIHRvIGRlcml2ZWQKICAgICBmb3IgKGludCBpID0gc3Rh
dGljX2Nhc3Q8aW50Pihpbml0Um91dGluZXMuc2l6ZSgpKSAtIDE7IGkgPj0gMDsgaS0tKSB7CkBA
IC0yMTcsMTIgKzIyNywxNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3du
UHJvCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1KU1ZhbHVlIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tVG9QcmltaXRpdmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
Vk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOworICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNDYWxsYmFj
a09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxl
IHx0aGlzfCB2YWx1ZS4iX3MpOworICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCA9IHRv
UHJlZmVycmVkUHJpbWl0aXZlVHlwZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKICAgICBKU0NvbnRl
eHRSZWYgY3R4ID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVm
ID0gdG9SZWYoanNDYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpc09iamVjdCkpOwogICAgIDo6SlNU
eXBlIGpzSGludCA9IGhpbnQgPT0gUHJlZmVyU3RyaW5nID8ga0pTVHlwZVN0cmluZyA6IGtKU1R5
cGVOdW1iZXI7CkBAIC0yMzEsMTYgKzI0NiwxOCBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVmYXVsCiAgICAgICAgIGlmIChKU09iamVjdENvbnZlcnRUb1R5cGVDYWxsYmFj
ayBjb252ZXJ0VG9UeXBlID0ganNDbGFzcy0+Y29udmVydFRvVHlwZSkgewogICAgICAgICAgICAg
SlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBy
ZXN1bHQgPSBjb252ZXJ0VG9UeXBlKGN0eCwgdGhpc1JlZiwganNIaW50LCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICBpZiAo
ZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgdG9KUyhnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAg
aWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSB0b0pTKGds
b2JhbE9iamVjdCwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoanNSZXN1
bHQuaXNPYmplY3QoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QoanNSZXN1bHQpLT5vcmRpbmFyeVRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
aGludCkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSZXN1bHQp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9KUyhnbG9iYWxPYmplY3QsIHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBQYXJlbnQ6OmRlZmF1bHRWYWx1ZShv
YmplY3QsIGdsb2JhbE9iamVjdCwgaGludCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPm9yZGluYXJ5VG9QcmltaXRpdmUoZ2xvYmFs
T2JqZWN0LCBoaW50KSkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlw
dHMvdGVzdGFwaS5qcwkocmV2aXNpb24gMjc2NTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDgsNiArMjA4LDI0IEBAIHNob3VsZEJlKCJzeW1ib2xUb1N0cmluZ1RhZ0Rlc2NyaXB0b3IuY28K
IE15T2JqZWN0W1N5bWJvbC50b1N0cmluZ1RhZ10gPSAiRm9vIjsKIHNob3VsZEJlKCJPYmplY3Qu
cHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTXlPYmplY3QpIiwgIltvYmplY3QgRm9vXSIpOwogCit2
YXIgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihNeU9iamVjdCwgU3ltYm9sLnRvUHJpbWl0aXZlKTsKK3Nob3VsZEJlKCJ0eXBlb2Yg
c3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yIiwgIm9iamVjdCIpOworc2hvdWxkQmUoInN5bWJv
bFRvUHJpbWl0aXZlRGVzY3JpcHRvci52YWx1ZSIsIE15T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2
ZV0pOworc2hvdWxkQmUoInN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci53cml0YWJsZSIsIHRy
dWUpOworc2hvdWxkQmUoInN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci5lbnVtZXJhYmxlIiwg
ZmFsc2UpOworc2hvdWxkQmUoInN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci5jb25maWd1cmFi
bGUiLCB0cnVlKTsKKworc2hvdWxkQmUoIk15T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2Rl
ZmF1bHQnKSIsIDEpOworc2hvdWxkQmUoIk15T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oJ251
bWJlcicpIiwgMSk7CitzaG91bGRCZSgiTXlPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSgnc3Ry
aW5nJykiLCAiTXlPYmplY3RBc1N0cmluZyIpOworCitzaG91bGRUaHJvdygiTXlPYmplY3RbU3lt
Ym9sLnRvUHJpbWl0aXZlXSgnZm9vJykiKTsKK3Nob3VsZFRocm93KCJNeU9iamVjdFtTeW1ib2wu
dG9QcmltaXRpdmVdLmNhbGwoe30sICdkZWZhdWx0JykiKTsKK3Nob3VsZFRocm93KCIoMCwgTXlP
YmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSkoJ2RlZmF1bHQnKSIpOworCitNeU9iamVjdFtTeW1i
b2wudG9QcmltaXRpdmVdID0gKCkgPT4gbnVsbDsKK3Nob3VsZEJlKCJNeU9iamVjdFtTeW1ib2wu
dG9QcmltaXRpdmVdKCdiYXInKSIsIG51bGwpOworCiBkZXJpdmVkID0gbmV3IERlcml2ZWQoKTsK
IAogc2hvdWxkQmUoImRlcml2ZWQgaW5zdGFuY2VvZiBEZXJpdmVkIiwgdHJ1ZSk7CkBAIC0yODcs
NiArMzA1LDExIEBAIHNob3VsZFRocm93KCJFdmlsRXhjZXB0aW9uT2JqZWN0KjUiKTsKIEV2aWxF
eGNlcHRpb25PYmplY3QudG9TdHJpbmdFeHBsaWNpdCA9IGZ1bmN0aW9uIGYoKSB7IHJldHVybiBm
KCk7IH0KIHNob3VsZFRocm93KCJTdHJpbmcoRXZpbEV4Y2VwdGlvbk9iamVjdCkiKTsKIAorRXZp
bEV4Y2VwdGlvbk9iamVjdC50b051bWJlciA9ICgpID0+ICh7IHZhbHVlT2Y6ICgpID0+IDQ4MTUg
fSk7CitzaG91bGRCZSgiTnVtYmVyKEV2aWxFeGNlcHRpb25PYmplY3QpIiwgNDgxNSk7CitFdmls
RXhjZXB0aW9uT2JqZWN0LnRvU3RyaW5nRXhwbGljaXQgPSAoKSA9PiAoeyB0b1N0cmluZzogKCkg
PT4gImZvb2JhciIgfSk7CitzaG91bGRCZSgiYCR7RXZpbEV4Y2VwdGlvbk9iamVjdH1gIiwgImZv
b2JhciIpOworCiBzaG91bGRCZSgiY29uc29sZSIsICJbb2JqZWN0IGNvbnNvbGVdIik7CiBzaG91
bGRCZSgidHlwZW9mIGNvbnNvbGUubG9nIiwgImZ1bmN0aW9uIik7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lvbiAyNzY1NjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsOSArNzQsNiBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5nIFRvVGhpc0Z1
bmN0aW9uUHRyID0gSlNWYWx1ZSAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9k
ZSk7CiAgICAgVG9UaGlzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHRvVGhpcyk7CiAK
LSAgICB1c2luZyBEZWZhdWx0VmFsdWVGdW5jdGlvblB0ciA9IEpTVmFsdWUgKCopKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKLSAgICBE
ZWZhdWx0VmFsdWVGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZGVmYXVsdFZhbHVlKTsK
LQogICAgIHVzaW5nIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIERvbnRFbnVtUHJv
cGVydGllc01vZGUpOwogICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0Rf
VEFCTEVfRU5UUlkoZ2V0T3duUHJvcGVydHlOYW1lcyk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1l
c0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1l
cyk7CkBAIC0xNjAsNyArMTU3LDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNs
YXNzTmFtZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCwgXAogICAgICAgICAmQ2xhc3NOYW1l
Ojpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaywgXAogICAgICAgICAmQ2xhc3NOYW1lOjp0b1Ro
aXMsIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6ZGVmYXVsdFZhbHVlLCBcCiAgICAgICAgICZDbGFz
c05hbWU6OmdldE93blByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3du
U3BlY2lhbFByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Y3VzdG9tSGFzSW5z
dGFuY2UsIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAko
cmV2aXNpb24gMjc2NTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDEyICsxODMsNiBAQCB2b2lkIHNsb3dWYWxpZGF0
ZUNlbGwoSlNDZWxsKiBjZWxsKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2Vs
bCk7CiB9CiAKLUpTVmFsdWUgSlNDZWxsOjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpCi17Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogYm9v
bCBKU0NlbGw6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2
aXNpb24gMjc2NTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxsVGFnKTsKIAog
ICAgIC8vIER1bW15IGltcGxlbWVudGF0aW9ucyBvZiBvdmVycmlkZS1hYmxlIHN0YXRpYyBmdW5j
dGlvbnMgZm9yIGNsYXNzZXMgdG8gcHV0IGluIHRoZWlyIE1ldGhvZFRhYmxlCi0gICAgc3RhdGlj
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFT
SCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBEb250RW51bVByb3Bl
cnRpZXNNb2RlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjc2NTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjE2LDExICsyMjE2LDYgQEAgSlNW
YWx1ZSBKU09iamVjdDo6b3JkaW5hcnlUb1ByaW1pdGl2ZShKUwogICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTm8gZGVmYXVsdCB2YWx1ZSJfcyk7CiB9CiAK
LUpTVmFsdWUgSlNPYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQp
Ci17Ci0gICAgcmV0dXJuIG9iamVjdC0+b3JkaW5hcnlUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IGhpbnQpOwotfQotCiBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNv
bnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjIzMSw3ICsyMjI2
LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYgogICAgIGlmICh2
YWx1ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCB0aGlzLT5tZXRob2RUYWJsZSh2bSktPmRlZmF1bHRWYWx1ZSh0aGlzLCBnbG9iYWxPYmpl
Y3QsIHByZWZlcnJlZFR5cGUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGlu
YXJ5VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKSk7CiB9CiAKIGJvb2wg
SlNPYmplY3Q6OmdldE93blN0YXRpY1Byb3BlcnR5U2xvdChWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjc2NTYzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjYyLDcgKzY2
Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0Kiwg
dWludDMyX3QgcHJvcGVydHlOYW1lKTsKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpTR2xvYmFs
T2JqZWN0KiwgdWludDY0X3QgcHJvcGVydHlOYW1lKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgSlNWYWx1ZSBvcmRpbmFyeVRvUHJp
bWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzY1NjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQCBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2UoSlNH
bG9iYWxPYmplCiAKIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICAvLyBl
eGNlcHRpb24gZm9yIHRoZSBEYXRlIGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzY1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wNC0yNSAgQWxl
eGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUmVt
b3ZlIGRlZmF1bHRWYWx1ZSgpIGZyb20gdGhlIG1ldGhvZCB0YWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MDMyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2Zhc3Qv
ZG9tL29iamMtd3JhcHBlci10b3ByaW1pdGl2ZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2lu
RWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpkZWZhdWx0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmRlZmF1bHRW
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIw
MjEtMDQtMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGVw
bG95IFJlZi9SZWZQdHIgaW4gRGVsZXRlU2VsZWN0aW9uQ29tbWFuZApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwCShyZXZpc2lvbiAyNzY1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTAgKzExNCwx
NCBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocGx1Z2luRWxlbWVudFByCiAKIGJvb2wgcGx1
Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChKU0hUTUxFbGVtZW50KiBlbGVtZW50
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgc2xvdC5zZXRJc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpOwog
CisgICAgaWYgKHByb3BlcnR5TmFtZS51aWQoKSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1p
dGl2ZVN5bWJvbC5pbXBsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZWxl
bWVudC0+Z2xvYmFsT2JqZWN0KCktPndvcmxkKCkuaXNOb3JtYWwoKSkgewotICAgICAgICBKU0M6
OkpTVmFsdWUgcHJvdG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QobGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG8gPSBlbGVtZW50LT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG8uaXNPYmplY3QoKSAmJiBKU0M6Ompz
Q2FzdDxKU0M6OkpTT2JqZWN0Kj4oYXNPYmplY3QocHJvdG8pKS0+aGFzUHJvcGVydHkobGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJl
dmlzaW9uIDI3NjU2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsK
IAogV0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9
IHsgIlJ1bnRpbWVPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVPYmplY3QpIH07CiAKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGNvbnZlcnRSdW50aW1lT2JqZWN0VG9QcmltaXRpdmUpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFJ1bnRpbWVPYmplY3QpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFJ1bnRpbWVDb25zdHJ1Y3Rvcik7CiAKQEAgLTU1LDYg
KzU2LDkgQEAgdm9pZCBSdW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdgogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1i
b2wsCisgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KHZtKSwgMSwg
IltTeW1ib2wudG9QcmltaXRpdmVdIl9zLCBjb252ZXJ0UnVudGltZU9iamVjdFRvUHJpbWl0aXZl
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogfQogCiB2b2lkIFJ1bnRpbWVPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpA
QCAtMTc4LDcgKzE4MiwxMyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKCiAgICAgICAgIAogICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICAKLSAgICByZXR1cm4gaW5z
dGFuY2UtPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGJvb2wgZm91bmQgPSBpbnN0YW5jZS0+Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgIGlm
IChmb3VuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHByb3BlcnR5TmFtZS51aWQo
KSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1pdGl2ZVN5bWJvbC5pbXBsKCkpCisgICAgICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTIxMywyMSArMjIzLDI0IEBAIGJvb2wgUnVudGlt
ZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUpT
VmFsdWUgUnVudGltZU9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlIGhpbnQpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29udmVydFJ1bnRpbWVPYmplY3RU
b1ByaW1pdGl2ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25z
dCBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3Qq
PihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0
dXJuIHRocm93UnVudGltZU9iamVjdEludmFsaWRBY2Nlc3NFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSk7Ci0gICAgCi0gICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNP
YmplY3QtPm1faW5zdGFuY2U7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
UnVudGltZU9iamVjdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRo
aXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAiUnVudGltZU9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBj
YWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4iX3MpOworICAgIGF1dG8gaW5zdGFu
Y2UgPSBtYWtlUmVmUHRyKHRoaXNPYmplY3QtPmdldEludGVybmFsSW5zdGFuY2UoKSk7CisgICAg
aWYgKCFpbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1J1bnRp
bWVPYmplY3RJbnZhbGlkQWNjZXNzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpKTsK
KyAgICBhdXRvIGhpbnQgPSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUobGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIGluc3RhbmNlLT5iZWdpbigpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gaW5zdGFuY2UtPmRlZmF1bHRWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBoaW50KTsKICAg
ICBpbnN0YW5jZS0+ZW5kKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsUnVu
dGltZU9iamVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZp
c2lvbiAyNzY1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSk7CiAgICAgc3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOwogICAg
IHN0YXRpYyBDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMjc2NTYzKQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKKyAgICBPYmpjSW5zdGFuY2UqIGdl
dEludGVybmFsT2JqQ0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gX2luc3RhbmNlLmdldCgpOyB9
CisKIHByaXZhdGU6CiAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqKTsKQEAgLTEzMyw3ICsxMzUs
NiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgYm9v
bCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0
aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2Vk
IHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9u
IDI3NjU2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAorc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oY29udmVydE9iakNGYWxsYmFja09iamVjdFRvUHJpbWl0aXZlKTsK
KwogQ2xhc3NTdHJ1Y3RQdHIgd2ViU2NyaXB0T2JqZWN0Q2xhc3MoKQogewogICAgIHN0YXRpYyBD
bGFzc1N0cnVjdFB0cjxXZWJTY3JpcHRPYmplY3Q+IHdlYlNjcmlwdE9iamVjdENsYXNzID0gTlND
bGFzc0Zyb21TdHJpbmcoQCJXZWJTY3JpcHRPYmplY3QiKTsKQEAgLTIzMiwxMCArMjM0LDE2IEBA
IHZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpmaW5pc2hDcmVhdGkKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b1ByaW1pdGl2ZVN5bWJvbCwKKyAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgY29udmVydE9iakNG
YWxsYmFja09iamVjdFRvUHJpbWl0aXZlKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCi1ib29sIE9iamNGYWxsYmFja09i
amVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAocHJvcGVy
dHlOYW1lLnVpZCgpID09IHZtLnByb3BlcnR5TmFtZXMtPnRvUHJpbWl0aXZlU3ltYm9sLmltcGwo
KSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgLy8ga2VlcCB0aGUgcHJvdG90
eXBlIGZyb20gZ2V0dGluZyBjYWxsZWQgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZQog
ICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDEsMTEgKzMw
OSwxNyBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVyCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1KU1ZhbHVlIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZh
bHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNvbnZlcnRPYmpDRmFsbGJhY2tPYmplY3RUb1ByaW1pdGl2ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBjb25zdCBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4o
b2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5k
ZWZpbmVkRmllbGQobGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgdGhpc09iamVjdC0+bV9pdGVtKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8T2JqY0Zh
bGxiYWNrT2JqZWN0SW1wKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
dGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsICJPYmpjRmFsbGJhY2tPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSBt
ZXRob2QgY2FsbGVkIG9uIGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUuIl9zKTsKKworICAgIHNj
b3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdl
dEludGVybmFsT2JqQ0luc3RhbmNlKCktPmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCB0aGlzT2JqZWN0LT5wcm9w
ZXJ0eU5hbWUoKSkpKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVh
bihKU0dsb2JhbE9iamVjdCopIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzY1NjMpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAy
MS0wNC0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0pTQ10gUmVtb3ZlIGRlZmF1bHRWYWx1ZSgpIGZyb20gdGhlIG1ldGhvZCB0YWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MDMyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9kb20vb2JqYy13cmFwcGVyLXRvcHJpbWl0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci10b3ByaW1pdGl2
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgKiBwbHVnaW5zL25wcnVudGltZS90b3N0cmluZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGx1Z2lucy9ucHJ1bnRpbWUvdG9zdHJpbmcuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5z
L25wcnVudGltZS92YWx1ZW9mLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbHVnaW5zL25wcnVu
dGltZS92YWx1ZW9mLmh0bWw6CisKIDIwMjEtMDQtMjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdpbmcgdGhlIHNvdXJjZSBvZiBhIG1vZGVs
IGVsZW1lbnQgd2l0aCBjbGlwcGluZyBhcHBsaWVkIGRvZXMgbm90IHVwZGF0ZSB0aGUgbW9kZWwK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9vYmpjLXdyYXBwZXItdG9w
cmltaXRpdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2RvbS9vYmpjLXdyYXBwZXItdG9wcmltaXRpdmUtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9vYmpjLXdyYXBw
ZXItdG9wcmltaXRpdmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUg
QEAKK1RoaXMgdGVzdHMgVG9QcmltaXRpdmUgcGVyZm9ybWVkIG9uIE9iamVjdGl2ZS1DIHdyYXBw
ZXIgb2JqZWN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUnVudGltZU9iamVj
dAorCitQQVNTICcnICsgb2JqQ0NvbnRyb2xsZXIgaXMgJzxPYmpDQ29udHJvbGxlcj4nCitQQVNT
ICtvYmpDQ29udHJvbGxlciBpcyAwCitQQVNTIGAke29iakNDb250cm9sbGVyfWAgaXMgJzxPYmpD
Q29udHJvbGxlcj4nCisKK1BBU1Mgb2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRvUHJpbWl0aXZlXS5s
ZW5ndGggaXMgMQorUEFTUyBvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVdKCdkZWZh
dWx0JykgaXMgJzxPYmpDQ29udHJvbGxlcj4nCitQQVNTIG9iakNDb250cm9sbGVyW1N5bWJvbC50
b1ByaW1pdGl2ZV0oJ251bWJlcicpIGlzIDAKK1BBU1Mgb2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRv
UHJpbWl0aXZlXSgnc3RyaW5nJykgaXMgJzxPYmpDQ29udHJvbGxlcj4nCitQQVNTIG9iakNDb250
cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEV4cGVjdGVkIHByaW1pdGl2ZSBoaW50IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdu
dW1iZXInLCAnc3RyaW5nJy4uCitQQVNTIG9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2
ZV0uY2FsbCh7fSwgJ2RlZmF1bHQnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSdW50aW1l
T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUg
fHRoaXN8IHZhbHVlLi4KK1BBU1MgKDAsIG9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2
ZV0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUnVudGltZU9iamVjdFtTeW1ib2wudG9Q
cmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4uCisK
K1J1bnRpbWVPYmplY3QgKHJlZGVmaW5lZCBTeW1ib2wudG9QcmltaXRpdmUpCisKK1BBU1MgdHlw
ZW9mIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvciBpcyAnb2JqZWN0JworUEFTUyBzeW1ib2xU
b1ByaW1pdGl2ZURlc2NyaXB0b3IudmFsdWUgaXMgb2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0K
K1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLndyaXRhYmxlIGlzIHRydWUKK1BBU1Mg
c3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1Mgc3lt
Ym9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCisKK1BBU1Mgb2Jq
ZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oKSBpcyAnYmFyJworUEFTUyB0eXBlb2Ygc3ltYm9sVG9Q
cmltaXRpdmVEZXNjcmlwdG9yIGlzICdvYmplY3QnCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVz
Y3JpcHRvci52YWx1ZSBpcyBuZXdUb1ByaW1pdGl2ZQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURl
c2NyaXB0b3Iud3JpdGFibGUgaXMgZmFsc2UKK1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlw
dG9yLmVudW1lcmFibGUgaXMgdHJ1ZQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlIGlzIHRydWUKKworUEFTUyBvYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSBp
cyAxMjMKKworT2JqY0ZhbGxiYWNrT2JqZWN0SW1wCisKK1BBU1MgJycgKyBmYWxsYmFja09iamVj
dCBpcyAndW5kZWZpbmVkJworUEFTUyArZmFsbGJhY2tPYmplY3QgaXMgTmFOCitQQVNTIGAke2Zh
bGxiYWNrT2JqZWN0fWAgaXMgJ3VuZGVmaW5lZCcKKworUEFTUyBmYWxsYmFja09iamVjdFtTeW1i
b2wudG9QcmltaXRpdmVdLmxlbmd0aCBpcyAwCitQQVNTIGZhbGxiYWNrT2JqZWN0W1N5bWJvbC50
b1ByaW1pdGl2ZV0oKSBpcyB1bmRlZmluZWQKK1BBU1MgZmFsbGJhY2tPYmplY3RbU3ltYm9sLnRv
UHJpbWl0aXZlXSgnZm9vJykgaXMgdW5kZWZpbmVkCitQQVNTIGZhbGxiYWNrT2JqZWN0W1N5bWJv
bC50b1ByaW1pdGl2ZV0uY2FsbCh7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqY0Zh
bGxiYWNrT2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBh
dGlibGUgfHRoaXN8IHZhbHVlLi4KK1BBU1MgKDAsIGZhbGxiYWNrT2JqZWN0W1N5bWJvbC50b1By
aW1pdGl2ZV0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqY0ZhbGxiYWNrT2JqZWN0
W1N5bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8
IHZhbHVlLi4KKworT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIChyZWRlZmluZWQgU3ltYm9sLnRvUHJp
bWl0aXZlKQorCitQQVNTIHR5cGVvZiBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IgaXMgJ29i
amVjdCcKK1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLnZhbHVlIGlzIG9iamVjdFtT
eW1ib2wudG9QcmltaXRpdmVdCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci53cml0
YWJsZSBpcyB0cnVlCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci5lbnVtZXJhYmxl
IGlzIGZhbHNlCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci5jb25maWd1cmFibGUg
aXMgdHJ1ZQorCitQQVNTIG9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKCkgaXMgJ2JhcicKK1BB
U1MgdHlwZW9mIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvciBpcyAnb2JqZWN0JworUEFTUyBz
eW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IudmFsdWUgaXMgbmV3VG9QcmltaXRpdmUKK1BBU1Mg
c3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIHN5bWJv
bFRvUHJpbWl0aXZlRGVzY3JpcHRvci5lbnVtZXJhYmxlIGlzIHRydWUKK1BBU1Mgc3ltYm9sVG9Q
cmltaXRpdmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCisKK1BBU1Mgb2JqZWN0W1N5
bWJvbC50b1ByaW1pdGl2ZV0gaXMgMTIzCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2RvbS9vYmpjLXdyYXBwZXItdG9wcmltaXRpdmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2JqYy13cmFwcGVyLXRvcHJpbWl0aXZl
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9t
L29iamMtd3JhcHBlci10b3ByaW1pdGl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
ODggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBUb1ByaW1pdGl2ZSBwZXJmb3Jt
ZWQgb24gT2JqZWN0aXZlLUMgd3JhcHBlciBvYmplY3QuIik7CisgICAgaWYgKCF3aW5kb3cub2Jq
Q0NvbnRyb2xsZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgid2luZG93Lm9iakNDb250cm9sbGVy
IGRvZXMgbm90IGV4aXN0LiBSdW4gd2l0aCAtLWR1bXAtcmVuZGVyLXRyZWUuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiUnVudGltZU9iamVjdFxuIik7CisKKyAgICBz
aG91bGRCZSgiJycgKyBvYmpDQ29udHJvbGxlciIsICInPE9iakNDb250cm9sbGVyPiciKTsKKyAg
ICBzaG91bGRCZSgiK29iakNDb250cm9sbGVyIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiYCR7b2Jq
Q0NvbnRyb2xsZXJ9YCIsICInPE9iakNDb250cm9sbGVyPiciKTsKKworICAgIGRlYnVnKCIiKTsK
KyAgICBzaG91bGRCZSgib2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRvUHJpbWl0aXZlXS5sZW5ndGgi
LCAiMSIpOworICAgIHNob3VsZEJlKCJvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVd
KCdkZWZhdWx0JykiLCAiJzxPYmpDQ29udHJvbGxlcj4nIik7CisgICAgc2hvdWxkQmUoIm9iakND
b250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0oJ251bWJlcicpIiwgIjAiKTsKKyAgICBzaG91
bGRCZSgib2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRvUHJpbWl0aXZlXSgnc3RyaW5nJykiLCAiJzxP
YmpDQ29udHJvbGxlcj4nIik7CisgICAgc2hvdWxkVGhyb3coIm9iakNDb250cm9sbGVyW1N5bWJv
bC50b1ByaW1pdGl2ZV0oJ2ZvbycpIik7CisgICAgc2hvdWxkVGhyb3coIm9iakNDb250cm9sbGVy
W1N5bWJvbC50b1ByaW1pdGl2ZV0uY2FsbCh7fSwgJ2RlZmF1bHQnKSIpOworICAgIHNob3VsZFRo
cm93KCIoMCwgb2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRvUHJpbWl0aXZlXSkoKSIpOworCisgICAg
ZGVidWcoIlxuUnVudGltZU9iamVjdCAocmVkZWZpbmVkIFN5bWJvbC50b1ByaW1pdGl2ZSlcbiIp
OworICAgIHRlc3REZWZpbmVPd25Qcm9wZXJ0eShvYmpDQ29udHJvbGxlcik7CisKKyAgICBkZWJ1
ZygiXG5PYmpjRmFsbGJhY2tPYmplY3RJbXBcbiIpOworCisgICAgZmFsbGJhY2tPYmplY3QgPSBv
YmpDQ29udHJvbGxlci51bmRlZmluZWRLZXk7CisKKyAgICBzaG91bGRCZSgiJycgKyBmYWxsYmFj
a09iamVjdCIsICIndW5kZWZpbmVkJyIpOworICAgIHNob3VsZEJlKCIrZmFsbGJhY2tPYmplY3Qi
LCAiTmFOIik7CisgICAgc2hvdWxkQmUoImAke2ZhbGxiYWNrT2JqZWN0fWAiLCAiJ3VuZGVmaW5l
ZCciKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBzaG91bGRCZSgiZmFsbGJhY2tPYmplY3RbU3lt
Ym9sLnRvUHJpbWl0aXZlXS5sZW5ndGgiLCAiMCIpOworICAgIHNob3VsZEJlKCJmYWxsYmFja09i
amVjdFtTeW1ib2wudG9QcmltaXRpdmVdKCkiLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmUo
ImZhbGxiYWNrT2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2ZvbycpIiwgInVuZGVmaW5lZCIp
OworICAgIHNob3VsZFRocm93KCJmYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdLmNh
bGwoe30pIik7CisgICAgc2hvdWxkVGhyb3coIigwLCBmYWxsYmFja09iamVjdFtTeW1ib2wudG9Q
cmltaXRpdmVdKSgpIik7CisKKyAgICBkZWJ1ZygiXG5PYmpjRmFsbGJhY2tPYmplY3RJbXAgKHJl
ZGVmaW5lZCBTeW1ib2wudG9QcmltaXRpdmUpXG4iKTsKKyAgICB0ZXN0RGVmaW5lT3duUHJvcGVy
dHkoZmFsbGJhY2tPYmplY3QpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdERlZmluZU93blBy
b3BlcnR5KF9vYmplY3QpCit7CisgICAgb2JqZWN0ID0gX29iamVjdDsKKworICAgIHN5bWJvbFRv
UHJpbWl0aXZlRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2Jq
ZWN0LCBTeW1ib2wudG9QcmltaXRpdmUpOworICAgIHNob3VsZEJlKCJ0eXBlb2Ygc3ltYm9sVG9Q
cmltaXRpdmVEZXNjcmlwdG9yIiwgIidvYmplY3QnIik7CisgICAgc2hvdWxkQmUoInN5bWJvbFRv
UHJpbWl0aXZlRGVzY3JpcHRvci52YWx1ZSIsICJvYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSIp
OworICAgIHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3Iud3JpdGFibGUiLCAi
dHJ1ZSIpOworICAgIHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuZW51bWVy
YWJsZSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0
b3IuY29uZmlndXJhYmxlIiwgInRydWUiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBuZXdUb1By
aW1pdGl2ZSA9ICgpID0+ICJiYXIiOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3Qs
IFN5bWJvbC50b1ByaW1pdGl2ZSwgeyB2YWx1ZTogbmV3VG9QcmltaXRpdmUsIHdyaXRhYmxlOiBm
YWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTsKKyAgICBzaG91bGRCZSgib2JqZWN0W1N5bWJvbC50
b1ByaW1pdGl2ZV0oKSIsICInYmFyJyIpOworCisgICAgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlw
dG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIFN5bWJvbC50b1By
aW1pdGl2ZSk7CisgICAgc2hvdWxkQmUoInR5cGVvZiBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0
b3IiLCAiJ29iamVjdCciKTsKKyAgICBzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlw
dG9yLnZhbHVlIiwgIm5ld1RvUHJpbWl0aXZlIik7CisgICAgc2hvdWxkQmUoInN5bWJvbFRvUHJp
bWl0aXZlRGVzY3JpcHRvci53cml0YWJsZSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzeW1i
b2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuZW51bWVyYWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxk
QmUoInN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci5jb25maWd1cmFibGUiLCAidHJ1ZSIpOwor
CisgICAgZGVidWcoIiIpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIFN5bWJv
bC50b1ByaW1pdGl2ZSwgeyBnZXQ6ICgpID0+IDEyMyB9KTsKKyAgICBzaG91bGRCZSgib2JqZWN0
W1N5bWJvbC50b1ByaW1pdGl2ZV0iLCAiMTIzIik7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBydW5U
ZXN0OworPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjc2NTYzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTU1Nyw2ICs1NTcsNyBA
QCBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmctbG9hZHMuCiAKICMgV2ViS2l0VGVz
dFJ1bm5lciBkb2Vzbid0IGhhdmUgb2JqQ0NvbnRyb2xsZXIKIHBsYXRmb3JtL21hYy9mYXN0L2Rv
bS9vYmpjLXdyYXBwZXItaWRlbnRpdHkuaHRtbAorcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMt
d3JhcHBlci10b3ByaW1pdGl2ZS5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vd3JhcHBlci1j
bGFzc2VzLW9iamMuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3dyYXBwZXItcm91bmQtdHJp
cHBpbmcuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3Qvb2JqYy9kb20taHRtbC1zZWxlY3QtYWN0aXZh
dGUuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9ucHJ1bnRpbWUvdG9zdHJpbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3Rv
c3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc2NTYzKQorKysgTGF5b3V0VGVzdHMvcGx1
Z2lucy9ucHJ1bnRpbWUvdG9zdHJpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
LDYgKzMsNyBAQCBUaGlzIHRlc3RzIHRoYXQgdG9TdHJpbmcoKSB3b3JrcyBjb3JyZWN0CiBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBwbHVnaW5bU3ltYm9sLnRvUHJpbWl0aXZl
XSBpcyB1bmRlZmluZWQKIFBBU1MgcGx1Z2luLnRvU3RyaW5nKCkgaXMgIlRlc3RPYmplY3QiCiBQ
QVNTIFtwbHVnaW4sICcnXS5qb2luKCcnKSBpcyAiVGVzdE9iamVjdCIKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3Rv
c3RyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9ucHJ1bnRpbWUv
dG9zdHJpbmcuaHRtbAkocmV2aXNpb24gMjc2NTYzKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9u
cHJ1bnRpbWUvdG9zdHJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsNiArMTQsNyBAQAog
ICAgIHBsdWdpbi5zZXRBdHRyaWJ1dGUoJ3Rlc3QnLCAndG8tc3RyaW5nLWFuZC12YWx1ZS1vZi1v
YmplY3QnKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBsdWdpbik7CiAKKyAgICBz
aG91bGRCZSgicGx1Z2luW1N5bWJvbC50b1ByaW1pdGl2ZV0iLCAidW5kZWZpbmVkIik7CiAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwbHVnaW4udG9TdHJpbmcoKSIsICJUZXN0T2JqZWN0Iik7
CiAgICAgLy8gTm9ybWFsIHBsdWdpbi50ZXN0T2JqZWN0ICsgIiIgd2lsbCBjYWxsIHZhbHVlT2Ys
CiAgICAgLy8gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBhIGNhbGwgdG8gaW1wbGljaXQgdG9TdHJp
bmcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS92YWx1ZW9mLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS92YWx1ZW9m
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc2NTYzKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9u
cHJ1bnRpbWUvdmFsdWVvZi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3
IEBAIFRoaXMgdGVzdHMgdGhhdCB2YWx1ZU9mKCkgd29ya3MgY29ycmVjdGwKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogCitQQVNTIHBsdWdpbltTeW1ib2wudG9QcmltaXRpdmVdIGlzIHVu
ZGVmaW5lZAogUEFTUyBwbHVnaW4udmFsdWVPZigpIGlzIDEyMzQ1Njc4OQogUEFTUyBwbHVnaW4g
PT0gMTIzNDU2Nzg5IGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5k
ZXg6IExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3ZhbHVlb2YuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS92YWx1ZW9mLmh0bWwJKHJldmlzaW9u
IDI3NjU2MykKKysrIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3ZhbHVlb2YuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTQsNiArMTQsNyBAQAogICAgIHBsdWdpbi5zZXRBdHRyaWJ1dGUo
J3Rlc3QnLCAndG8tc3RyaW5nLWFuZC12YWx1ZS1vZi1vYmplY3QnKTsKICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKHBsdWdpbik7CiAKKyAgICBzaG91bGRCZSgicGx1Z2luW1N5bWJvbC50
b1ByaW1pdGl2ZV0iLCAidW5kZWZpbmVkIik7CiAgICAgc2hvdWxkQmUoInBsdWdpbi52YWx1ZU9m
KCkiLCAiMTIzNDU2Nzg5Iik7CiAgICAgc2hvdWxkQmVUcnVlKCJwbHVnaW4gPT0gMTIzNDU2Nzg5
Iik7CiAgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427040</attachid>
            <date>2021-04-26 07:15:40 -0700</date>
            <delta_ts>2021-04-27 13:56:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225032-20210426171538.patch</filename>
            <type>text/plain</type>
            <size>34511</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc2NTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDIxLTA0LTI2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbSlNDXSBSZW1vdmUgZGVmYXVsdFZhbHVlKCkgZnJvbSB0aGUgbWV0aG9kIHRhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIG5vdCBvbmx5IHJlbW92ZXMgdGhlIHVubmVjZXNzYXJ5IG1ldGhvZCB0YWJsZSBlbnRyeSwg
YnV0IGFsc28gbWFrZXMKKyAgICAgICAgdGhlIHByZXNlbmNlIG9mIGN1c3RvbSBUb1ByaW1pdGl2
ZSBiZWhhdmlvciBvYnNlcnZhYmxlIHRvIHVzZXJsYW5kIGNvZGUuCisKKyAgICAgICAgVG8gbWFp
bnRhaW4gb2JqZWN0IGlkZW50aXR5IGFuZCAocG9zc2libHkpIGVuYWJsZSBjYWNoaW5nLCBTeW1i
b2wudG9QcmltaXRpdmUKKyAgICAgICAgbWV0aG9kIGlzIHN0b3JlZCBvbiBhIHN0cnVjdHVyZS4g
VG8gYXZvaWQgYW55IHBvdGVudGlhbCBicmVha2FnZSwgaXQncyBtYWRlCisgICAgICAgIHJlcGxh
Y2VhYmxlIGFuZCBjb25maWd1cmFibGUsIGNvdmVyaW5nIHRoZSBjYXNlIHdoZW4gaXRzIGhvbGRl
ciBpcyBhIFtbUHJveHlUYXJnZXRdXS4KKworICAgICAgICBGb3IgSlNDYWxsYmFja09iamVjdCwg
U3ltYm9sLnRvUHJpbWl0aXZlIG1ldGhvZCBpcyBjcmVhdGVkIG9ubHkgaWYgQ29udmVydFRvVHlw
ZQorICAgICAgICBjYWxsYmFjayBpcyBwcmVzZW50LCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gaXMg
cGVyZm9ybWVkLgorCisgICAgICAgIEFsc28sIHRoaXMgY2hhbmdlIGFkZHMgYWRkaXRpb25hbCBv
cmRpbmFyeVRvUHJpbWl0aXZlKCkgY2FzdCB0byBmaXggdGhlIGludmFyaWFudAorICAgICAgICB0
aGF0IHRvUHJpbWl0aXZlKCkgcmV0dXJucyBhIHByaW1pdGl2ZSB2YWx1ZSwgd2hpY2ggd2FzIGJy
b2tlbiBpZiBDb252ZXJ0VG9UeXBlCisgICAgICAgIGNhbGxiYWNrIHJldHVybmVkIGFuIG9iamVj
dC4gVGhlIGludmFyaWFudCBpcyBlbmZvcmNlZCBieSB0aGUgc3BlYyBbMV1bMl0gYW5kIGlzCisg
ICAgICAgIHZhbGlkYXRlZCB2aWEgYXNzZXJ0aW9uIGluIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nh
c2UoKS4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcmlt
aXRpdmUgKHN0ZXAgMi5iLnZpKQorICAgICAgICBbMl06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYy
LyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZSAoc3RlcCA2KQorCisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQpOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbVRvUHJpbWl0aXZlKToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWZhdWx0VmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzOgorICAg
ICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmRlZmF1bHRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmRlZmF1bHRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OmpzQWRkU2xvd0Nhc2UpOgorCiAyMDIxLTA0LTIzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZA
YXBwbGUuY29tPgogCiAgICAgICAgIFtZQVJSIEludGVycHJldGVyXSBJbXByb3BlciBiYWNrdHJh
Y2sgb2YgcGFyZW50aGVzZXMgd2l0aCBub24temVybyBiYXNlZCBncmVlZHkgcXVhbnRpZmllcnMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShy
ZXZpc2lvbiAyNzY1ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvckltcGwoVk0mLCBTdWJzcGFjZUFjY2Vzcyk7Ci0gICAgc3RhdGljIEpTVmFsdWUgZGVm
YXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlKTsKKyAgICBzdGF0aWMgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEVuY29kZWRK
U1ZhbHVlIGN1c3RvbVRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lv
biAyNzY1ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDEzICsxMTIsMjMgQEAgdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbml0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Cisg
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAKKyAgICBib29sIGhhc0NvbnZl
cnRUb1R5cGUgPSBmYWxzZTsKICAgICBWZWN0b3I8SlNPYmplY3RJbml0aWFsaXplQ2FsbGJhY2ss
IDE2PiBpbml0Um91dGluZXM7CiAgICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsK
ICAgICBkbyB7CisgICAgICAgIGlmIChqc0NsYXNzLT5jb252ZXJ0VG9UeXBlKQorICAgICAgICAg
ICAgaGFzQ29udmVydFRvVHlwZSA9IHRydWU7CiAgICAgICAgIGlmIChKU09iamVjdEluaXRpYWxp
emVDYWxsYmFjayBpbml0aWFsaXplID0ganNDbGFzcy0+aW5pdGlhbGl6ZSkKICAgICAgICAgICAg
IGluaXRSb3V0aW5lcy5hcHBlbmQoaW5pdGlhbGl6ZSk7CiAgICAgfSB3aGlsZSAoKGpzQ2xhc3Mg
PSBqc0NsYXNzLT5wYXJlbnRDbGFzcykpOworCisgICAgaWYgKGhhc0NvbnZlcnRUb1R5cGUpIHsK
KyAgICAgICAgdGhpcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1pdGl2
ZVN5bWJvbCwKKyAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCAiW1N5bWJvbC50b1ByaW1pdGl2ZV0iX3MsIGN1c3RvbVRvUHJpbWl0aXZlKSwKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKKyAgICB9CiAgICAgCiAgICAgLy8gaW5pdGlhbGl6ZSBmcm9tIGJhc2UgdG8gZGVyaXZlZAog
ICAgIGZvciAoaW50IGkgPSBzdGF0aWNfY2FzdDxpbnQ+KGluaXRSb3V0aW5lcy5zaXplKCkpIC0g
MTsgaSA+PSAwOyBpLS0pIHsKQEAgLTIxNywxMiArMjI3LDE3IEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLUpT
VmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSBoaW50KQorRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpj
dXN0b21Ub1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGNvbnN0IEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KG9i
amVjdCk7CisgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNDYWxsYmFja09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJKU0NhbGxiYWNrT2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9kIGNh
bGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlLiJfcyk7CisgICAgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50ID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihnbG9iYWxPYmplY3QpOwogICAg
IEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZihqc0Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlz
T2JqZWN0KSk7CiAgICAgOjpKU1R5cGUganNIaW50ID0gaGludCA9PSBQcmVmZXJTdHJpbmcgPyBr
SlNUeXBlU3RyaW5nIDoga0pTVHlwZU51bWJlcjsKQEAgLTIzMSwxNiArMjQ2LDE4IEBAIEpTVmFs
dWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWZhdWwKICAgICAgICAgaWYgKEpTT2JqZWN0
Q29udmVydFRvVHlwZUNhbGxiYWNrIGNvbnZlcnRUb1R5cGUgPSBqc0NsYXNzLT5jb252ZXJ0VG9U
eXBlKSB7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGNvbnZlcnRUb1R5cGUoY3R4LCB0aGlzUmVmLCBq
c0hpbnQsICZleGNlcHRpb24pOwotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRvSlMoZ2xvYmFs
T2JqZWN0LCBleGNlcHRpb24pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgSlNWYWx1
ZSBqc1Jlc3VsdCA9IHRvSlMoZ2xvYmFsT2JqZWN0LCByZXN1bHQpOworICAgICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShqc1Jlc3VsdC5pc09iamVjdCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdChqc1Jlc3VsdCktPm9yZGluYXJ5VG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBoaW50KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1Jlc3VsdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmVz
dWx0KQotICAgICAgICAgICAgICAgIHJldHVybiB0b0pTKGdsb2JhbE9iamVjdCwgcmVzdWx0KTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFBh
cmVudDo6ZGVmYXVsdFZhbHVlKG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBoaW50KSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+b3JkaW5h
cnlUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGhpbnQpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlT
Y3JpcHRzL3Rlc3RhcGkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCShyZXZpc2lvbiAyNzY1ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsMjQgQEAgc2hvdWxkQmUoInN5bWJvbFRvU3Ry
aW5nVGFnRGVzY3JpcHRvci5jbwogTXlPYmplY3RbU3ltYm9sLnRvU3RyaW5nVGFnXSA9ICJGb28i
Owogc2hvdWxkQmUoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChNeU9iamVjdCkiLCAi
W29iamVjdCBGb29dIik7CiAKK3ZhciBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCBTeW1ib2wudG9QcmltaXRpdmUp
Oworc2hvdWxkQmUoInR5cGVvZiBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IiLCAib2JqZWN0
Iik7CitzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLnZhbHVlIiwgTXlPYmpl
Y3RbU3ltYm9sLnRvUHJpbWl0aXZlXSk7CitzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNj
cmlwdG9yLndyaXRhYmxlIiwgdHJ1ZSk7CitzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNj
cmlwdG9yLmVudW1lcmFibGUiLCBmYWxzZSk7CitzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVE
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIsIHRydWUpOworCitzaG91bGRCZSgiTXlPYmplY3RbU3lt
Ym9sLnRvUHJpbWl0aXZlXSgnZGVmYXVsdCcpIiwgMSk7CitzaG91bGRCZSgiTXlPYmplY3RbU3lt
Ym9sLnRvUHJpbWl0aXZlXSgnbnVtYmVyJykiLCAxKTsKK3Nob3VsZEJlKCJNeU9iamVjdFtTeW1i
b2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSIsICJNeU9iamVjdEFzU3RyaW5nIik7CisKK3Nob3Vs
ZFRocm93KCJNeU9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKCdmb28nKSIpOworc2hvdWxkVGhy
b3coIk15T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0uY2FsbCh7fSwgJ2RlZmF1bHQnKSIpOwor
c2hvdWxkVGhyb3coIigwLCBNeU9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKSgnZGVmYXVsdCcp
Iik7CisKK015T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0gPSAoKSA9PiBudWxsOworc2hvdWxk
QmUoIk15T2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2JhcicpIiwgbnVsbCk7CisKIGRlcml2
ZWQgPSBuZXcgRGVyaXZlZCgpOwogCiBzaG91bGRCZSgiZGVyaXZlZCBpbnN0YW5jZW9mIERlcml2
ZWQiLCB0cnVlKTsKQEAgLTI4Nyw2ICszMDUsMTEgQEAgc2hvdWxkVGhyb3coIkV2aWxFeGNlcHRp
b25PYmplY3QqNSIpOwogRXZpbEV4Y2VwdGlvbk9iamVjdC50b1N0cmluZ0V4cGxpY2l0ID0gZnVu
Y3Rpb24gZigpIHsgcmV0dXJuIGYoKTsgfQogc2hvdWxkVGhyb3coIlN0cmluZyhFdmlsRXhjZXB0
aW9uT2JqZWN0KSIpOwogCitFdmlsRXhjZXB0aW9uT2JqZWN0LnRvTnVtYmVyID0gKCkgPT4gKHsg
dmFsdWVPZjogKCkgPT4gNDgxNSB9KTsKK3Nob3VsZEJlKCJOdW1iZXIoRXZpbEV4Y2VwdGlvbk9i
amVjdCkiLCA0ODE1KTsKK0V2aWxFeGNlcHRpb25PYmplY3QudG9TdHJpbmdFeHBsaWNpdCA9ICgp
ID0+ICh7IHRvU3RyaW5nOiAoKSA9PiAiZm9vYmFyIiB9KTsKK3Nob3VsZEJlKCJgJHtFdmlsRXhj
ZXB0aW9uT2JqZWN0fWAiLCAiZm9vYmFyIik7CisKIHNob3VsZEJlKCJjb25zb2xlIiwgIltvYmpl
Y3QgY29uc29sZV0iKTsKIHNob3VsZEJlKCJ0eXBlb2YgY29uc29sZS5sb2ciLCAiZnVuY3Rpb24i
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJl
dmlzaW9uIDI3NjU4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw5ICs3NCw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7
CiAgICAgdXNpbmcgVG9UaGlzRnVuY3Rpb25QdHIgPSBKU1ZhbHVlICgqKShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIEVDTUFNb2RlKTsKICAgICBUb1RoaXNGdW5jdGlvblB0ciBNRVRIT0RfVEFC
TEVfRU5UUlkodG9UaGlzKTsKIAotICAgIHVzaW5nIERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyID0g
SlNWYWx1ZSAoKikoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpOwotICAgIERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9F
TlRSWShkZWZhdWx0VmFsdWUpOwotCiAgICAgdXNpbmcgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0
aW9uUHRyID0gdm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1l
c0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsKICAg
ICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93
blNwZWNpYWxQcm9wZXJ0eU5hbWVzKTsKQEAgLTE2MCw3ICsxNTcsNiBAQCBzdHJ1Y3QgTWV0aG9k
VGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBc
CiAgICAgICAgICZDbGFzc05hbWU6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrLCBcCiAgICAg
ICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAotICAgICAgICAmQ2xhc3NOYW1lOjpkZWZhdWx0VmFs
dWUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlOYW1lcywgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcywgXAogICAgICAgICAmQ2xh
c3NOYW1lOjpjdXN0b21IYXNJbnN0YW5jZSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAyNzY1ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTIgKzE4Myw2
IEBAIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0NlbGwqIGNlbGwpCiAgICAgQVNTRVJUX0dDX09C
SkVDVF9MT09LU19WQUxJRChjZWxsKTsKIH0KIAotSlNWYWx1ZSBKU0NlbGw6OmRlZmF1bHRWYWx1
ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotfQotCiBib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyNzY1ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw2IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKiwgQ3JlYXRp
bmdFYXJseUNlbGxUYWcpOwogCiAgICAgLy8gRHVtbXkgaW1wbGVtZW50YXRpb25zIG9mIG92ZXJy
aWRlLWFibGUgc3RhdGljIGZ1bmN0aW9ucyBmb3IgY2xhc3NlcyB0byBwdXQgaW4gdGhlaXIgTWV0
aG9kVGFibGUKLSAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNN
b2RlKTsKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldE93blNwZWNp
YWxQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzY1ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
MTYsMTEgKzIyMTYsNiBAQCBKU1ZhbHVlIEpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKEpT
CiAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJObyBkZWZh
dWx0IHZhbHVlIl9zKTsKIH0KIAotSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0
IEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUgaGludCkKLXsKLSAgICByZXR1cm4gb2JqZWN0LT5vcmRpbmFyeVRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCwgaGludCk7Ci19Ci0KIEpTVmFsdWUgSlNPYmplY3Q6OnRvUHJp
bWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC0yMjMxLDcgKzIyMjYsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShK
U0dsb2JhbE9iCiAgICAgaWYgKHZhbHVlKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRoaXMtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmYXVsdFZh
bHVlKHRoaXMsIGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgb3JkaW5hcnlUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJl
ZFR5cGUpKTsKIH0KIAogYm9vbCBKU09iamVjdDo6Z2V0T3duU3RhdGljUHJvcGVydHlTbG90KFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyNzY1
ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NjIsNyArNjYyLDYgQEAgcHVibGljOgogICAgIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCBwcm9wZXJ0eU5hbWUpOwogICAgIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBK
U1ZhbHVlIG9yZGluYXJ5VG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlKSBjb25zdDsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzSW5zdGFu
Y2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFs
dWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDI3NjU4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBAIGJvb2wgSlNWYWx1
ZTo6ZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamUKIAogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNB
ZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKQogewotICAgIC8vIGV4Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRl
ZmF1bHRWYWx1ZSgpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHAxID0gdjEudG9Q
cmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NjU4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3
IEBACisyMDIxLTA0LTI2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4K
KworICAgICAgICBbSlNDXSBSZW1vdmUgZGVmYXVsdFZhbHVlKCkgZnJvbSB0aGUgbWV0aG9kIHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUw
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2JqYy13cmFwcGVyLXRvcHJpbWl0aXZlLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNG
YWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1
bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1
bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVu
dGltZU9iamVjdDo6ZGVmYXVsdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuaDoKKwogMjAyMS0wNC0yNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVmY291bnQgU3R5bGU6OlJlc29sdmVyCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDI3NjU4NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCwxMCArMTE0
LDE0IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihwbHVnaW5FbGVtZW50UHIKIAogYm9vbCBw
bHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTSFRNTEVsZW1lbnQqIGVsZW1l
bnQsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBzbG90LnNldElzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7
CiAKKyAgICBpZiAocHJvcGVydHlOYW1lLnVpZCgpID09IHZtLnByb3BlcnR5TmFtZXMtPnRvUHJp
bWl0aXZlU3ltYm9sLmltcGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFl
bGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29ybGQoKS5pc05vcm1hbCgpKSB7Ci0gICAgICAgIEpT
Qzo6SlNWYWx1ZSBwcm90byA9IGVsZW1lbnQtPmdldFByb3RvdHlwZURpcmVjdChsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90byA9IGVsZW1lbnQtPmdldFBy
b3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIEpTQzo6
anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykpLT5oYXNQcm9wZXJ0eShsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAko
cmV2aXNpb24gMjc2NTg3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgQmluZGluZ3Mg
ewogCiBXRUJDT1JFX0VYUE9SVCBjb25zdCBDbGFzc0luZm8gUnVudGltZU9iamVjdDo6c19pbmZv
ID0geyAiUnVudGltZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU9iamVjdCkgfTsKIAorc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oY29udmVydFJ1bnRpbWVPYmplY3RUb1ByaW1pdGl2ZSk7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsUnVudGltZU9iamVjdCk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsUnVudGltZUNvbnN0cnVjdG9yKTsKIApAQCAtNTUs
NiArNTYsOSBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2CiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5m
bygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1pdGl2ZVN5
bWJvbCwKKyAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qodm0pLCAx
LCAiW1N5bWJvbC50b1ByaW1pdGl2ZV0iX3MsIGNvbnZlcnRSdW50aW1lT2JqZWN0VG9QcmltaXRp
dmUpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiB9CiAKIHZvaWQgUnVudGltZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
CkBAIC0xNDMsNiArMTQ3LDkgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSgogICAgICAgICB0aHJvd1J1bnRpbWVPYmplY3RJbnZhbGlkQWNjZXNzRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorCisg
ICAgaWYgKHByb3BlcnR5TmFtZS51aWQoKSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1pdGl2
ZVN5bWJvbC5pbXBsKCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgCiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmplY3QtPm1faW5z
dGFuY2U7CiAKQEAgLTIxMywyMSArMjIwLDI0IEBAIGJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUpTVmFsdWUgUnVudGltZU9i
amVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oY29udmVydFJ1bnRpbWVPYmplY3RUb1ByaW1pdGl2ZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBjb25zdCBSdW50aW1lT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwotICAg
IGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93UnVudGlt
ZU9iamVjdEludmFsaWRBY2Nlc3NFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0g
ICAgCi0gICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmplY3QtPm1faW5zdGFu
Y2U7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZU9iamVjdCo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAi
UnVudGltZU9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21w
YXRpYmxlIHx0aGlzfCB2YWx1ZS4iX3MpOworICAgIGF1dG8gaW5zdGFuY2UgPSBtYWtlUmVmUHRy
KHRoaXNPYmplY3QtPmdldEludGVybmFsSW5zdGFuY2UoKSk7CisgICAgaWYgKCFpbnN0YW5jZSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1J1bnRpbWVPYmplY3RJbnZhbGlk
QWNjZXNzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpKTsKKyAgICBhdXRvIGhpbnQg
PSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIGluc3RhbmNlLT5iZWdpbigpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW5zdGFuY2UtPmRl
ZmF1bHRWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBoaW50KTsKICAgICBpbnN0YW5jZS0+ZW5k
KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsUnVudGltZU9iamVjdCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAyNzY1ODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAg
c3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOwogICAgIHN0YXRpYyBDYWxsRGF0
YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMjc2NTg3KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsx
MjQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKICAgICB9CiAKKyAgICBPYmpjSW5zdGFuY2UqIGdldEludGVybmFsT2JqQ0lu
c3RhbmNlKCkgY29uc3QgeyByZXR1cm4gX2luc3RhbmNlLmdldCgpOyB9CisKIHByaXZhdGU6CiAg
ICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2Jq
Y0luc3RhbmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxPYmplY3QqKTsKQEAgLTEzMyw3ICsxMzUsNiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxEYXRhIGdldENh
bGxEYXRhKEpTQ2VsbCopOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBi
ZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5l
ZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDI3NjU4NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBKU0Mg
ewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAorc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oY29udmVydE9iakNGYWxsYmFja09iamVjdFRvUHJpbWl0aXZlKTsKKwogQ2xhc3NTdHJ1Y3RQ
dHIgd2ViU2NyaXB0T2JqZWN0Q2xhc3MoKQogewogICAgIHN0YXRpYyBDbGFzc1N0cnVjdFB0cjxX
ZWJTY3JpcHRPYmplY3Q+IHdlYlNjcmlwdE9iamVjdENsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmco
QCJXZWJTY3JpcHRPYmplY3QiKTsKQEAgLTIzMiwxMCArMjM0LDE2IEBAIHZvaWQgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpmaW5pc2hDcmVhdGkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1p
dGl2ZVN5bWJvbCwKKyAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IDAsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgY29udmVydE9iakNGYWxsYmFja09iamVjdFRv
UHJpbWl0aXZlKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAocHJvcGVydHlOYW1lLnVpZCgpID09
IHZtLnByb3BlcnR5TmFtZXMtPnRvUHJpbWl0aXZlU3ltYm9sLmltcGwoKSkKKyAgICAgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgLy8ga2VlcCB0aGUgcHJvdG90eXBlIGZyb20gZ2V0dGlu
ZyBjYWxsZWQgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZQogICAgIHNsb3Quc2V0VW5k
ZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDEsMTEgKzMwOSwxNyBAQCBib29sIE9i
amNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVyCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1KU1ZhbHVlIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlKQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnZlcnRPYmpDRmFs
bGJhY2tPYmplY3RUb1ByaW1pdGl2ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKLSAgICBjb25zdCBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4ob2JqZWN0KTsKLSAgICBy
ZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQobGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgdGhpc09iamVjdC0+
bV9pdGVtKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1w
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
ICJPYmpjRmFsbGJhY2tPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSBtZXRob2QgY2FsbGVkIG9u
IGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUuIl9zKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldEludGVybmFsT2JqQ0lu
c3RhbmNlKCktPmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCB0aGlzT2JqZWN0LT5wcm9wZXJ0eU5hbWUoKSkpKTsK
IH0KIAogYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVj
dCopIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzY1ODcpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNC0yNiAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUmVtb3Zl
IGRlZmF1bHRWYWx1ZSgpIGZyb20gdGhlIG1ldGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MDMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2Jq
Yy13cmFwcGVyLXRvcHJpbWl0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci10b3ByaW1pdGl2ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbHVn
aW5zL25wcnVudGltZS90b3N0cmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGx1Z2lucy9u
cHJ1bnRpbWUvdG9zdHJpbmcuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5zL25wcnVudGltZS92YWx1
ZW9mLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbHVnaW5zL25wcnVudGltZS92YWx1ZW9mLmh0
bWw6CisKIDIwMjEtMDQtMjYgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVvY2FuaGFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBtZWRpYS90cmFjay9pbi1iYW5kLyBsYXlv
dXQgdGVzdHMgaW50cm9kdWNlZCBpbiByMTU0OTA4IGFyZSBmYWlsaW5nCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2JqYy13cmFwcGVyLXRvcHJpbWl0aXZlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20v
b2JqYy13cmFwcGVyLXRvcHJpbWl0aXZlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2JqYy13cmFwcGVyLXRvcHJpbWl0aXZl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACitUaGlzIHRlc3Rz
IFRvUHJpbWl0aXZlIHBlcmZvcm1lZCBvbiBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1J1bnRpbWVPYmplY3QKKworUEFTUyAnJyAr
IG9iakNDb250cm9sbGVyIGlzICc8T2JqQ0NvbnRyb2xsZXI+JworUEFTUyArb2JqQ0NvbnRyb2xs
ZXIgaXMgMAorUEFTUyBgJHtvYmpDQ29udHJvbGxlcn1gIGlzICc8T2JqQ0NvbnRyb2xsZXI+Jwor
CitQQVNTIG9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0ubGVuZ3RoIGlzIDEKK1BB
U1Mgb2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRvUHJpbWl0aXZlXSgnZGVmYXVsdCcpIGlzICc8T2Jq
Q0NvbnRyb2xsZXI+JworUEFTUyBvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVdKCdu
dW1iZXInKSBpcyAwCitQQVNTIG9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0oJ3N0
cmluZycpIGlzICc8T2JqQ0NvbnRyb2xsZXI+JworUEFTUyBvYmpDQ29udHJvbGxlcltTeW1ib2wu
dG9QcmltaXRpdmVdKCdmb28nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBw
cmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmlu
ZycuLgorUEFTUyBvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVdLmNhbGwoe30sICdk
ZWZhdWx0JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUnVudGltZU9iamVjdFtTeW1ib2wu
dG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4u
CitQQVNTICgwLCBvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVdKSgpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFJ1bnRpbWVPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSBtZXRo
b2QgY2FsbGVkIG9uIGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUuLgorCitSdW50aW1lT2JqZWN0
IChyZWRlZmluZWQgU3ltYm9sLnRvUHJpbWl0aXZlKQorCitQQVNTIHR5cGVvZiBzeW1ib2xUb1By
aW1pdGl2ZURlc2NyaXB0b3IgaXMgJ29iamVjdCcKK1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNj
cmlwdG9yLnZhbHVlIGlzIG9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdCitQQVNTIHN5bWJvbFRv
UHJpbWl0aXZlRGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCitQQVNTIHN5bWJvbFRvUHJpbWl0
aXZlRGVzY3JpcHRvci5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZl
RGVzY3JpcHRvci5jb25maWd1cmFibGUgaXMgdHJ1ZQorCitQQVNTIG9iamVjdFtTeW1ib2wudG9Q
cmltaXRpdmVdKCkgaXMgJ2JhcicKK1BBU1MgdHlwZW9mIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3Jp
cHRvciBpcyAnb2JqZWN0JworUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IudmFsdWUg
aXMgbmV3VG9QcmltaXRpdmUKK1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLndyaXRh
YmxlIGlzIGZhbHNlCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci5lbnVtZXJhYmxl
IGlzIHRydWUKK1BBU1Mgc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBp
cyB0cnVlCisKK1BBU1Mgb2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0gaXMgMTIzCisKK09iamNG
YWxsYmFja09iamVjdEltcAorCitQQVNTICcnICsgZmFsbGJhY2tPYmplY3QgaXMgJ3VuZGVmaW5l
ZCcKK1BBU1MgK2ZhbGxiYWNrT2JqZWN0IGlzIE5hTgorUEFTUyBgJHtmYWxsYmFja09iamVjdH1g
IGlzICd1bmRlZmluZWQnCisKK1BBU1MgZmFsbGJhY2tPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZl
XS5sZW5ndGggaXMgMAorUEFTUyBmYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKCkg
aXMgdW5kZWZpbmVkCitQQVNTIGZhbGxiYWNrT2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0oJ2Zv
bycpIGlzIHVuZGVmaW5lZAorUEFTUyBmYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVd
LmNhbGwoe30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamNGYWxsYmFja09iamVjdFtT
eW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2
YWx1ZS4uCitQQVNTICgwLCBmYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKSgpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamNGYWxsYmFja09iamVjdFtTeW1ib2wudG9Qcmlt
aXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4uCisKK09i
amNGYWxsYmFja09iamVjdEltcCAocmVkZWZpbmVkIFN5bWJvbC50b1ByaW1pdGl2ZSkKKworUEFT
UyB0eXBlb2Ygc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yIGlzICdvYmplY3QnCitQQVNTIHN5
bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci52YWx1ZSBpcyBvYmplY3RbU3ltYm9sLnRvUHJpbWl0
aXZlXQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3Iud3JpdGFibGUgaXMgdHJ1ZQor
UEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFT
UyBzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKKworUEFT
UyBvYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSgpIGlzICdiYXInCitQQVNTIHR5cGVvZiBzeW1i
b2xUb1ByaW1pdGl2ZURlc2NyaXB0b3IgaXMgJ29iamVjdCcKK1BBU1Mgc3ltYm9sVG9QcmltaXRp
dmVEZXNjcmlwdG9yLnZhbHVlIGlzIG5ld1RvUHJpbWl0aXZlCitQQVNTIHN5bWJvbFRvUHJpbWl0
aXZlRGVzY3JpcHRvci53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBzeW1ib2xUb1ByaW1pdGl2ZURl
c2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCitQQVNTIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3Jp
cHRvci5jb25maWd1cmFibGUgaXMgdHJ1ZQorCitQQVNTIG9iamVjdFtTeW1ib2wudG9QcmltaXRp
dmVdIGlzIDEyMworCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2Jq
Yy13cmFwcGVyLXRvcHJpbWl0aXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci10b3ByaW1pdGl2ZS5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9vYmpjLXdyYXBwZXIt
dG9wcmltaXRpdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgVG9QcmltaXRpdmUgcGVyZm9ybWVkIG9uIE9iamVjdGl2
ZS1DIHdyYXBwZXIgb2JqZWN0LiIpOworICAgIGlmICghd2luZG93Lm9iakNDb250cm9sbGVyKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIndpbmRvdy5vYmpDQ29udHJvbGxlciBkb2VzIG5vdCBleGlz
dC4gUnVuIHdpdGggLS1kdW1wLXJlbmRlci10cmVlLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZGVidWcoIlJ1bnRpbWVPYmplY3RcbiIpOworCisgICAgc2hvdWxkQmUoIicnICsg
b2JqQ0NvbnRyb2xsZXIiLCAiJzxPYmpDQ29udHJvbGxlcj4nIik7CisgICAgc2hvdWxkQmUoIitv
YmpDQ29udHJvbGxlciIsICIwIik7CisgICAgc2hvdWxkQmUoImAke29iakNDb250cm9sbGVyfWAi
LCAiJzxPYmpDQ29udHJvbGxlcj4nIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgc2hvdWxkQmUo
Im9iakNDb250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0ubGVuZ3RoIiwgIjEiKTsKKyAgICBz
aG91bGRCZSgib2JqQ0NvbnRyb2xsZXJbU3ltYm9sLnRvUHJpbWl0aXZlXSgnZGVmYXVsdCcpIiwg
Iic8T2JqQ0NvbnRyb2xsZXI+JyIpOworICAgIHNob3VsZEJlKCJvYmpDQ29udHJvbGxlcltTeW1i
b2wudG9QcmltaXRpdmVdKCdudW1iZXInKSIsICIwIik7CisgICAgc2hvdWxkQmUoIm9iakNDb250
cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0oJ3N0cmluZycpIiwgIic8T2JqQ0NvbnRyb2xsZXI+
JyIpOworICAgIHNob3VsZFRocm93KCJvYmpDQ29udHJvbGxlcltTeW1ib2wudG9QcmltaXRpdmVd
KCdmb28nKSIpOworICAgIHNob3VsZFRocm93KCJvYmpDQ29udHJvbGxlcltTeW1ib2wudG9Qcmlt
aXRpdmVdLmNhbGwoe30sICdkZWZhdWx0JykiKTsKKyAgICBzaG91bGRUaHJvdygiKDAsIG9iakND
b250cm9sbGVyW1N5bWJvbC50b1ByaW1pdGl2ZV0pKCkiKTsKKworICAgIGRlYnVnKCJcblJ1bnRp
bWVPYmplY3QgKHJlZGVmaW5lZCBTeW1ib2wudG9QcmltaXRpdmUpXG4iKTsKKyAgICB0ZXN0RGVm
aW5lT3duUHJvcGVydHkob2JqQ0NvbnRyb2xsZXIpOworCisgICAgZGVidWcoIlxuT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wXG4iKTsKKworICAgIGZhbGxiYWNrT2JqZWN0ID0gb2JqQ0NvbnRyb2xsZXIu
dW5kZWZpbmVkS2V5OworCisgICAgc2hvdWxkQmUoIicnICsgZmFsbGJhY2tPYmplY3QiLCAiJ3Vu
ZGVmaW5lZCciKTsKKyAgICBzaG91bGRCZSgiK2ZhbGxiYWNrT2JqZWN0IiwgIk5hTiIpOworICAg
IHNob3VsZEJlKCJgJHtmYWxsYmFja09iamVjdH1gIiwgIid1bmRlZmluZWQnIik7CisKKyAgICBk
ZWJ1ZygiIik7CisgICAgc2hvdWxkQmUoImZhbGxiYWNrT2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2
ZV0ubGVuZ3RoIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZmFsbGJhY2tPYmplY3RbU3ltYm9sLnRv
UHJpbWl0aXZlXSgpIiwgInVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlKCJmYWxsYmFja09iamVj
dFtTeW1ib2wudG9QcmltaXRpdmVdKCdmb28nKSIsICJ1bmRlZmluZWQiKTsKKyAgICBzaG91bGRU
aHJvdygiZmFsbGJhY2tPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXS5jYWxsKHt9KSIpOworICAg
IHNob3VsZFRocm93KCIoMCwgZmFsbGJhY2tPYmplY3RbU3ltYm9sLnRvUHJpbWl0aXZlXSkoKSIp
OworCisgICAgZGVidWcoIlxuT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIChyZWRlZmluZWQgU3ltYm9s
LnRvUHJpbWl0aXZlKVxuIik7CisgICAgdGVzdERlZmluZU93blByb3BlcnR5KGZhbGxiYWNrT2Jq
ZWN0KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3REZWZpbmVPd25Qcm9wZXJ0eShfb2JqZWN0
KQoreworICAgIG9iamVjdCA9IF9vYmplY3Q7CisKKyAgICBzeW1ib2xUb1ByaW1pdGl2ZURlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgU3ltYm9sLnRv
UHJpbWl0aXZlKTsKKyAgICBzaG91bGRCZSgidHlwZW9mIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3Jp
cHRvciIsICInb2JqZWN0JyIpOworICAgIHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2Ny
aXB0b3IudmFsdWUiLCAib2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0iKTsKKyAgICBzaG91bGRC
ZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLndyaXRhYmxlIiwgInRydWUiKTsKKyAgICBz
aG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmVudW1lcmFibGUiLCAiZmFsc2Ui
KTsKKyAgICBzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZSIsICJ0cnVlIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgbmV3VG9QcmltaXRpdmUgPSAoKSA9
PiAiYmFyIjsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBTeW1ib2wudG9Qcmlt
aXRpdmUsIHsgdmFsdWU6IG5ld1RvUHJpbWl0aXZlLCB3cml0YWJsZTogZmFsc2UsIGVudW1lcmFi
bGU6IHRydWUgfSk7CisgICAgc2hvdWxkQmUoIm9iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdKCki
LCAiJ2JhciciKTsKKworICAgIHN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBTeW1ib2wudG9QcmltaXRpdmUpOworICAg
IHNob3VsZEJlKCJ0eXBlb2Ygc3ltYm9sVG9QcmltaXRpdmVEZXNjcmlwdG9yIiwgIidvYmplY3Qn
Iik7CisgICAgc2hvdWxkQmUoInN5bWJvbFRvUHJpbWl0aXZlRGVzY3JpcHRvci52YWx1ZSIsICJu
ZXdUb1ByaW1pdGl2ZSIpOworICAgIHNob3VsZEJlKCJzeW1ib2xUb1ByaW1pdGl2ZURlc2NyaXB0
b3Iud3JpdGFibGUiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgic3ltYm9sVG9QcmltaXRpdmVE
ZXNjcmlwdG9yLmVudW1lcmFibGUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJzeW1ib2xUb1By
aW1pdGl2ZURlc2NyaXB0b3IuY29uZmlndXJhYmxlIiwgInRydWUiKTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBTeW1ib2wudG9QcmltaXRpdmUs
IHsgZ2V0OiAoKSA9PiAxMjMgfSk7CisgICAgc2hvdWxkQmUoIm9iamVjdFtTeW1ib2wudG9Qcmlt
aXRpdmVdIiwgIjEyMyIpOworfQorCit3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKzwvc2NyaXB0
PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlv
bnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDI3NjU4NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNiArNTU3LDcgQEAgbG9hZGVyL25hdmln
YXRpb24td2hpbGUtZGVmZXJyaW5nLWxvYWRzLgogCiAjIFdlYktpdFRlc3RSdW5uZXIgZG9lc24n
dCBoYXZlIG9iakNDb250cm9sbGVyCiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vb2JqYy13cmFwcGVy
LWlkZW50aXR5Lmh0bWwKK3BsYXRmb3JtL21hYy9mYXN0L2RvbS9vYmpjLXdyYXBwZXItdG9wcmlt
aXRpdmUuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1vYmpjLmh0
bWwKIHBsYXRmb3JtL21hYy9mYXN0L2RvbS93cmFwcGVyLXJvdW5kLXRyaXBwaW5nLmh0bWwKIHBs
YXRmb3JtL21hYy9mYXN0L29iamMvZG9tLWh0bWwtc2VsZWN0LWFjdGl2YXRlLmh0bWwKSW5kZXg6
IExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3Rvc3RyaW5nLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS90b3N0cmluZy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3NjU4NykKKysrIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1l
L3Rvc3RyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAgVGhp
cyB0ZXN0cyB0aGF0IHRvU3RyaW5nKCkgd29ya3MgY29ycmVjdAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiAKK1BBU1MgcGx1Z2luW1N5bWJvbC50b1ByaW1pdGl2ZV0gaXMgdW5kZWZpbmVk
CiBQQVNTIHBsdWdpbi50b1N0cmluZygpIGlzICJUZXN0T2JqZWN0IgogUEFTUyBbcGx1Z2luLCAn
J10uam9pbignJykgaXMgIlRlc3RPYmplY3QiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS90b3N0cmluZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3Rvc3RyaW5nLmh0bWwJ
KHJldmlzaW9uIDI3NjU4NykKKysrIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3Rvc3Ry
aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICBwbHVnaW4uc2V0
QXR0cmlidXRlKCd0ZXN0JywgJ3RvLXN0cmluZy1hbmQtdmFsdWUtb2Ytb2JqZWN0Jyk7CiAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwbHVnaW4pOwogCisgICAgc2hvdWxkQmUoInBsdWdp
bltTeW1ib2wudG9QcmltaXRpdmVdIiwgInVuZGVmaW5lZCIpOwogICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygicGx1Z2luLnRvU3RyaW5nKCkiLCAiVGVzdE9iamVjdCIpOwogICAgIC8vIE5vcm1h
bCBwbHVnaW4udGVzdE9iamVjdCArICIiIHdpbGwgY2FsbCB2YWx1ZU9mLAogICAgIC8vIGRvIHNv
bWUgdHJpY2tzIHRvIG1ha2UgYSBjYWxsIHRvIGltcGxpY2l0IHRvU3RyaW5nLgpJbmRleDogTGF5
b3V0VGVzdHMvcGx1Z2lucy9ucHJ1bnRpbWUvdmFsdWVvZi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9ucHJ1bnRpbWUvdmFsdWVvZi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI3NjU4NykKKysrIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL3ZhbHVl
b2YtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQCBUaGlzIHRlc3Rz
IHRoYXQgdmFsdWVPZigpIHdvcmtzIGNvcnJlY3RsCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAorUEFTUyBwbHVnaW5bU3ltYm9sLnRvUHJpbWl0aXZlXSBpcyB1bmRlZmluZWQKIFBBU1Mg
cGx1Z2luLnZhbHVlT2YoKSBpcyAxMjM0NTY3ODkKIFBBU1MgcGx1Z2luID09IDEyMzQ1Njc4OSBp
cyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0
cy9wbHVnaW5zL25wcnVudGltZS92YWx1ZW9mLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGx1Z2lucy9ucHJ1bnRpbWUvdmFsdWVvZi5odG1sCShyZXZpc2lvbiAyNzY1ODcpCisrKyBM
YXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS92YWx1ZW9mLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE0LDYgKzE0LDcgQEAKICAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0JywgJ3RvLXN0
cmluZy1hbmQtdmFsdWUtb2Ytb2JqZWN0Jyk7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChwbHVnaW4pOwogCisgICAgc2hvdWxkQmUoInBsdWdpbltTeW1ib2wudG9QcmltaXRpdmVdIiwg
InVuZGVmaW5lZCIpOwogICAgIHNob3VsZEJlKCJwbHVnaW4udmFsdWVPZigpIiwgIjEyMzQ1Njc4
OSIpOwogICAgIHNob3VsZEJlVHJ1ZSgicGx1Z2luID09IDEyMzQ1Njc4OSIpOwogICAgIHZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>