<?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>193917</bug_id>
          
          <creation_ts>2019-01-28 12:06:19 -0800</creation_ts>
          <short_desc>Implement capture for Pointer Events on iOS</short_desc>
          <delta_ts>2019-02-06 09:18:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1499129</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-28 12:06:19 -0800</bug_when>
    <thetext>To further our support for the Pointer Events spec on iOS, we need to implement capture as specified at https://w3c.github.io/pointerevents/#pointer-capture: the Element APIs, the implicit capture and the gotpointercapture and lostpointercapture events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499130</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-28 12:06:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/47605689&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499339</commentid>
    <comment_count>2</comment_count>
      <attachid>360413</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-28 18:34:03 -0800</bug_when>
    <thetext>Created attachment 360413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499340</commentid>
    <comment_count>3</comment_count>
      <attachid>360414</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-28 18:36:57 -0800</bug_when>
    <thetext>Created attachment 360414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499341</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-28 18:40:14 -0800</bug_when>
    <thetext>Attachment 360414 did not pass style-queue:


ERROR: Source/WebCore/page/PointerCaptureController.h:46:  The parameter name &quot;implicit&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499346</commentid>
    <comment_count>5</comment_count>
      <attachid>360413</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-01-28 18:57:09 -0800</bug_when>
    <thetext>Comment on attachment 360413
Patch

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

&gt; Source/WebCore/dom/Element.h:504
&gt; +#if ENABLE(POINTER_EVENTS)
&gt; +    ExceptionOr&lt;void&gt; setPointerCapture(int32_t);
&gt; +    ExceptionOr&lt;void&gt; releasePointerCapture(int32_t);
&gt; +    bool hasPointerCapture(int32_t);
&gt; +#endif

You should put:

using PointerID = int32_t;
and then use PointerID in the parameter types.

&gt; Source/WebCore/dom/Element.idl:104
&gt; +    [Conditional=POINTER_EVENTS, EnabledAtRuntime=PointerEvents, MayThrowException] void setPointerCapture (long pointerId);
&gt; +    [Conditional=POINTER_EVENTS, EnabledAtRuntime=PointerEvents, MayThrowException] void releasePointerCapture (long pointerId);
&gt; +    [Conditional=POINTER_EVENTS, EnabledAtRuntime=PointerEvents] boolean hasPointerCapture (long pointerId);

Nit: remove spaces before (

&gt; Source/WebCore/dom/PointerEvent.h:42
&gt; +        int32_t pointerId { 0 };

Ditto. Maybe this is where you do the using and it is included in Element.h?

&gt; Source/WebCore/dom/PointerEvent.h:82
&gt; +    int32_t pointerId() const { return m_pointerId; }

Ditto.

&gt; Source/WebCore/dom/PointerEvent.h:104
&gt; +    int32_t m_pointerId { 0 };

Ditto.

&gt; Source/WebCore/page/PointerCaptureController.cpp:42
&gt; +PointerCaptureController::PointerCaptureController()
&gt; +{
&gt; +}
&gt; +

= default

&gt; Source/WebCore/page/PointerCaptureController.cpp:52
&gt; +    // 2. If the Element on which this method is invoked is not connected ([DOM4]), throw an exception with the name InvalidStateError.

Nit: Remove ([DOM4])

&gt; Source/WebCore/page/PointerCaptureController.cpp:57
&gt; +    // 3. If this method is invoked while the document has a locked element ([PointerLock]), throw an exception with the name InvalidStateError.

Nit: Remove ([PointerLock])

&gt; Source/WebCore/page/PointerCaptureController.cpp:83
&gt; +    if (implicit == ImplicitCapture::No &amp;&amp; iterator == m_activePointerIdsToCapturingData.end())

Do the implicit check separately, first.

&gt; Source/WebCore/page/PointerCaptureController.cpp:88
&gt; +    if (!hasPointerCapture(capturingTarget, pointerId))
&gt; +        return { };

Bit silly that you have to do the hash lookup again. Maybe make a private helper that takes capturingData directly....

&gt; Source/WebCore/page/PointerCaptureController.cpp:109
&gt; +    auto&amp; capturingData = iterator-&gt;value;
&gt; +    return capturingData.pendingTargetOverride == capturingTarget || capturingData.targetOverride == capturingTarget;

... and does this bit.

&gt; Source/WebCore/page/PointerCaptureController.cpp:121
&gt; +    // When a pointer lock is successfully applied on an element, a user agent MUST run the steps as if the releasePointerCapture()
&gt; +    // method has been called if any element is set to be captured or pending to be captured.
&gt; +    for (auto&amp; capturingData : m_activePointerIdsToCapturingData.values()) {
&gt; +        capturingData.pendingTargetOverride = nullptr;
&gt; +        capturingData.targetOverride = nullptr;
&gt; +    }

I don&apos;t really understand how this comment translates to this logic.

&gt; Source/WebCore/page/PointerCaptureController.cpp:124
&gt; +void PointerCaptureController::touchEndedOrWasCanceledForIdentifier(int32_t pointerId)

cancelled

&gt; Source/WebCore/page/PointerCaptureController.cpp:201
&gt; +    if (capturingData.pendingTargetOverride)
&gt; +        capturingData.targetOverride = capturingData.pendingTargetOverride;
&gt; +    else
&gt; +        capturingData.targetOverride = nullptr;

capturingData.targetOverride = capturingData.pendingTargetOverride;

will work in all cases.

&gt; Source/WebCore/page/PointerCaptureController.h:46
&gt; +    ExceptionOr&lt;void&gt; releasePointerCapture(Element*, int32_t, ImplicitCapture = ImplicitCapture::No);

Did this compile?

&gt; Source/WebCore/page/PointerCaptureController.h:58
&gt; +        Element* pendingTargetOverride;
&gt; +        Element* targetOverride;

Sure these shouldn&apos;t be RefPtr? What happens if the Element is removed while it is captured? Please test.

&gt; Source/WebCore/page/PointerCaptureController.h:62
&gt; +    HashMap&lt;int32_t, CapturingData&gt; m_activePointerIdsToCapturingData;

m_capturingDataForPointerId?

&gt; LayoutTests/pointerevents/ios/pointer-events-implicit-capture-has-pointer-capture-in-pointer-down.html:17
&gt; +    ui.beginTouches({ x: 50, y: 50 }).then(() =&gt; test.done());

await ui.beingTouches(..);
test.done();

(would need async in the parameter)

&gt; LayoutTests/pointerevents/ios/pointer-events-implicit-capture-release-exception.html:19
&gt; +        assert_true(target.hasPointerCapture(event.pointerId));

Why not put test.done() here?

&gt; LayoutTests/pointerevents/ios/pointer-events-implicit-capture-release.html:19
&gt; +        assert_false(target.hasPointerCapture(event.pointerId));

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499355</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-28 19:15:12 -0800</bug_when>
    <thetext>Committed r240634: &lt;https://trac.webkit.org/changeset/240634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503273</commentid>
    <comment_count>7</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:18:55 -0800</bug_when>
    <thetext>Mass move bugs into the DOM component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360413</attachid>
            <date>2019-01-28 18:34:03 -0800</date>
            <delta_ts>2019-01-28 19:12:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193917-20190129033401.patch</filename>
            <type>text/plain</type>
            <size>45695</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEwY2IwOTNjYjdlZTA4
OTY4MTBlYjRlODVjMmNlMTZlZDNiMjIzYy4uMGQxY2M0MmZjZjQzMmE0MWNhM2YwYzg3NWI2Yzcz
OWRkMjg3NWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTI4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGNhcHR1
cmUgZm9yIFBvaW50ZXIgRXZlbnRzIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzOTE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzYw
NTY4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBhZGQgYSBuZXcgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyIG9iamVjdCB3aGljaCBnZXRzIG5v
dGlmaWVkIHVwb24gZGlzcGF0Y2ggb2YgcG9pbnRlciBldmVudHMKKyAgICAgICAgdG8gaW1wbGVt
ZW50IGltcGxpY2l0IHBvaW50ZXIgY2FwdHVyZSwgZGlzcGF0Y2ggdGhlIGdvdHBvaW50ZXJjYXB0
dXJlIGFuZCBsb3N0cG9pbnRlcmNhcHRpdXJlIGV2ZW50cywKKyAgICAgICAgYW5kIGltcGxlbWVu
dCB0aGUgRWxlbWVudCBBUElzIGZvciBwb2ludGVyIGNhcHR1cmU6IGhhc1BvaW50ZXJDYXB0dXJl
KCksIHNldFBvaW50ZXJDYXB0dXJlKCkgYW5kCisgICAgICAgIHJlbGVhc2VQb2ludGVyQ2FwdHVy
ZSgpLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1p
bXBsaWNpdC1jYXB0dXJlLWhhcy1wb2ludGVyLWNhcHR1cmUtaW4tcG9pbnRlci1kb3duLmh0bWwK
KyAgICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0
LWNhcHR1cmUtcmVsZWFzZS1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlcmV2
ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLmh0bWwKKyAg
ICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNh
cHR1cmUuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVu
dHMtc2V0LXBvaW50ZXItY2FwdHVyZS1leGNlcHRpb25zLmh0bWwKKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRQ
b2ludGVyQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWxlYXNlUG9pbnRl
ckNhcHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUG9pbnRlckNhcHR1cmUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgor
ICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL1BvaW50ZXJFdmVudC5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBvaW50
ZXJDYXB0dXJlQ29udHJvbGxlciBjb25zdCk6CisgICAgICAgICogcGFnZS9Qb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0dXJl
Q29udHJvbGxlcjo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6c2V0UG9pbnRlckNhcHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpyZWxlYXNlUG9pbnRlckNhcHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpoYXNQb2ludGVy
Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBv
aW50ZXJMb2NrV2FzQXBwbGllZCk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNv
bnRyb2xsZXI6OnRvdWNoRW5kZWRPcldhc0NhbmNlbGVkRm9ySWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBvaW50ZXJFdmVudFdpbGxCZURp
c3BhdGNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpw
b2ludGVyRXZlbnRXYXNEaXNwYXRjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0
dXJlQ29udHJvbGxlcjo6cHJvY2Vzc1BlbmRpbmdQb2ludGVyQ2FwdHVyZSk6CisgICAgICAgICog
cGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tD
b250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxv
Y2tDb250cm9sbGVyLmg6CisKIDIwMTktMDEtMjggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFByb2R1Y2UgInBlbiIgUG9pbnRlciBFdmVudHMgaWYgdXNpbmcgYSBz
dHlsdXMgKGUuZy4gQXBwbGUgUGVuY2lsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkZTU0MjFmOGY4ZmMz
MmM0NmU3YWM5YTdmOWJkYTdkZDRkMTNlYmRiLi5jYjUxNDNkMjUwMjNiZjlmZWQ1Yjc1OTQwMjU3
ZmEzZjVkNTk5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTUyMyw2ICsxNTIzLDcgQEAgcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAogcGFnZS9QZXJmb3JtYW5jZVNlcnZlclRpbWlu
Zy5jcHAKIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCiBwYWdlL1BlcmZvcm1hbmNlVXNlclRp
bWluZy5jcHAKK3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAogcGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuY3BwCiBwYWdlL1ByaW50Q29udGV4dC5jcHAKIHBhZ2UvUHJvY2Vzc1dh
cm1pbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOWNjM2JhZTQxYTI2MTAwNDYzYWM5MmUzOTIxMWI1NTQzNTkxZWM0Yi4u
YmNjZTgzZDMzY2RhZTEzMjJlOTRlZDNiYTgxZTkwZjVjOWY3ZjA2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjExNyw2ICsy
MTE3LDcgQEAKIAkJNzFBMUI2MDgxREVFNUFENzAwNzNCQ0ZCIC8qIG1vZGVybi1tZWRpYS1jb250
cm9scy1sb2NhbGl6ZWQtc3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzFBMUI2MDYxREVFNUE4MjAwNzNCQ0ZCIC8qIG1vZGVybi1tZWRp
YS1jb250cm9scy1sb2NhbGl6ZWQtc3RyaW5ncy5qcyAqLzsgfTsKIAkJNzFBNTdERjIxNTRCRTI1
QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTU3REYwMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRo
VXRpbGl0aWVzLmggKi87IH07CiAJCTcxQjI4NDI3MjAzQ0VDNEMwMDM2QUE1RCAvKiBKU0NTU0Fu
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzFCMjg0MjYyMDNDRUMwRDAwMzZBQTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzFCNUFCMjYyMUYxRDlGNDAw
Mzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCNUFCMjQyMUYxRDlFMjAwMzc2RTVDIC8qIFBv
aW50ZXJDYXB0dXJlQ29udHJvbGxlci5oICovOyB9OwogCQk3MUI3RUUwRDIxQjVDNjg3MDAzMUMx
RUYgLyogVG91Y2hBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxQUVFNEVCMjFCNUE0OUMwMEREQjAzNiAvKiBUb3VjaEFjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxQzI5RTMyMjAz
Q0U3ODEwMDhGMzZEMiAvKiBDU1NBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQzI5RTMwMjAzQ0U3NkIwMDhGMzZEMiAvKiBDU1NBbmlt
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MUM5MTYwODFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDOTE2
MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQxMCw2ICs5
NDExLDggQEAKIAkJNzFCMDQ2MEExREQzQzJFRTAwRUUxOUNGIC8qIHN0YXR1cy1zdXBwb3J0Lmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInN0YXR1cy1zdXBwb3J0
LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFCMjg0MjQyMDNDRUMwQjAwMzZB
QTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ1NTQW5pbWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFCMjg0MjYyMDNDRUMwRDAwMzZBQTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NTQW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcxQjVBQjI0MjFGMUQ5RTIwMDM3NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxQjVBQjI1MjFG
MUQ5RTMwMDM3NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDMjlFMkUyMDNDRTc2QjAwOEYzNkQyIC8q
IENTU0FuaW1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
U1NBbmltYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUMyOUUzMDIw
M0NFNzZCMDA4RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENTU0FuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUMyOUUzMTIwM0NFNzZDMDA4RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBDU1NBbmltYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTcyNzYsOCArMTcyNzksOCBAQAogCQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAyOTMgLyogYWNj
ZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQlBQUE3
MjhFRjE2RDFEOEJDMDBEM0JCQzYgLyogaW9zICovLAorCQkJCTI5QUUyMTI5MjFBQjlFQ0IwMDg2
OTI4MyAvKiBpc29sYXRlZHRyZWUgKi8sCiAJCQkJMjlBODEyMDUwRkJCOUI1MjAwNTEwMjkzIC8q
IG1hYyAqLywKIAkJCQkyOTgxQ0E5RDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcCAqLywKIAkJCQkyOUE4MTIxNjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eUFSSUFHcmlkLmggKi8sCkBAIC0xNzM3NCwxMCArMTczNzcsMTAgQEAKIAkJMjlBRTIxMjky
MUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMjlBRTIxMkIyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNv
bGF0ZWRUcmVlLmggKi8sCiAJCQkJMjlBRTIxMkMyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0
ZWRUcmVlLmNwcCAqLywKLQkJCQkyOUFFMjEzMzIxQUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRl
ZFRyZWVOb2RlLmggKi8sCisJCQkJMjlBRTIxMkIyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0
ZWRUcmVlLmggKi8sCiAJCQkJMjlBRTIxMzQyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0ZWRU
cmVlTm9kZS5jcHAgKi8sCisJCQkJMjlBRTIxMzMyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0
ZWRUcmVlTm9kZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpc29sYXRlZHRyZWU7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjA0MTMsNiArMjA0MTYsOCBAQAogCQkJCUE1NTRCNUYw
MUUzODM5MzYwMDFENEUwMyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwICovLAogCQkJCUE1
NTRCNUYxMUUzODM5MzYwMDFENEUwMyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuaCAqLywKIAkJ
CQkzMUQ1OTFCMTE2Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCisJCQkJNzFC
NUFCMjUyMUYxRDlFMzAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAgKi8s
CisJCQkJNzFCNUFCMjQyMUYxRDlFMjAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxl
ci5oICovLAogCQkJCTVDRkM0MzRFMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRy
b2xsZXIuY3BwICovLAogCQkJCTVDRkM0MzRGMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9j
a0NvbnRyb2xsZXIuaCAqLywKIAkJCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaCAqLywKQEAgLTI4MjY1LDYgKzI4MjcwLDcgQEAKIAkJCQk3NkNERDJG
NTExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI5QUNCMjEyMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9j
a09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzYwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5MzZCRjVDMjFENjlF
NEIwMDRBOEZDOSAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzOTBGQkI5QzFEMDA1MTAyOTMg
LyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEY2
RUIxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjg0MzQsNiArMjg0NDAsOCBAQAogCQkJCTA3RjRFOTMzMjBCMzU4N0YwMDJFMzgw
MyAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMz
NkY2MjE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcwMzYzRTYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJl
U291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyOUFFMjEyRDIxQUI5RUVCMDA4NjkyODMgLyog
QVhJc29sYXRlZFRyZWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5QUUyMTM1MjFBQkE0OEEwMDg2
OTI4MyAvKiBBWElzb2xhdGVkVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NUMyMzFF
MTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzAwMDcsNyArMzAwMTUsNiBAQAogCQkJCTFB
RTJBQTk4MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MEU3RTk3MEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzNkIwOTU2MUY1RjM0RDkwMDNDMzcwMiAvKiBKU0hUTUxJ
bnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggaW4gSGVhZGVycyAqLywKLQkJCQkyOTM2QkY1QzIxRDY5
RTRCMDA0QThGQzkgLyogQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTYxNDhBNzkxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRNTEtleWdlbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjIyMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxM
YWJlbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjI0MEExQ0U2M0IwMEI0MkIy
NSAvKiBKU0hUTUxMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDM0LDYgKzMx
MDQxLDcgQEAKIAkJCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZh
bFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkI4QUJCMTNGMUFGQjAwMDczNERGMCAvKiBQ
T0RSZWRCbGFja1RyZWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjVBQjI2MjFGMUQ5RjQwMDM3
NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
N0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyQjFGNzE3MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTNGRjgxM0E3MURCQTg2NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9j
a0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzE0NjQsNyArMzE0NzIsNiBAQAogCQkJ
CTUxNDA1Qzg5MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMkQzRkU4MThBODY1ODQwMEQ3REMwMyAvKiBTZWxl
Y3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQkyOUFFMjEzNTIx
QUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyNkI5OTk5NzE4MDRENTQyMDBEMDExMjEgLyogU2VsZWN0b3JDb21waWxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MzEwN0JFMjE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQ
c2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDAwLDcgKzMyNDA3LDYgQEAKIAkJ
CQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTQxNkZFNjE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NTE1RjUxOTE4MzBBMzAwOTY4N0Qy
IC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMjlBRTIx
MkQyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDE2NjQ1ODUwZDdjYmZkOGRhM2NhYmEyZTA0MWEyMTcyMzc5YzBj
NTYuLmMzYzIzYjFjZGY3MTVkM2Q1NDk2ZWY0OGQ1OWQ3MzA2NGZlNWJkNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxF
dmVudC5oIgorI2luY2x1ZGUgIlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50Q29udGFp
bmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTM0MzQsNiArMzQzNSwyOSBAQCB2
b2lkIEVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3Nz
aW5nRnJhbWVCb3VuZGFyaWVzKGJvbwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpCitFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjpzZXRQb2ludGVyQ2FwdHVyZShpbnQz
Ml90IHBvaW50ZXJJZCkKK3sKKyAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkpCisgICAgICAgIHJl
dHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+cG9pbnRlckNhcHR1cmVDb250cm9sbGVyKCkuc2V0UG9p
bnRlckNhcHR1cmUodGhpcywgcG9pbnRlcklkKTsKKyAgICByZXR1cm4geyB9OworfQorCitFeGNl
cHRpb25Pcjx2b2lkPiBFbGVtZW50OjpyZWxlYXNlUG9pbnRlckNhcHR1cmUoaW50MzJfdCBwb2lu
dGVySWQpCit7CisgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm4gZG9j
dW1lbnQoKS5wYWdlKCktPnBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcigpLnJlbGVhc2VQb2ludGVy
Q2FwdHVyZSh0aGlzLCBwb2ludGVySWQpOworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgRWxl
bWVudDo6aGFzUG9pbnRlckNhcHR1cmUoaW50MzJfdCBwb2ludGVySWQpCit7CisgICAgaWYgKGRv
Y3VtZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5wYWdlKCktPnBvaW50
ZXJDYXB0dXJlQ29udHJvbGxlcigpLmhhc1BvaW50ZXJDYXB0dXJlKHRoaXMsIHBvaW50ZXJJZCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQogdm9pZCBFbGVtZW50OjpyZXF1ZXN0UG9pbnRlckxvY2soKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggNmFlMTYxODVlOWFjNDcxODU0YTkzNDlkNzQxZGQ0NjRhMTFmNGU1My4uYTI1OTlhZGE4
N2QyMTYwMzRkNzU5MjVjZDMxY2M1ZmM1MGVlNmFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00
OTcsNiArNDk3LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJf
RVZFTlRTKQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFBvaW50ZXJDYXB0dXJlKGludDMyX3Qp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbGVhc2VQb2ludGVyQ2FwdHVyZShpbnQzMl90KTsK
KyAgICBib29sIGhhc1BvaW50ZXJDYXB0dXJlKGludDMyX3QpOworI2VuZGlmCisKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFBvaW50ZXJM
b2NrKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA3Nzg5NGY3Yzk3NmM0YjM1
YzU5NzcwN2UwN2FiODA2NDIxNDNiY2MzLi4zZWE0YzdkODA1MTlhMDMxY2RhOWE1MGFkNjk3MDFj
Nzk5MWUwY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC05OCw2ICs5OCwxMSBAQAogICAg
IFtDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSSwgRW5hYmxlZEJ5U2V0dGluZz1GdWxsU2NyZWVu
LCBJbXBsZW1lbnRlZEFzPXdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuXSB2b2lkIHdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuKCk7IC8vIFByZWZpeGVkIE1vemlsbGEgdmVyc2lvbi4KICAgICBbQ29uZGl0
aW9uYWw9RlVMTFNDUkVFTl9BUEksIEVuYWJsZWRCeVNldHRpbmc9RnVsbFNjcmVlbl0gdm9pZCB3
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOyAvLyBQcmVmaXhlZCBXM0MgdmVyc2lvbi4KIAorICAg
IC8vIEV4dGVuc2lvbnMgZnJvbSBQb2ludGVyIEV2ZW50cyBBUEkgKGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wb2ludGVyZXZlbnRzLyNleHRlbnNpb25zLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSku
CisgICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfRVZFTlRTLCBFbmFibGVkQXRSdW50aW1lPVBvaW50
ZXJFdmVudHMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFBvaW50ZXJDYXB0dXJlIChsb25n
IHBvaW50ZXJJZCk7CisgICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfRVZFTlRTLCBFbmFibGVkQXRS
dW50aW1lPVBvaW50ZXJFdmVudHMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbGVhc2VQb2lu
dGVyQ2FwdHVyZSAobG9uZyBwb2ludGVySWQpOworICAgIFtDb25kaXRpb25hbD1QT0lOVEVSX0VW
RU5UUywgRW5hYmxlZEF0UnVudGltZT1Qb2ludGVyRXZlbnRzXSBib29sZWFuIGhhc1BvaW50ZXJD
YXB0dXJlIChsb25nIHBvaW50ZXJJZCk7CisKICAgICAvLyBFeHRlbnNpb25zIGZyb20gUG9pbnRl
ciBMb2NrIEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJsb2NrLyNleHRlbnNpb25z
LXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSkuCiAgICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfTE9D
S10gdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5k
ZXggM2Y4OGI3NTBlZmZiMDQ5OTg1YjRkMTc1MGFlN2RiZjZlNDgwMzA2Ni4uNDYzZWQ0MzY0YzY4
ODc2MzVmM2MzNzNmYmJkZmE1NWRlMGYzNjg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBA
IC0xNDAsNiArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGdlc3R1cmVz
dGFydCkgXAogICAgIG1hY3JvKGdlc3R1cmV0YXApIFwKICAgICBtYWNybyhnZXN0dXJldGFwZG93
bikgXAorICAgIG1hY3JvKGdvdHBvaW50ZXJjYXB0dXJlKSBcCiAgICAgbWFjcm8oaGFzaGNoYW5n
ZSkgXAogICAgIG1hY3JvKGljZWNhbmRpZGF0ZSkgXAogICAgIG1hY3JvKGljZWNvbm5lY3Rpb25z
dGF0ZWNoYW5nZSkgXApAQCAtMTYyLDYgKzE2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBtYWNybyhsb2FkaW5nZG9uZSkgXAogICAgIG1hY3JvKGxvYWRpbmdlcnJvcikgXAogICAgIG1h
Y3JvKGxvYWRzdGFydCkgXAorICAgIG1hY3JvKGxvc3Rwb2ludGVyY2FwdHVyZSkgXAogICAgIG1h
Y3JvKG1hcmspIFwKICAgICBtYWNybyhtZXJjaGFudHZhbGlkYXRpb24pIFwKICAgICBtYWNybyht
ZXNzYWdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKaW5kZXggYmRhZWU1ZWFlYmYyZTg0
ZDc3ZDUyOTU4NzY1OWJiOWMwMGNlMDY2Yi4uMjUwNTlhZjAzMzMzNTIwMDMxOGIyMDBlOGMwOTdl
NGQ3ZTRlM2MyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb2ludGVyRXZlbnQgZmluYWwgOiBwdWJsaWMg
TW91c2VFdmVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQgOiBNb3VzZUV2ZW50SW5pdCB7
Ci0gICAgICAgIGxvbmcgcG9pbnRlcklkIHsgMCB9OworICAgICAgICBpbnQzMl90IHBvaW50ZXJJ
ZCB7IDAgfTsKICAgICAgICAgZG91YmxlIHdpZHRoIHsgMSB9OwogICAgICAgICBkb3VibGUgaGVp
Z2h0IHsgMSB9OwogICAgICAgICBmbG9hdCBwcmVzc3VyZSB7IDAgfTsKQEAgLTU2LDYgKzU2LDE4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9pbnRlckV2ZW50KHR5
cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFBPSU5URVJf
RVZFTlRTKQorICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGVGb3JQb2ludGVyQ2Fw
dHVyZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBvaW50ZXJFdmVudCYgcG9pbnRl
ckV2ZW50KQorICAgIHsKKyAgICAgICAgSW5pdCBpbml0aWFsaXplcjsKKyAgICAgICAgaW5pdGlh
bGl6ZXIuYnViYmxlcyA9IHRydWU7CisgICAgICAgIGluaXRpYWxpemVyLnBvaW50ZXJJZCA9IHBv
aW50ZXJFdmVudC5wb2ludGVySWQoKTsKKyAgICAgICAgaW5pdGlhbGl6ZXIuaXNQcmltYXJ5ID0g
cG9pbnRlckV2ZW50LmlzUHJpbWFyeSgpOworICAgICAgICBpbml0aWFsaXplci5wb2ludGVyVHlw
ZSA9IHBvaW50ZXJFdmVudC5wb2ludGVyVHlwZSgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplcikpKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQpOwpAQCAt
NjcsNyArNzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Qb2ludGVyRXZlbnQoKTsKIAot
ICAgIGxvbmcgcG9pbnRlcklkKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVySWQ7IH0KKyAgICBp
bnQzMl90IHBvaW50ZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlcklkOyB9CiAgICAgZG91
YmxlIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIGRvdWJsZSBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIGZsb2F0IHByZXNzdXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVzc3VyZTsgfQpAQCAtODksNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBQ
b2ludGVyRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQbGF0Zm9ybVRvdWNo
RXZlbnQmLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCB1bnNpZ25lZCB0b3VjaEluZGV4LCBi
b29sIGlzUHJpbWFyeSwgUmVmPFdpbmRvd1Byb3h5PiYmKTsKICNlbmRpZgogCi0gICAgbG9uZyBt
X3BvaW50ZXJJZCB7IDAgfTsKKyAgICBpbnQzMl90IG1fcG9pbnRlcklkIHsgMCB9OwogICAgIGRv
dWJsZSBtX3dpZHRoIHsgMSB9OwogICAgIGRvdWJsZSBtX2hlaWdodCB7IDEgfTsKICAgICBmbG9h
dCBtX3ByZXNzdXJlIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjZhMjU4MTljMWE3NzQx
ZDEyY2Q5NjQ2MjlhZDE1OTc5OTg2ZDBkMC4uZmQ2NjYwN2RjZGRjNDBlZGI5MjhkMzA2M2U4ZDI5
OTA5YzA0OTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9Qcm92aWRlci5oIgogI2luY2x1
ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRlckNhcHR1cmVDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jl
c3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCkBAIC0yMTQsNiArMjE1LDkg
QEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2Vu
ZGlmCiAgICAgLCBtX3VzZXJJbnB1dEJyaWRnZShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJy
aWRnZT4oKnRoaXMpKQogICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3Rv
ckNsaWVudCkpCisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQorICAgICwgbV9wb2ludGVyQ2Fw
dHVyZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+
KCkpCisjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICwgbV9wb2ludGVyTG9j
a0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlz
KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA3ZjdiMzcwYmNhZTk4YWI5NTdkYjRjNTAxNzZk
ZWMyOWI3YjRmOTI2Li4zMzVkNmEwNWZjYmMxNGRjMjZhZDcwZWY2NDkzYmQ0Yjc3YWEzMmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaApAQCAtMTIyLDYgKzEyMiw3IEBAIGNsYXNzIFBsdWdJbkNsaWVudDsKIGNs
YXNzIFBsdWdpbkRhdGE7CiBjbGFzcyBQbHVnaW5JbmZvUHJvdmlkZXI7CiBjbGFzcyBQbHVnaW5W
aWV3QmFzZTsKK2NsYXNzIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjsKIGNsYXNzIFBvaW50ZXJM
b2NrQ29udHJvbGxlcjsKIGNsYXNzIFByb2dyZXNzVHJhY2tlcjsKIGNsYXNzIFByb2dyZXNzVHJh
Y2tlckNsaWVudDsKQEAgLTI0NCw2ICsyNDUsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBVc2Vy
SW5wdXRCcmlkZ2UmIHVzZXJJbnB1dEJyaWRnZSgpIGNvbnN0IHsgcmV0dXJuICptX3VzZXJJbnB1
dEJyaWRnZTsgfQogICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIo
KSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9CisjaWYgRU5BQkxFKFBP
SU5URVJfRVZFTlRTKQorICAgIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlciYgcG9pbnRlckNhcHR1
cmVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVy
OyB9CisjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIFBvaW50ZXJMb2NrQ29u
dHJvbGxlciYgcG9pbnRlckxvY2tDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRl
ckxvY2tDb250cm9sbGVyOyB9CiAjZW5kaWYKQEAgLTc0Nyw2ICs3NTEsOSBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFVzZXJJbnB1dEJyaWRnZT4gbV91c2Vy
SW5wdXRCcmlkZ2U7CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckNvbnRyb2xs
ZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisg
ICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4gbV9wb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQog
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRl
ckxvY2tDb250cm9sbGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI5N2RkMmI1NzgyNjEyNmUyNzk0
OTgwNmExMzVmMmEyNTFhYTY4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9pbnRlckNhcHR1cmVDb250
cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUG9p
bnRlckV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUG9pbnRlckNhcHR1cmVDb250
cm9sbGVyOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIoKQoreworfQorCitFeGNlcHRpb25Pcjx2
b2lkPiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnNldFBvaW50ZXJDYXB0dXJlKEVsZW1lbnQq
IGNhcHR1cmluZ1RhcmdldCwgaW50MzJfdCBwb2ludGVySWQpCit7CisgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3BvaW50ZXJldmVudHMvI3NldHRpbmctcG9pbnRlci1jYXB0dXJlCisKKyAg
ICAvLyAxLiBJZiB0aGUgcG9pbnRlcklkIHByb3ZpZGVkIGFzIHRoZSBtZXRob2QncyBhcmd1bWVu
dCBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIGFjdGl2ZSBwb2ludGVycywgdGhlbiB0aHJvdyBh
IERPTUV4Y2VwdGlvbiB3aXRoIHRoZSBuYW1lIE5vdEZvdW5kRXJyb3IuCisgICAgYXV0byBpdGVy
YXRvciA9IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5maW5kKHBvaW50ZXJJZCk7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IgfTsKKworICAg
IC8vIDIuIElmIHRoZSBFbGVtZW50IG9uIHdoaWNoIHRoaXMgbWV0aG9kIGlzIGludm9rZWQgaXMg
bm90IGNvbm5lY3RlZCAoW0RPTTRdKSwgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggdGhlIG5hbWUg
SW52YWxpZFN0YXRlRXJyb3IuCisgICAgaWYgKCFjYXB0dXJpbmdUYXJnZXQtPmlzQ29ubmVjdGVk
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAvLyAzLiBJZiB0aGlzIG1ldGhvZCBpcyBpbnZv
a2VkIHdoaWxlIHRoZSBkb2N1bWVudCBoYXMgYSBsb2NrZWQgZWxlbWVudCAoW1BvaW50ZXJMb2Nr
XSksIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSBuYW1lIEludmFsaWRTdGF0ZUVycm9yLgor
ICAgIGlmIChhdXRvKiBwYWdlID0gY2FwdHVyaW5nVGFyZ2V0LT5kb2N1bWVudCgpLnBhZ2UoKSkg
eworICAgICAgICBpZiAocGFnZS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCkuaXNMb2NrZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAg
IH0KKyNlbmRpZgorCisgICAgLy8gNC4gSWYgdGhlIHBvaW50ZXIgaXMgbm90IGluIHRoZSBhY3Rp
dmUgYnV0dG9ucyBzdGF0ZSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgLy8gRklY
TUU6IGltcGxlbWVudCB3aGVuIHdlIHN1cHBvcnQgbW91c2UgZXZlbnRzLgorCisgICAgLy8gNS4g
Rm9yIHRoZSBzcGVjaWZpZWQgcG9pbnRlcklkLCBzZXQgdGhlIHBlbmRpbmcgcG9pbnRlciBjYXB0
dXJlIHRhcmdldCBvdmVycmlkZSB0byB0aGUgRWxlbWVudCBvbiB3aGljaCB0aGlzIG1ldGhvZCB3
YXMgaW52b2tlZC4KKyAgICBpdGVyYXRvci0+dmFsdWUucGVuZGluZ1RhcmdldE92ZXJyaWRlID0g
Y2FwdHVyaW5nVGFyZ2V0OworCisgICAgcmV0dXJuIHsgfTsKK30KKworRXhjZXB0aW9uT3I8dm9p
ZD4gUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpyZWxlYXNlUG9pbnRlckNhcHR1cmUoRWxlbWVu
dCogY2FwdHVyaW5nVGFyZ2V0LCBpbnQzMl90IHBvaW50ZXJJZCwgSW1wbGljaXRDYXB0dXJlIGlt
cGxpY2l0KQoreworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVyZXZlbnRzLyNy
ZWxlYXNpbmctcG9pbnRlci1jYXB0dXJlCisKKyAgICAvLyBQb2ludGVyIGNhcHR1cmUgaXMgcmVs
ZWFzZWQgb24gYW4gZWxlbWVudCBleHBsaWNpdGx5IGJ5IGNhbGxpbmcgdGhlIGVsZW1lbnQucmVs
ZWFzZVBvaW50ZXJDYXB0dXJlKHBvaW50ZXJJZCkgbWV0aG9kLgorICAgIC8vIFdoZW4gdGhpcyBt
ZXRob2QgaXMgY2FsbGVkLCBhIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVw
czoKKworICAgIC8vIDEuIElmIHRoZSBwb2ludGVySWQgcHJvdmlkZWQgYXMgdGhlIG1ldGhvZCdz
IGFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgYWN0aXZlIHBvaW50ZXJzIGFuZCB0
aGVzZSBzdGVwcyBhcmUgbm90CisgICAgLy8gYmVpbmcgaW52b2tlZCBhcyBhIHJlc3VsdCBvZiB0
aGUgaW1wbGljaXQgcmVsZWFzZSBvZiBwb2ludGVyIGNhcHR1cmUsIHRoZW4gdGhyb3cgYSBET01F
eGNlcHRpb24gd2l0aCB0aGUgbmFtZSBOb3RGb3VuZEVycm9yLgorICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2FjdGl2ZVBvaW50ZXJJZHNUb0NhcHR1cmluZ0RhdGEuZmluZChwb2ludGVySWQpOworICAg
IGlmIChpbXBsaWNpdCA9PSBJbXBsaWNpdENhcHR1cmU6Ok5vICYmIGl0ZXJhdG9yID09IG1fYWN0
aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdEZvdW5kRXJyb3IgfTsKKworICAgIC8vIDIuIElmIGhhc1BvaW50ZXJDYXB0dXJl
IGlzIGZhbHNlIGZvciB0aGUgRWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgcG9pbnRlcklkLCB0
aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIWhhc1BvaW50ZXJDYXB0dXJlKGNh
cHR1cmluZ1RhcmdldCwgcG9pbnRlcklkKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8v
IDMuIEZvciB0aGUgc3BlY2lmaWVkIHBvaW50ZXJJZCwgY2xlYXIgdGhlIHBlbmRpbmcgcG9pbnRl
ciBjYXB0dXJlIHRhcmdldCBvdmVycmlkZSwgaWYgc2V0LgorICAgIGl0ZXJhdG9yLT52YWx1ZS5w
ZW5kaW5nVGFyZ2V0T3ZlcnJpZGUgPSBudWxscHRyOworCisgICAgcmV0dXJuIHsgfTsKK30KKwor
Ym9vbCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6Omhhc1BvaW50ZXJDYXB0dXJlKEVsZW1lbnQq
IGNhcHR1cmluZ1RhcmdldCwgaW50MzJfdCBwb2ludGVySWQpCit7CisgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3BvaW50ZXJldmVudHMvI2RvbS1lbGVtZW50LWhhc3BvaW50ZXJjYXB0dXJl
CisKKyAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGlzIG1l
dGhvZCBpcyBpbnZva2VkIGhhcyBwb2ludGVyIGNhcHR1cmUgZm9yIHRoZSBwb2ludGVyIGlkZW50
aWZpZWQgYnkgdGhlIGFyZ3VtZW50IHBvaW50ZXJJZC4KKyAgICAvLyBJbiBwYXJ0aWN1bGFyLCBy
ZXR1cm5zIHRydWUgaWYgdGhlIHBlbmRpbmcgcG9pbnRlciBjYXB0dXJlIHRhcmdldCBvdmVycmlk
ZSBmb3IgcG9pbnRlcklkIGlzIHNldCB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGlzIG1ldGhv
ZCBpcworICAgIC8vIGludm9rZWQsIGFuZCBmYWxzZSBvdGhlcndpc2UuCisKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0dXJpbmdEYXRhLmZpbmQocG9pbnRlcklk
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0dXJpbmdEYXRh
LmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBjYXB0dXJpbmdEYXRh
ID0gaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiBjYXB0dXJpbmdEYXRhLnBlbmRpbmdUYXJn
ZXRPdmVycmlkZSA9PSBjYXB0dXJpbmdUYXJnZXQgfHwgY2FwdHVyaW5nRGF0YS50YXJnZXRPdmVy
cmlkZSA9PSBjYXB0dXJpbmdUYXJnZXQ7Cit9CisKK3ZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyOjpwb2ludGVyTG9ja1dhc0FwcGxpZWQoKQoreworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wb2ludGVyZXZlbnRzLyNpbXBsaWNpdC1yZWxlYXNlLW9mLXBvaW50ZXItY2FwdHVyZQor
CisgICAgLy8gV2hlbiBhIHBvaW50ZXIgbG9jayBpcyBzdWNjZXNzZnVsbHkgYXBwbGllZCBvbiBh
biBlbGVtZW50LCBhIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIHN0ZXBzIGFzIGlmIHRoZSByZWxl
YXNlUG9pbnRlckNhcHR1cmUoKQorICAgIC8vIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgaWYgYW55
IGVsZW1lbnQgaXMgc2V0IHRvIGJlIGNhcHR1cmVkIG9yIHBlbmRpbmcgdG8gYmUgY2FwdHVyZWQu
CisgICAgZm9yIChhdXRvJiBjYXB0dXJpbmdEYXRhIDogbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0
dXJpbmdEYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGNhcHR1cmluZ0RhdGEucGVuZGluZ1Rhcmdl
dE92ZXJyaWRlID0gbnVsbHB0cjsKKyAgICAgICAgY2FwdHVyaW5nRGF0YS50YXJnZXRPdmVycmlk
ZSA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6
dG91Y2hFbmRlZE9yV2FzQ2FuY2VsZWRGb3JJZGVudGlmaWVyKGludDMyX3QgcG9pbnRlcklkKQor
eworICAgIG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5yZW1vdmUocG9pbnRlcklk
KTsKK30KKwordm9pZCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBvaW50ZXJFdmVudFdpbGxC
ZURpc3BhdGNoZWQoY29uc3QgUG9pbnRlckV2ZW50JiBldmVudCwgRXZlbnRUYXJnZXQqIHRhcmdl
dCkKK3sKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vcG9pbnRlcmV2ZW50cy8jaW1wbGlj
aXQtcG9pbnRlci1jYXB0dXJlCisKKyAgICAvLyBTb21lIGlucHV0IGRldmljZXMgKHN1Y2ggYXMg
dG91Y2hzY3JlZW5zKSBpbXBsZW1lbnQgYSAiZGlyZWN0IG1hbmlwdWxhdGlvbiIgbWV0YXBob3Ig
d2hlcmUgYSBwb2ludGVyIGlzIGludGVuZGVkIHRvIGFjdCBwcmltYXJpbHkgb24gdGhlIFVJCisg
ICAgLy8gZWxlbWVudCBpdCBiZWNhbWUgYWN0aXZlIHVwb24gKHByb3ZpZGluZyBhIHBoeXNpY2Fs
IGlsbHVzaW9uIG9mIGRpcmVjdCBjb250YWN0LCBpbnN0ZWFkIG9mIGluZGlyZWN0IGNvbnRhY3Qg
dmlhIGEgY3Vyc29yIHRoYXQgY29uY2VwdHVhbGx5CisgICAgLy8gZmxvYXRzIGFib3ZlIHRoZSBV
SSkuIFN1Y2ggZGV2aWNlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgSW5wdXREZXZpY2VDYXBhYmls
aXRpZXMucG9pbnRlck1vdmVtZW50U2Nyb2xscyBwcm9wZXJ0eSBhbmQgc2hvdWxkIGhhdmUgImlt
cGxpY2l0CisgICAgLy8gcG9pbnRlciBjYXB0dXJlIiBiZWhhdmlvciBhcyBmb2xsb3dzLgorCisg
ICAgLy8gRGlyZWN0IG1hbmlwdWxhdGlvbiBkZXZpY2VzIHNob3VsZCBiZWhhdmUgZXhhY3RseSBh
cyBpZiBzZXRQb2ludGVyQ2FwdHVyZSB3YXMgY2FsbGVkIG9uIHRoZSB0YXJnZXQgZWxlbWVudCBq
dXN0IGJlZm9yZSB0aGUgaW52b2NhdGlvbiBvZiBhbnkKKyAgICAvLyBwb2ludGVyZG93biBsaXN0
ZW5lcnMuIFRoZSBoYXNQb2ludGVyQ2FwdHVyZSBBUEkgbWF5IGJlIHVzZWQgKGVnLiB3aXRoaW4g
YW55IHBvaW50ZXJkb3duIGxpc3RlbmVyKSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGhhcyBv
Y2N1cnJlZC4gSWYKKyAgICAvLyByZWxlYXNlUG9pbnRlckNhcHR1cmUgaXMgbm90IGNhbGxlZCBm
b3IgdGhlIHBvaW50ZXIgYmVmb3JlIHRoZSBuZXh0IHBvaW50ZXIgZXZlbnQgaXMgZmlyZWQsIHRo
ZW4gYSBnb3Rwb2ludGVyY2FwdHVyZSBldmVudCB3aWxsIGJlIGRpc3BhdGNoZWQKKyAgICAvLyB0
byB0aGUgdGFyZ2V0IChhcyBub3JtYWwpIGluZGljYXRpbmcgdGhhdCBjYXB0dXJlIGlzIGFjdGl2
ZS4KKworICAgIGlmICghaXM8RWxlbWVudD4odGFyZ2V0KSB8fCBldmVudC50eXBlKCkgIT0gZXZl
bnROYW1lcygpLnBvaW50ZXJkb3duRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
cG9pbnRlcklkID0gZXZlbnQucG9pbnRlcklkKCk7CisgICAgbV9hY3RpdmVQb2ludGVySWRzVG9D
YXB0dXJpbmdEYXRhLnNldChwb2ludGVySWQsIENhcHR1cmluZ0RhdGEgeyB9KTsKKyAgICBzZXRQ
b2ludGVyQ2FwdHVyZShkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpLCBwb2ludGVySWQpOworfQor
Cit2b2lkIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6cG9pbnRlckV2ZW50V2FzRGlzcGF0Y2hl
ZChjb25zdCBQb2ludGVyRXZlbnQmIGV2ZW50KQoreworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wb2ludGVyZXZlbnRzLyNpbXBsaWNpdC1yZWxlYXNlLW9mLXBvaW50ZXItY2FwdHVyZQor
CisgICAgYXV0byBpdGVyYXRvciA9IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5m
aW5kKGV2ZW50LnBvaW50ZXJJZCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9hY3RpdmVQb2lu
dGVySWRzVG9DYXB0dXJpbmdEYXRhLmVuZCgpKSB7CisgICAgICAgIGF1dG8mIGNhcHR1cmluZ0Rh
dGEgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgIC8vIEltbWVkaWF0ZWx5IGFmdGVyIGZpcmlu
ZyB0aGUgcG9pbnRlcnVwIG9yIHBvaW50ZXJjYW5jZWwgZXZlbnRzLCBhIHVzZXIgYWdlbnQgTVVT
VCBjbGVhciB0aGUgcGVuZGluZyBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0CisgICAgICAgIC8vIG92
ZXJyaWRlIGZvciB0aGUgcG9pbnRlcklkIG9mIHRoZSBwb2ludGVydXAgb3IgcG9pbnRlcmNhbmNl
bCBldmVudCB0aGF0IHdhcyBqdXN0IGRpc3BhdGNoZWQsIGFuZCB0aGVuIHJ1biBQcm9jZXNzIFBl
bmRpbmcKKyAgICAgICAgLy8gUG9pbnRlciBDYXB0dXJlIHN0ZXBzIHRvIGZpcmUgbG9zdHBvaW50
ZXJjYXB0dXJlIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkucG9pbnRlcnVwRXZlbnQpCisgICAgICAgICAgICBjYXB0dXJpbmdEYXRhLnBlbmRp
bmdUYXJnZXRPdmVycmlkZSA9IG51bGxwdHI7CisgICAgICAgIAorICAgICAgICAvLyBXaGVuIHRo
ZSBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlIGlzIG5vIGxvbmdlciBjb25uZWN0ZWQg
KFtET000XSksIHRoZSBwZW5kaW5nIHBvaW50ZXIgY2FwdHVyZSB0YXJnZXQgb3ZlcnJpZGUgYW5k
IHBvaW50ZXIKKyAgICAgICAgLy8gY2FwdHVyZSB0YXJnZXQgb3ZlcnJpZGUgbm9kZXMgU0hPVUxE
IGJlIGNsZWFyZWQgYW5kIGFsc28gYSBQb2ludGVyRXZlbnQgbmFtZWQgbG9zdHBvaW50ZXJjYXB0
dXJlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNhcHR1cmVkCisgICAgICAgIC8vIHBvaW50ZXIgU0hP
VUxEIGJlIGZpcmVkIGF0IHRoZSBkb2N1bWVudC4KKyAgICAgICAgaWYgKGNhcHR1cmluZ0RhdGEu
dGFyZ2V0T3ZlcnJpZGUgJiYgIWNhcHR1cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUtPmlzQ29ubmVj
dGVkKCkpIHsKKyAgICAgICAgICAgIGNhcHR1cmluZ0RhdGEucGVuZGluZ1RhcmdldE92ZXJyaWRl
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGNhcHR1cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUgPSBu
dWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvY2Vzc1BlbmRpbmdQb2ludGVyQ2Fw
dHVyZShldmVudCk7Cit9CisKK3ZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpwcm9jZXNz
UGVuZGluZ1BvaW50ZXJDYXB0dXJlKGNvbnN0IFBvaW50ZXJFdmVudCYgZXZlbnQpCit7CisgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJldmVudHMvI3Byb2Nlc3MtcGVuZGluZy1w
b2ludGVyLWNhcHR1cmUKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2FjdGl2ZVBvaW50ZXJJZHNU
b0NhcHR1cmluZ0RhdGEuZmluZChldmVudC5wb2ludGVySWQoKSk7CisgICAgaWYgKGl0ZXJhdG9y
ID09IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byYgY2FwdHVyaW5nRGF0YSA9IGl0ZXJhdG9yLT52YWx1ZTsKKworICAg
IC8vIDEuIElmIHRoZSBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlIGZvciB0aGlzIHBv
aW50ZXIgaXMgc2V0IGFuZCBpcyBub3QgZXF1YWwgdG8gdGhlIHBlbmRpbmcgcG9pbnRlciBjYXB0
dXJlIHRhcmdldCBvdmVycmlkZSwKKyAgICAvLyB0aGVuIGZpcmUgYSBwb2ludGVyIGV2ZW50IG5h
bWVkIGxvc3Rwb2ludGVyY2FwdHVyZSBhdCB0aGUgcG9pbnRlciBjYXB0dXJlIHRhcmdldCBvdmVy
cmlkZSBub2RlLgorICAgIGlmIChjYXB0dXJpbmdEYXRhLnRhcmdldE92ZXJyaWRlICYmIGNhcHR1
cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUgIT0gY2FwdHVyaW5nRGF0YS5wZW5kaW5nVGFyZ2V0T3Zl
cnJpZGUpCisgICAgICAgIGNhcHR1cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUtPmRpc3BhdGNoRXZl
bnQoUG9pbnRlckV2ZW50OjpjcmVhdGVGb3JQb2ludGVyQ2FwdHVyZShldmVudE5hbWVzKCkubG9z
dHBvaW50ZXJjYXB0dXJlRXZlbnQsIGV2ZW50KSk7CisKKyAgICAvLyAyLiBJZiB0aGUgcGVuZGlu
ZyBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlIGZvciB0aGlzIHBvaW50ZXIgaXMgc2V0
IGFuZCBpcyBub3QgZXF1YWwgdG8gdGhlIHBvaW50ZXIgY2FwdHVyZSB0YXJnZXQgb3ZlcnJpZGUs
CisgICAgLy8gdGhlbiBmaXJlIGEgcG9pbnRlciBldmVudCBuYW1lZCBnb3Rwb2ludGVyY2FwdHVy
ZSBhdCB0aGUgcGVuZGluZyBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlLgorICAgIGlm
IChjYXB0dXJpbmdEYXRhLnBlbmRpbmdUYXJnZXRPdmVycmlkZSAmJiBjYXB0dXJpbmdEYXRhLnRh
cmdldE92ZXJyaWRlICE9IGNhcHR1cmluZ0RhdGEucGVuZGluZ1RhcmdldE92ZXJyaWRlKQorICAg
ICAgICBjYXB0dXJpbmdEYXRhLnBlbmRpbmdUYXJnZXRPdmVycmlkZS0+ZGlzcGF0Y2hFdmVudChQ
b2ludGVyRXZlbnQ6OmNyZWF0ZUZvclBvaW50ZXJDYXB0dXJlKGV2ZW50TmFtZXMoKS5nb3Rwb2lu
dGVyY2FwdHVyZUV2ZW50LCBldmVudCkpOworCisgICAgLy8gMy4gU2V0IHRoZSBwb2ludGVyIGNh
cHR1cmUgdGFyZ2V0IG92ZXJyaWRlIHRvIHRoZSBwZW5kaW5nIHBvaW50ZXIgY2FwdHVyZSB0YXJn
ZXQgb3ZlcnJpZGUsIGlmIHNldC4gT3RoZXJ3aXNlLCBjbGVhciB0aGUgcG9pbnRlcgorICAgIC8v
IGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlLgorICAgIGlmIChjYXB0dXJpbmdEYXRhLnBlbmRpbmdU
YXJnZXRPdmVycmlkZSkKKyAgICAgICAgY2FwdHVyaW5nRGF0YS50YXJnZXRPdmVycmlkZSA9IGNh
cHR1cmluZ0RhdGEucGVuZGluZ1RhcmdldE92ZXJyaWRlOworICAgIGVsc2UKKyAgICAgICAgY2Fw
dHVyaW5nRGF0YS50YXJnZXRPdmVycmlkZSA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZmRj
ZTJkNjQwOTJjMTViOTljZjZjMmRlZjZjOTdkNGRhY2Q4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBFdmVudFRhcmdldDsKK2NsYXNzIFBvaW50ZXJFdmVu
dDsKKworY2xhc3MgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcigp
OworCisgICAgZW51bSBjbGFzcyBJbXBsaWNpdENhcHR1cmUgOiB1aW50OF90IHsgWWVzLCBObyB9
OworCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UG9pbnRlckNhcHR1cmUoRWxlbWVudCosIGlu
dDMyX3QpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbGVhc2VQb2ludGVyQ2FwdHVyZShFbGVt
ZW50KiwgaW50MzJfdCwgSW1wbGljaXRDYXB0dXJlID0gSW1wbGljaXRDYXB0dXJlOjpObyk7Cisg
ICAgYm9vbCBoYXNQb2ludGVyQ2FwdHVyZShFbGVtZW50KiwgaW50MzJfdCk7CisKKyAgICB2b2lk
IHBvaW50ZXJMb2NrV2FzQXBwbGllZCgpOworCisgICAgdm9pZCB0b3VjaEVuZGVkT3JXYXNDYW5j
ZWxlZEZvcklkZW50aWZpZXIoaW50MzJfdCk7CisgICAgdm9pZCBwb2ludGVyRXZlbnRXaWxsQmVE
aXNwYXRjaGVkKGNvbnN0IFBvaW50ZXJFdmVudCYsIEV2ZW50VGFyZ2V0Kik7CisgICAgdm9pZCBw
b2ludGVyRXZlbnRXYXNEaXNwYXRjaGVkKGNvbnN0IFBvaW50ZXJFdmVudCYpOworCitwcml2YXRl
OgorICAgIHN0cnVjdCBDYXB0dXJpbmdEYXRhIHsKKyAgICAgICAgRWxlbWVudCogcGVuZGluZ1Rh
cmdldE92ZXJyaWRlOworICAgICAgICBFbGVtZW50KiB0YXJnZXRPdmVycmlkZTsKKyAgICB9Owor
CisgICAgdm9pZCBwcm9jZXNzUGVuZGluZ1BvaW50ZXJDYXB0dXJlKGNvbnN0IFBvaW50ZXJFdmVu
dCYpOworICAgIEhhc2hNYXA8aW50MzJfdCwgQ2FwdHVyaW5nRGF0YT4gbV9hY3RpdmVQb2ludGVy
SWRzVG9DYXB0dXJpbmdEYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFBPSU5URVJfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwCmluZGV4IGNmYWU0MWI1MWFmZTU0ZDRkYWE1Njg1M2I3NWQw
MmM1NWUwNWEyMWQuLjY1ODBmMjNiN2Q5YmJlNmViZjZlYWMzOTYyZDNmNjVjN2Y4YTc5ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTcx
LDYgKzcxLDkgQEAgdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVyTG9j
ayhFbGVtZW50KiB0YXJnZXQpCiAgICAgICAgIH0KICAgICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0
OwogICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLnBvaW50ZXJsb2NrY2hhbmdlRXZl
bnQsIHRhcmdldCk7CisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQorICAgICAgICBtX3BhZ2Uu
cG9pbnRlckNhcHR1cmVDb250cm9sbGVyKCkucG9pbnRlckxvY2tXYXNBcHBsaWVkKCk7CisjZW5k
aWYKICAgICB9IGVsc2UgewogICAgICAgICBtX2xvY2tQZW5kaW5nID0gdHJ1ZTsKICAgICAgICAg
bV9lbGVtZW50ID0gdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmgKaW5kZXggNDkwOTdhZTU5ZGZhYzIxMDljZDI1YTU3MzMwZjk2ODU3OTc4OTk3Ni4u
NTA3NzQ2NWZiNTQ1NmRmYmYyODZhMDAzMTM0MjllODkxYTg3ZmViYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzM4Y2Y0MTcxMzg4YmIwYWM0MWFiNzQyMGJkMzI0
YWU4NzRiZTliNy4uMmYxMTIxOTAzMGNiMGFkOWI3OTFlNWFkOGZjMGQ3NTJmY2JmODMyNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAxLTI4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGNhcHR1cmUgZm9yIFBvaW50ZXIgRXZlbnRz
IG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzOTE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzYwNTY4OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdHMgZm9yIGltcGxpY2l0
IHBvaW50ZXIgY2FwdHVyZSBhbmQgdGhlIEVsZW1lbnQgQVBJcyByZWxhdGVkIHRvIHBvaW50ZXIg
Y2FwdHVyZS4KKworICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWlt
cGxpY2l0LWNhcHR1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZl
bnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLWhhcy1wb2ludGVyLWNhcHR1
cmUtaW4tcG9pbnRlci1kb3duLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRl
cmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1oYXMtcG9pbnRlci1j
YXB0dXJlLWluLXBvaW50ZXItZG93bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZl
bnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRl
ci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0
dXJlLXJlbGVhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRz
L2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2Fw
dHVyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2
ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQtcG9pbnRlci1j
YXB0dXJlLWV4Y2VwdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTktMDEtMjggIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFByb2R1Y2UgInBlbiIgUG9pbnRlciBFdmVu
dHMgaWYgdXNpbmcgYSBzdHlsdXMgKGUuZy4gQXBwbGUgUGVuY2lsKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVy
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2
ZW50cy1pbXBsaWNpdC1jYXB0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTIyYjI4ZTg3
NmNlM2Q3YmJkMjZiNzQ4YWIyNTk1NjM1M2ZlNDcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgUG9pbnRlciBldmVudHMgZm9yIGEg
ZGlyZWN0IG1hbmlwdWxhdGlvbiBkZXZpY2UgdHJpZ2dlciAnZ290cG9pbnRlcmNhcHR1cmUnIGFu
ZCAnbG9zdHBvaW50ZXJjYXB0dXJlJyBldmVudHMgZHVlIHRvIGltcGxpY2l0IGNhcHR1cmUuIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50
cy1pbXBsaWNpdC1jYXB0dXJlLWhhcy1wb2ludGVyLWNhcHR1cmUtaW4tcG9pbnRlci1kb3duLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRz
LWltcGxpY2l0LWNhcHR1cmUtaGFzLXBvaW50ZXItY2FwdHVyZS1pbi1wb2ludGVyLWRvd24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MmZmNzMzN2JmYmRmM2NjZjViNDRlNjFlMzcwMTBmNzc2
MTRiZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9w
b2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLWhhcy1wb2ludGVyLWNhcHR1cmUtaW4tcG9p
bnRlci1kb3duLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDYWxsaW5nIGhh
c1BvaW50ZXJDYXB0dXJlKCkgaW4gdGhlICdwb2ludGVyZG93bicgZXZlbnQgaGFuZGxlciByZXR1
cm5zIHRydWUgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24gZGV2aWNlcy4gCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNh
cHR1cmUtaGFzLXBvaW50ZXItY2FwdHVyZS1pbi1wb2ludGVyLWRvd24uaHRtbCBiL0xheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtaGFz
LXBvaW50ZXItY2FwdHVyZS1pbi1wb2ludGVyLWRvd24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTg3MTE1
ZDdlZWNiZWUwOWE0OTQ0ZDRmZDdiYzkyNDdiOThjNzQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVy
ZS1oYXMtcG9pbnRlci1jYXB0dXJlLWluLXBvaW50ZXItZG93bi5odG1sCkBAIC0wLDAgKzEsMjIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+
Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0
aWFsLXNjYWxlPTEiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3V0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKKyd1c2Ugc3RyaWN0JzsKKwordGFyZ2V0X3Rlc3Qo
KHRhcmdldCwgdGVzdCkgPT4geworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVy
ZG93biIsIGV2ZW50ID0+IGFzc2VydF90cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVu
dC5wb2ludGVySWQpKSk7CisgICAgdWkuYmVnaW5Ub3VjaGVzKHsgeDogNTAsIHk6IDUwIH0pLnRo
ZW4oKCkgPT4gdGVzdC5kb25lKCkpOworfSwgIkNhbGxpbmcgaGFzUG9pbnRlckNhcHR1cmUoKSBp
biB0aGUgJ3BvaW50ZXJkb3duJyBldmVudCBoYW5kbGVyIHJldHVybnMgdHJ1ZSBmb3IgZGlyZWN0
IG1hbmlwdWxhdGlvbiBkZXZpY2VzLiIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2lu
dGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50
ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE0Y2NiNzg4MjNkN2MzMzBkYTMxYTI5OWUyNTA3MWQ1MDBkZGQzNDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2
ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKKworUEFTUyBDYWxsaW5nIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSgpIGluIHRo
ZSAncG9pbnRlcmRvd24nIGV2ZW50IGhhbmRsZXIgd2l0aCBhIGJvZ3VzIHBvaW50ZXIgaWQgcmFp
c2VzIGFuIGV4Y2VwdGlvbiBhbmQgZG9lcyBub3QgYWx0ZXIgcG9pbnRlciBjYXB0dXJlLiAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMt
aW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcG9p
bnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4
Y2VwdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOWQxZWM5ODcwYTE2YTY1ZjlmNTJkMmIyN2FmZmRl
YjRlNWM1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLmh0bWwK
QEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD11dGYtOD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworJ3VzZSBzdHJpY3QnOwor
Cit0YXJnZXRfdGVzdCgodGFyZ2V0LCB0ZXN0KSA9PiB7CisgICAgdGFyZ2V0LmFkZEV2ZW50TGlz
dGVuZXIoInBvaW50ZXJkb3duIiwgZXZlbnQgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSh0YXJn
ZXQuaGFzUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKSk7CisgICAgICAgIGFzc2VydF90
aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiB0YXJnZXQucmVsZWFzZVBvaW50ZXJDYXB0dXJl
KGV2ZW50LnBvaW50ZXJJZCArIDEpKTsKKyAgICAgICAgYXNzZXJ0X3RydWUodGFyZ2V0Lmhhc1Bv
aW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkpOworICAgIH0pOworICAgIHVpLmJlZ2luVG91
Y2hlcyh7IHg6IDUwLCB5OiA1MCB9KS50aGVuKCgpID0+IHRlc3QuZG9uZSgpKTsKK30sICJDYWxs
aW5nIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSgpIGluIHRoZSAncG9pbnRlcmRvd24nIGV2ZW50IGhh
bmRsZXIgd2l0aCBhIGJvZ3VzIHBvaW50ZXIgaWQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhbmQgZG9l
cyBub3QgYWx0ZXIgcG9pbnRlciBjYXB0dXJlLiIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVh
c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1l
dmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NjQxNDQ3MjQ4Mjk5OWY1ZGQ1MTYzMzNiNTkzZGY0NjIxZDk2OWNlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQt
Y2FwdHVyZS1yZWxlYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDYWxs
aW5nIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSgpIGluIHRoZSAncG9pbnRlcmRvd24nIGV2ZW50IGhh
bmRsZXIgbWFrZXMgaGFzUG9pbnRlckNhcHR1cmUoKSByZXR1cm4gZmFsc2UuIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNp
dC1jYXB0dXJlLXJlbGVhc2UuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Bv
aW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBm
M2I2NzNjZjIxZjljMDZiMjg5YmQ5YWM4ZDZkY2YwYWUwZDFkZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1j
YXB0dXJlLXJlbGVhc2UuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idmlld3BvcnQi
IGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi91dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorCisndXNlIHN0cmljdCc7CisKK3RhcmdldF90ZXN0KCh0YXJnZXQsIHRlc3QpID0+IHsKKyAg
ICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCBldmVudCA9PiB7CisgICAg
ICAgIGFzc2VydF90cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQp
KTsKKyAgICAgICAgdGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQp
OworICAgICAgICBhc3NlcnRfZmFsc2UodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBv
aW50ZXJJZCkpOworICAgIH0pOworICAgIHVpLmJlZ2luVG91Y2hlcyh7IHg6IDUwLCB5OiA1MCB9
KS50aGVuKCgpID0+IHRlc3QuZG9uZSgpKTsKK30sICJDYWxsaW5nIHJlbGVhc2VQb2ludGVyQ2Fw
dHVyZSgpIGluIHRoZSAncG9pbnRlcmRvd24nIGV2ZW50IGhhbmRsZXIgbWFrZXMgaGFzUG9pbnRl
ckNhcHR1cmUoKSByZXR1cm4gZmFsc2UuIik7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bv
aW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUuaHRtbCBiL0xh
eW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1
cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMWQwOGRjMjk0NjNkYzMxMWNjM2ZlZTZkMmU5MDE2YjA5ODgz
MDVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9p
bnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxl
PTEiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3V0aWxzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKKyd1c2Ugc3RyaWN0JzsKKwordGFyZ2V0X3Rlc3QoKHRhcmdldCwg
dGVzdCkgPT4geworICAgIGNvbnN0IGV2ZW50VHJhY2tlciA9IG5ldyBFdmVudFRyYWNrZXIodGFy
Z2V0LCBbInBvaW50ZXJkb3duIiwgImdvdHBvaW50ZXJjYXB0dXJlIiwgInBvaW50ZXJtb3ZlIiwg
InBvaW50ZXJ1cCIsICJsb3N0cG9pbnRlcmNhcHR1cmUiXSk7CisKKyAgICBjb25zdCBvbmUgPSB1
aS5maW5nZXIoKTsKKyAgICBjb25zdCB0d28gPSB1aS5maW5nZXIoKTsKKyAgICB1aS5zZXF1ZW5j
ZShbCisgICAgICAgIG9uZS5iZWdpbih7IHg6IDEwLCB5OiAxMCB9KSwKKyAgICAgICAgdHdvLmJl
Z2luKHsgeDogNTAsIHk6IDUwIH0pLAorICAgICAgICBvbmUubW92ZSh7IHg6IDMwLCB5OiAzMCB9
KSwKKyAgICAgICAgdHdvLm1vdmUoeyB4OiA3MCwgeTogNzAgfSksCisgICAgICAgIG9uZS5lbmQo
KSwKKyAgICAgICAgdHdvLmVuZCgpCisgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgIGV2ZW50
VHJhY2tlci5hc3NlcnRNYXRjaGVzRXZlbnRzKFsKKyAgICAgICAgICAgIHsgaWQ6IDEsIHR5cGU6
ICJwb2ludGVyZG93biIgfSwKKyAgICAgICAgICAgIHsgaWQ6IDEsIHR5cGU6ICJnb3Rwb2ludGVy
Y2FwdHVyZSIsIGlzUHJpbWFyeTogdHJ1ZSB9LAorICAgICAgICAgICAgeyBpZDogMiwgdHlwZTog
InBvaW50ZXJkb3duIiB9LAorICAgICAgICAgICAgeyBpZDogMiwgdHlwZTogImdvdHBvaW50ZXJj
YXB0dXJlIiwgaXNQcmltYXJ5OiBmYWxzZSB9LAorICAgICAgICAgICAgeyBpZDogMSwgdHlwZTog
InBvaW50ZXJtb3ZlIiB9LAorICAgICAgICAgICAgeyBpZDogMiwgdHlwZTogInBvaW50ZXJtb3Zl
IiB9LAorICAgICAgICAgICAgeyBpZDogMSwgdHlwZTogInBvaW50ZXJ1cCIgfSwKKyAgICAgICAg
ICAgIHsgaWQ6IDEsIHR5cGU6ICJsb3N0cG9pbnRlcmNhcHR1cmUiLCBpc1ByaW1hcnk6IGZhbHNl
IH0sCisgICAgICAgICAgICB7IGlkOiAyLCB0eXBlOiAicG9pbnRlcnVwIiB9LAorICAgICAgICAg
ICAgeyBpZDogMiwgdHlwZTogImxvc3Rwb2ludGVyY2FwdHVyZSIsIGlzUHJpbWFyeTogZmFsc2Ug
fQorICAgICAgICBdKTsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAgfSk7Cit9LCAiUG9pbnRl
ciBldmVudHMgZm9yIGEgZGlyZWN0IG1hbmlwdWxhdGlvbiBkZXZpY2UgdHJpZ2dlciAnZ290cG9p
bnRlcmNhcHR1cmUnIGFuZCAnbG9zdHBvaW50ZXJjYXB0dXJlJyBldmVudHMgZHVlIHRvIGltcGxp
Y2l0IGNhcHR1cmUuIik7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMv
aW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQt
cG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1M2Vj
NzUwZDQ0ZDZkNmFiMjc1YjNhODM0ZGQxZGEzYTA4ZTEzNzEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQtcG9pbnRlci1j
YXB0dXJlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFRo
ZSBzZXRQb2ludGVyQ2FwdHVyZSgpIG1ldGhvZCBjYW4gdGhyb3cuIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQtcG9pbnRlci1j
YXB0dXJlLWV4Y2VwdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Bv
aW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzOTc0OTE1MjY2MmQyNzI1NjUwMDIwOWU4ODU2MGI1NmI5ZTA1ZTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQt
cG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0x
Ij4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi91dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorCisndXNlIHN0cmljdCc7CisKK3RhcmdldF90ZXN0KCh0YXJnZXQsIHRl
c3QpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gZG9jdW1l
bnQuYm9keS5zZXRQb2ludGVyQ2FwdHVyZSgxMCksICJDYWxsaW5nIHNldFBvaW50ZXJDYXB0dXJl
KCkgd2l0aCBhbiBpbnZhbGlkIHBvaW50ZXIgaWQgdGhyb3dzIGEgTm90Rm91bmRFcnJvciBleGNl
cHRpb24uIik7CisKKyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCBl
dmVudCA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShl
dmVudC5wb2ludGVySWQpKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJy
b3IiLCAoKSA9PiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zZXRQb2ludGVyQ2FwdHVy
ZShldmVudC5wb2ludGVySWQpLCAiQ2FsbGluZyBzZXRQb2ludGVyQ2FwdHVyZSgpIHdpdGggYSB2
YWxpZCBwb2ludGVyIGlkIG9uIGEgZGlzY29ubmVjdGVkIGVsZW1lbnQgdGhyb3dzIGFuIEludmFs
aWRTdGF0ZUVycm9yIGV4Y2VwdGlvbi4iKTsKKyAgICB9KTsKKyAgICB1aS5iZWdpblRvdWNoZXMo
eyB4OiA1MCwgeTogNTAgfSkudGhlbigoKSA9PiB0ZXN0LmRvbmUoKSk7Cit9LCAiVGhlIHNldFBv
aW50ZXJDYXB0dXJlKCkgbWV0aG9kIGNhbiB0aHJvdy4iKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360414</attachid>
            <date>2019-01-28 18:36:57 -0800</date>
            <delta_ts>2019-01-28 19:10:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193917-20190129033655.patch</filename>
            <type>text/plain</type>
            <size>45704</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEwY2IwOTNjYjdlZTA4
OTY4MTBlYjRlODVjMmNlMTZlZDNiMjIzYy4uMGQxY2M0MmZjZjQzMmE0MWNhM2YwYzg3NWI2Yzcz
OWRkMjg3NWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTI4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGNhcHR1
cmUgZm9yIFBvaW50ZXIgRXZlbnRzIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzOTE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzYw
NTY4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBhZGQgYSBuZXcgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyIG9iamVjdCB3aGljaCBnZXRzIG5v
dGlmaWVkIHVwb24gZGlzcGF0Y2ggb2YgcG9pbnRlciBldmVudHMKKyAgICAgICAgdG8gaW1wbGVt
ZW50IGltcGxpY2l0IHBvaW50ZXIgY2FwdHVyZSwgZGlzcGF0Y2ggdGhlIGdvdHBvaW50ZXJjYXB0
dXJlIGFuZCBsb3N0cG9pbnRlcmNhcHRpdXJlIGV2ZW50cywKKyAgICAgICAgYW5kIGltcGxlbWVu
dCB0aGUgRWxlbWVudCBBUElzIGZvciBwb2ludGVyIGNhcHR1cmU6IGhhc1BvaW50ZXJDYXB0dXJl
KCksIHNldFBvaW50ZXJDYXB0dXJlKCkgYW5kCisgICAgICAgIHJlbGVhc2VQb2ludGVyQ2FwdHVy
ZSgpLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1p
bXBsaWNpdC1jYXB0dXJlLWhhcy1wb2ludGVyLWNhcHR1cmUtaW4tcG9pbnRlci1kb3duLmh0bWwK
KyAgICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0
LWNhcHR1cmUtcmVsZWFzZS1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlcmV2
ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLmh0bWwKKyAg
ICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNh
cHR1cmUuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVu
dHMtc2V0LXBvaW50ZXItY2FwdHVyZS1leGNlcHRpb25zLmh0bWwKKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRQ
b2ludGVyQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWxlYXNlUG9pbnRl
ckNhcHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUG9pbnRlckNhcHR1cmUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgor
ICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL1BvaW50ZXJFdmVudC5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBvaW50
ZXJDYXB0dXJlQ29udHJvbGxlciBjb25zdCk6CisgICAgICAgICogcGFnZS9Qb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0dXJl
Q29udHJvbGxlcjo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6c2V0UG9pbnRlckNhcHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpyZWxlYXNlUG9pbnRlckNhcHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpoYXNQb2ludGVy
Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBv
aW50ZXJMb2NrV2FzQXBwbGllZCk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNv
bnRyb2xsZXI6OnRvdWNoRW5kZWRPcldhc0NhbmNlbGVkRm9ySWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBvaW50ZXJFdmVudFdpbGxCZURp
c3BhdGNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpw
b2ludGVyRXZlbnRXYXNEaXNwYXRjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJDYXB0
dXJlQ29udHJvbGxlcjo6cHJvY2Vzc1BlbmRpbmdQb2ludGVyQ2FwdHVyZSk6CisgICAgICAgICog
cGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tD
b250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxv
Y2tDb250cm9sbGVyLmg6CisKIDIwMTktMDEtMjggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFByb2R1Y2UgInBlbiIgUG9pbnRlciBFdmVudHMgaWYgdXNpbmcgYSBz
dHlsdXMgKGUuZy4gQXBwbGUgUGVuY2lsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkZTU0MjFmOGY4ZmMz
MmM0NmU3YWM5YTdmOWJkYTdkZDRkMTNlYmRiLi5jYjUxNDNkMjUwMjNiZjlmZWQ1Yjc1OTQwMjU3
ZmEzZjVkNTk5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTUyMyw2ICsxNTIzLDcgQEAgcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAogcGFnZS9QZXJmb3JtYW5jZVNlcnZlclRpbWlu
Zy5jcHAKIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCiBwYWdlL1BlcmZvcm1hbmNlVXNlclRp
bWluZy5jcHAKK3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAogcGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuY3BwCiBwYWdlL1ByaW50Q29udGV4dC5jcHAKIHBhZ2UvUHJvY2Vzc1dh
cm1pbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOWNjM2JhZTQxYTI2MTAwNDYzYWM5MmUzOTIxMWI1NTQzNTkxZWM0Yi4u
YmNjZTgzZDMzY2RhZTEzMjJlOTRlZDNiYTgxZTkwZjVjOWY3ZjA2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjExNyw2ICsy
MTE3LDcgQEAKIAkJNzFBMUI2MDgxREVFNUFENzAwNzNCQ0ZCIC8qIG1vZGVybi1tZWRpYS1jb250
cm9scy1sb2NhbGl6ZWQtc3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzFBMUI2MDYxREVFNUE4MjAwNzNCQ0ZCIC8qIG1vZGVybi1tZWRp
YS1jb250cm9scy1sb2NhbGl6ZWQtc3RyaW5ncy5qcyAqLzsgfTsKIAkJNzFBNTdERjIxNTRCRTI1
QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTU3REYwMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRo
VXRpbGl0aWVzLmggKi87IH07CiAJCTcxQjI4NDI3MjAzQ0VDNEMwMDM2QUE1RCAvKiBKU0NTU0Fu
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzFCMjg0MjYyMDNDRUMwRDAwMzZBQTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzFCNUFCMjYyMUYxRDlGNDAw
Mzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCNUFCMjQyMUYxRDlFMjAwMzc2RTVDIC8qIFBv
aW50ZXJDYXB0dXJlQ29udHJvbGxlci5oICovOyB9OwogCQk3MUI3RUUwRDIxQjVDNjg3MDAzMUMx
RUYgLyogVG91Y2hBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxQUVFNEVCMjFCNUE0OUMwMEREQjAzNiAvKiBUb3VjaEFjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxQzI5RTMyMjAz
Q0U3ODEwMDhGMzZEMiAvKiBDU1NBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQzI5RTMwMjAzQ0U3NkIwMDhGMzZEMiAvKiBDU1NBbmlt
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MUM5MTYwODFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDOTE2
MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQxMCw2ICs5
NDExLDggQEAKIAkJNzFCMDQ2MEExREQzQzJFRTAwRUUxOUNGIC8qIHN0YXR1cy1zdXBwb3J0Lmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInN0YXR1cy1zdXBwb3J0
LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFCMjg0MjQyMDNDRUMwQjAwMzZB
QTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ1NTQW5pbWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFCMjg0MjYyMDNDRUMwRDAwMzZBQTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NTQW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcxQjVBQjI0MjFGMUQ5RTIwMDM3NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxQjVBQjI1MjFG
MUQ5RTMwMDM3NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDMjlFMkUyMDNDRTc2QjAwOEYzNkQyIC8q
IENTU0FuaW1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
U1NBbmltYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUMyOUUzMDIw
M0NFNzZCMDA4RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENTU0FuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUMyOUUzMTIwM0NFNzZDMDA4RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBDU1NBbmltYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTcyNzYsOCArMTcyNzksOCBAQAogCQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAyOTMgLyogYWNj
ZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQlBQUE3
MjhFRjE2RDFEOEJDMDBEM0JCQzYgLyogaW9zICovLAorCQkJCTI5QUUyMTI5MjFBQjlFQ0IwMDg2
OTI4MyAvKiBpc29sYXRlZHRyZWUgKi8sCiAJCQkJMjlBODEyMDUwRkJCOUI1MjAwNTEwMjkzIC8q
IG1hYyAqLywKIAkJCQkyOTgxQ0E5RDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcCAqLywKIAkJCQkyOUE4MTIxNjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eUFSSUFHcmlkLmggKi8sCkBAIC0xNzM3NCwxMCArMTczNzcsMTAgQEAKIAkJMjlBRTIxMjky
MUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMjlBRTIxMkIyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNv
bGF0ZWRUcmVlLmggKi8sCiAJCQkJMjlBRTIxMkMyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0
ZWRUcmVlLmNwcCAqLywKLQkJCQkyOUFFMjEzMzIxQUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRl
ZFRyZWVOb2RlLmggKi8sCisJCQkJMjlBRTIxMkIyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0
ZWRUcmVlLmggKi8sCiAJCQkJMjlBRTIxMzQyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0ZWRU
cmVlTm9kZS5jcHAgKi8sCisJCQkJMjlBRTIxMzMyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0
ZWRUcmVlTm9kZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpc29sYXRlZHRyZWU7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjA0MTMsNiArMjA0MTYsOCBAQAogCQkJCUE1NTRCNUYw
MUUzODM5MzYwMDFENEUwMyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwICovLAogCQkJCUE1
NTRCNUYxMUUzODM5MzYwMDFENEUwMyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuaCAqLywKIAkJ
CQkzMUQ1OTFCMTE2Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCisJCQkJNzFC
NUFCMjUyMUYxRDlFMzAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAgKi8s
CisJCQkJNzFCNUFCMjQyMUYxRDlFMjAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxl
ci5oICovLAogCQkJCTVDRkM0MzRFMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRy
b2xsZXIuY3BwICovLAogCQkJCTVDRkM0MzRGMTkyNDA2QTkwMEEwRDNCNSAvKiBQb2ludGVyTG9j
a0NvbnRyb2xsZXIuaCAqLywKIAkJCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBP
cGVuaW5nT2JzZXJ2ZXIuaCAqLywKQEAgLTI4MjY1LDYgKzI4MjcwLDcgQEAKIAkJCQk3NkNERDJG
NTExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI5QUNCMjEyMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9j
a09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzYwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5MzZCRjVDMjFENjlF
NEIwMDRBOEZDOSAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzOTBGQkI5QzFEMDA1MTAyOTMg
LyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEY2
RUIxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjg0MzQsNiArMjg0NDAsOCBAQAogCQkJCTA3RjRFOTMzMjBCMzU4N0YwMDJFMzgw
MyAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMz
NkY2MjE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcwMzYzRTYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJl
U291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyOUFFMjEyRDIxQUI5RUVCMDA4NjkyODMgLyog
QVhJc29sYXRlZFRyZWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5QUUyMTM1MjFBQkE0OEEwMDg2
OTI4MyAvKiBBWElzb2xhdGVkVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NUMyMzFF
MTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzAwMDcsNyArMzAwMTUsNiBAQAogCQkJCTFB
RTJBQTk4MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MEU3RTk3MEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzNkIwOTU2MUY1RjM0RDkwMDNDMzcwMiAvKiBKU0hUTUxJ
bnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggaW4gSGVhZGVycyAqLywKLQkJCQkyOTM2QkY1QzIxRDY5
RTRCMDA0QThGQzkgLyogQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTYxNDhBNzkxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRNTEtleWdlbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjIyMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxM
YWJlbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjI0MEExQ0U2M0IwMEI0MkIy
NSAvKiBKU0hUTUxMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDM0LDYgKzMx
MDQxLDcgQEAKIAkJCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZh
bFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkI4QUJCMTNGMUFGQjAwMDczNERGMCAvKiBQ
T0RSZWRCbGFja1RyZWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjVBQjI2MjFGMUQ5RjQwMDM3
NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
N0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVyRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyQjFGNzE3MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTNGRjgxM0E3MURCQTg2NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9j
a0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzE0NjQsNyArMzE0NzIsNiBAQAogCQkJ
CTUxNDA1Qzg5MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMkQzRkU4MThBODY1ODQwMEQ3REMwMyAvKiBTZWxl
Y3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQkyOUFFMjEzNTIx
QUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyNkI5OTk5NzE4MDRENTQyMDBEMDExMjEgLyogU2VsZWN0b3JDb21waWxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MzEwN0JFMjE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQ
c2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDAwLDcgKzMyNDA3LDYgQEAKIAkJ
CQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTQxNkZFNjE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NTE1RjUxOTE4MzBBMzAwOTY4N0Qy
IC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMjlBRTIx
MkQyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDE2NjQ1ODUwZDdjYmZkOGRhM2NhYmEyZTA0MWEyMTcyMzc5YzBj
NTYuLmMzYzIzYjFjZGY3MTVkM2Q1NDk2ZWY0OGQ1OWQ3MzA2NGZlNWJkNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxF
dmVudC5oIgorI2luY2x1ZGUgIlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50Q29udGFp
bmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTM0MzQsNiArMzQzNSwyOSBAQCB2
b2lkIEVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3Nz
aW5nRnJhbWVCb3VuZGFyaWVzKGJvbwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpCitFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjpzZXRQb2ludGVyQ2FwdHVyZShpbnQz
Ml90IHBvaW50ZXJJZCkKK3sKKyAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkpCisgICAgICAgIHJl
dHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+cG9pbnRlckNhcHR1cmVDb250cm9sbGVyKCkuc2V0UG9p
bnRlckNhcHR1cmUodGhpcywgcG9pbnRlcklkKTsKKyAgICByZXR1cm4geyB9OworfQorCitFeGNl
cHRpb25Pcjx2b2lkPiBFbGVtZW50OjpyZWxlYXNlUG9pbnRlckNhcHR1cmUoaW50MzJfdCBwb2lu
dGVySWQpCit7CisgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm4gZG9j
dW1lbnQoKS5wYWdlKCktPnBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcigpLnJlbGVhc2VQb2ludGVy
Q2FwdHVyZSh0aGlzLCBwb2ludGVySWQpOworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgRWxl
bWVudDo6aGFzUG9pbnRlckNhcHR1cmUoaW50MzJfdCBwb2ludGVySWQpCit7CisgICAgaWYgKGRv
Y3VtZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5wYWdlKCktPnBvaW50
ZXJDYXB0dXJlQ29udHJvbGxlcigpLmhhc1BvaW50ZXJDYXB0dXJlKHRoaXMsIHBvaW50ZXJJZCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQogdm9pZCBFbGVtZW50OjpyZXF1ZXN0UG9pbnRlckxvY2soKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggNmFlMTYxODVlOWFjNDcxODU0YTkzNDlkNzQxZGQ0NjRhMTFmNGU1My4uYTI1OTlhZGE4
N2QyMTYwMzRkNzU5MjVjZDMxY2M1ZmM1MGVlNmFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00
OTcsNiArNDk3LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJf
RVZFTlRTKQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFBvaW50ZXJDYXB0dXJlKGludDMyX3Qp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbGVhc2VQb2ludGVyQ2FwdHVyZShpbnQzMl90KTsK
KyAgICBib29sIGhhc1BvaW50ZXJDYXB0dXJlKGludDMyX3QpOworI2VuZGlmCisKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFBvaW50ZXJM
b2NrKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA3Nzg5NGY3Yzk3NmM0YjM1
YzU5NzcwN2UwN2FiODA2NDIxNDNiY2MzLi4zZWE0YzdkODA1MTlhMDMxY2RhOWE1MGFkNjk3MDFj
Nzk5MWUwY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC05OCw2ICs5OCwxMSBAQAogICAg
IFtDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSSwgRW5hYmxlZEJ5U2V0dGluZz1GdWxsU2NyZWVu
LCBJbXBsZW1lbnRlZEFzPXdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuXSB2b2lkIHdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuKCk7IC8vIFByZWZpeGVkIE1vemlsbGEgdmVyc2lvbi4KICAgICBbQ29uZGl0
aW9uYWw9RlVMTFNDUkVFTl9BUEksIEVuYWJsZWRCeVNldHRpbmc9RnVsbFNjcmVlbl0gdm9pZCB3
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOyAvLyBQcmVmaXhlZCBXM0MgdmVyc2lvbi4KIAorICAg
IC8vIEV4dGVuc2lvbnMgZnJvbSBQb2ludGVyIEV2ZW50cyBBUEkgKGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wb2ludGVyZXZlbnRzLyNleHRlbnNpb25zLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSku
CisgICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfRVZFTlRTLCBFbmFibGVkQXRSdW50aW1lPVBvaW50
ZXJFdmVudHMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFBvaW50ZXJDYXB0dXJlIChsb25n
IHBvaW50ZXJJZCk7CisgICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfRVZFTlRTLCBFbmFibGVkQXRS
dW50aW1lPVBvaW50ZXJFdmVudHMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbGVhc2VQb2lu
dGVyQ2FwdHVyZSAobG9uZyBwb2ludGVySWQpOworICAgIFtDb25kaXRpb25hbD1QT0lOVEVSX0VW
RU5UUywgRW5hYmxlZEF0UnVudGltZT1Qb2ludGVyRXZlbnRzXSBib29sZWFuIGhhc1BvaW50ZXJD
YXB0dXJlIChsb25nIHBvaW50ZXJJZCk7CisKICAgICAvLyBFeHRlbnNpb25zIGZyb20gUG9pbnRl
ciBMb2NrIEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJsb2NrLyNleHRlbnNpb25z
LXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSkuCiAgICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfTE9D
S10gdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5k
ZXggM2Y4OGI3NTBlZmZiMDQ5OTg1YjRkMTc1MGFlN2RiZjZlNDgwMzA2Ni4uNDYzZWQ0MzY0YzY4
ODc2MzVmM2MzNzNmYmJkZmE1NWRlMGYzNjg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBA
IC0xNDAsNiArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGdlc3R1cmVz
dGFydCkgXAogICAgIG1hY3JvKGdlc3R1cmV0YXApIFwKICAgICBtYWNybyhnZXN0dXJldGFwZG93
bikgXAorICAgIG1hY3JvKGdvdHBvaW50ZXJjYXB0dXJlKSBcCiAgICAgbWFjcm8oaGFzaGNoYW5n
ZSkgXAogICAgIG1hY3JvKGljZWNhbmRpZGF0ZSkgXAogICAgIG1hY3JvKGljZWNvbm5lY3Rpb25z
dGF0ZWNoYW5nZSkgXApAQCAtMTYyLDYgKzE2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBtYWNybyhsb2FkaW5nZG9uZSkgXAogICAgIG1hY3JvKGxvYWRpbmdlcnJvcikgXAogICAgIG1h
Y3JvKGxvYWRzdGFydCkgXAorICAgIG1hY3JvKGxvc3Rwb2ludGVyY2FwdHVyZSkgXAogICAgIG1h
Y3JvKG1hcmspIFwKICAgICBtYWNybyhtZXJjaGFudHZhbGlkYXRpb24pIFwKICAgICBtYWNybyht
ZXNzYWdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKaW5kZXggYmRhZWU1ZWFlYmYyZTg0
ZDc3ZDUyOTU4NzY1OWJiOWMwMGNlMDY2Yi4uMjUwNTlhZjAzMzMzNTIwMDMxOGIyMDBlOGMwOTdl
NGQ3ZTRlM2MyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb2ludGVyRXZlbnQgZmluYWwgOiBwdWJsaWMg
TW91c2VFdmVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQgOiBNb3VzZUV2ZW50SW5pdCB7
Ci0gICAgICAgIGxvbmcgcG9pbnRlcklkIHsgMCB9OworICAgICAgICBpbnQzMl90IHBvaW50ZXJJ
ZCB7IDAgfTsKICAgICAgICAgZG91YmxlIHdpZHRoIHsgMSB9OwogICAgICAgICBkb3VibGUgaGVp
Z2h0IHsgMSB9OwogICAgICAgICBmbG9hdCBwcmVzc3VyZSB7IDAgfTsKQEAgLTU2LDYgKzU2LDE4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9pbnRlckV2ZW50KHR5
cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFBPSU5URVJf
RVZFTlRTKQorICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGVGb3JQb2ludGVyQ2Fw
dHVyZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBvaW50ZXJFdmVudCYgcG9pbnRl
ckV2ZW50KQorICAgIHsKKyAgICAgICAgSW5pdCBpbml0aWFsaXplcjsKKyAgICAgICAgaW5pdGlh
bGl6ZXIuYnViYmxlcyA9IHRydWU7CisgICAgICAgIGluaXRpYWxpemVyLnBvaW50ZXJJZCA9IHBv
aW50ZXJFdmVudC5wb2ludGVySWQoKTsKKyAgICAgICAgaW5pdGlhbGl6ZXIuaXNQcmltYXJ5ID0g
cG9pbnRlckV2ZW50LmlzUHJpbWFyeSgpOworICAgICAgICBpbml0aWFsaXplci5wb2ludGVyVHlw
ZSA9IHBvaW50ZXJFdmVudC5wb2ludGVyVHlwZSgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplcikpKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQpOwpAQCAt
NjcsNyArNzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Qb2ludGVyRXZlbnQoKTsKIAot
ICAgIGxvbmcgcG9pbnRlcklkKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVySWQ7IH0KKyAgICBp
bnQzMl90IHBvaW50ZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlcklkOyB9CiAgICAgZG91
YmxlIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIGRvdWJsZSBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIGZsb2F0IHByZXNzdXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVzc3VyZTsgfQpAQCAtODksNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBQ
b2ludGVyRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQbGF0Zm9ybVRvdWNo
RXZlbnQmLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCB1bnNpZ25lZCB0b3VjaEluZGV4LCBi
b29sIGlzUHJpbWFyeSwgUmVmPFdpbmRvd1Byb3h5PiYmKTsKICNlbmRpZgogCi0gICAgbG9uZyBt
X3BvaW50ZXJJZCB7IDAgfTsKKyAgICBpbnQzMl90IG1fcG9pbnRlcklkIHsgMCB9OwogICAgIGRv
dWJsZSBtX3dpZHRoIHsgMSB9OwogICAgIGRvdWJsZSBtX2hlaWdodCB7IDEgfTsKICAgICBmbG9h
dCBtX3ByZXNzdXJlIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjZhMjU4MTljMWE3NzQx
ZDEyY2Q5NjQ2MjlhZDE1OTc5OTg2ZDBkMC4uZmQ2NjYwN2RjZGRjNDBlZGI5MjhkMzA2M2U4ZDI5
OTA5YzA0OTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9Qcm92aWRlci5oIgogI2luY2x1
ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRlckNhcHR1cmVDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jl
c3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCkBAIC0yMTQsNiArMjE1LDkg
QEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2Vu
ZGlmCiAgICAgLCBtX3VzZXJJbnB1dEJyaWRnZShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJy
aWRnZT4oKnRoaXMpKQogICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3Rv
ckNsaWVudCkpCisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQorICAgICwgbV9wb2ludGVyQ2Fw
dHVyZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+
KCkpCisjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICwgbV9wb2ludGVyTG9j
a0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlz
KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA3ZjdiMzcwYmNhZTk4YWI5NTdkYjRjNTAxNzZk
ZWMyOWI3YjRmOTI2Li4zMzVkNmEwNWZjYmMxNGRjMjZhZDcwZWY2NDkzYmQ0Yjc3YWEzMmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaApAQCAtMTIyLDYgKzEyMiw3IEBAIGNsYXNzIFBsdWdJbkNsaWVudDsKIGNs
YXNzIFBsdWdpbkRhdGE7CiBjbGFzcyBQbHVnaW5JbmZvUHJvdmlkZXI7CiBjbGFzcyBQbHVnaW5W
aWV3QmFzZTsKK2NsYXNzIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjsKIGNsYXNzIFBvaW50ZXJM
b2NrQ29udHJvbGxlcjsKIGNsYXNzIFByb2dyZXNzVHJhY2tlcjsKIGNsYXNzIFByb2dyZXNzVHJh
Y2tlckNsaWVudDsKQEAgLTI0NCw2ICsyNDUsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBVc2Vy
SW5wdXRCcmlkZ2UmIHVzZXJJbnB1dEJyaWRnZSgpIGNvbnN0IHsgcmV0dXJuICptX3VzZXJJbnB1
dEJyaWRnZTsgfQogICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIo
KSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9CisjaWYgRU5BQkxFKFBP
SU5URVJfRVZFTlRTKQorICAgIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlciYgcG9pbnRlckNhcHR1
cmVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVy
OyB9CisjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIFBvaW50ZXJMb2NrQ29u
dHJvbGxlciYgcG9pbnRlckxvY2tDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRl
ckxvY2tDb250cm9sbGVyOyB9CiAjZW5kaWYKQEAgLTc0Nyw2ICs3NTEsOSBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFVzZXJJbnB1dEJyaWRnZT4gbV91c2Vy
SW5wdXRCcmlkZ2U7CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckNvbnRyb2xs
ZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisg
ICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4gbV9wb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQog
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRl
ckxvY2tDb250cm9sbGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI5N2RkMmI1NzgyNjEyNmUyNzk0
OTgwNmExMzVmMmEyNTFhYTY4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9pbnRlckNhcHR1cmVDb250
cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCisKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUG9p
bnRlckV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUG9pbnRlckNhcHR1cmVDb250
cm9sbGVyOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIoKQoreworfQorCitFeGNlcHRpb25Pcjx2
b2lkPiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnNldFBvaW50ZXJDYXB0dXJlKEVsZW1lbnQq
IGNhcHR1cmluZ1RhcmdldCwgaW50MzJfdCBwb2ludGVySWQpCit7CisgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3BvaW50ZXJldmVudHMvI3NldHRpbmctcG9pbnRlci1jYXB0dXJlCisKKyAg
ICAvLyAxLiBJZiB0aGUgcG9pbnRlcklkIHByb3ZpZGVkIGFzIHRoZSBtZXRob2QncyBhcmd1bWVu
dCBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIGFjdGl2ZSBwb2ludGVycywgdGhlbiB0aHJvdyBh
IERPTUV4Y2VwdGlvbiB3aXRoIHRoZSBuYW1lIE5vdEZvdW5kRXJyb3IuCisgICAgYXV0byBpdGVy
YXRvciA9IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5maW5kKHBvaW50ZXJJZCk7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IgfTsKKworICAg
IC8vIDIuIElmIHRoZSBFbGVtZW50IG9uIHdoaWNoIHRoaXMgbWV0aG9kIGlzIGludm9rZWQgaXMg
bm90IGNvbm5lY3RlZCAoW0RPTTRdKSwgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggdGhlIG5hbWUg
SW52YWxpZFN0YXRlRXJyb3IuCisgICAgaWYgKCFjYXB0dXJpbmdUYXJnZXQtPmlzQ29ubmVjdGVk
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAvLyAzLiBJZiB0aGlzIG1ldGhvZCBpcyBpbnZv
a2VkIHdoaWxlIHRoZSBkb2N1bWVudCBoYXMgYSBsb2NrZWQgZWxlbWVudCAoW1BvaW50ZXJMb2Nr
XSksIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSBuYW1lIEludmFsaWRTdGF0ZUVycm9yLgor
ICAgIGlmIChhdXRvKiBwYWdlID0gY2FwdHVyaW5nVGFyZ2V0LT5kb2N1bWVudCgpLnBhZ2UoKSkg
eworICAgICAgICBpZiAocGFnZS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCkuaXNMb2NrZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAg
IH0KKyNlbmRpZgorCisgICAgLy8gNC4gSWYgdGhlIHBvaW50ZXIgaXMgbm90IGluIHRoZSBhY3Rp
dmUgYnV0dG9ucyBzdGF0ZSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgLy8gRklY
TUU6IGltcGxlbWVudCB3aGVuIHdlIHN1cHBvcnQgbW91c2UgZXZlbnRzLgorCisgICAgLy8gNS4g
Rm9yIHRoZSBzcGVjaWZpZWQgcG9pbnRlcklkLCBzZXQgdGhlIHBlbmRpbmcgcG9pbnRlciBjYXB0
dXJlIHRhcmdldCBvdmVycmlkZSB0byB0aGUgRWxlbWVudCBvbiB3aGljaCB0aGlzIG1ldGhvZCB3
YXMgaW52b2tlZC4KKyAgICBpdGVyYXRvci0+dmFsdWUucGVuZGluZ1RhcmdldE92ZXJyaWRlID0g
Y2FwdHVyaW5nVGFyZ2V0OworCisgICAgcmV0dXJuIHsgfTsKK30KKworRXhjZXB0aW9uT3I8dm9p
ZD4gUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpyZWxlYXNlUG9pbnRlckNhcHR1cmUoRWxlbWVu
dCogY2FwdHVyaW5nVGFyZ2V0LCBpbnQzMl90IHBvaW50ZXJJZCwgSW1wbGljaXRDYXB0dXJlIGlt
cGxpY2l0KQoreworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVyZXZlbnRzLyNy
ZWxlYXNpbmctcG9pbnRlci1jYXB0dXJlCisKKyAgICAvLyBQb2ludGVyIGNhcHR1cmUgaXMgcmVs
ZWFzZWQgb24gYW4gZWxlbWVudCBleHBsaWNpdGx5IGJ5IGNhbGxpbmcgdGhlIGVsZW1lbnQucmVs
ZWFzZVBvaW50ZXJDYXB0dXJlKHBvaW50ZXJJZCkgbWV0aG9kLgorICAgIC8vIFdoZW4gdGhpcyBt
ZXRob2QgaXMgY2FsbGVkLCBhIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVw
czoKKworICAgIC8vIDEuIElmIHRoZSBwb2ludGVySWQgcHJvdmlkZWQgYXMgdGhlIG1ldGhvZCdz
IGFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgYWN0aXZlIHBvaW50ZXJzIGFuZCB0
aGVzZSBzdGVwcyBhcmUgbm90CisgICAgLy8gYmVpbmcgaW52b2tlZCBhcyBhIHJlc3VsdCBvZiB0
aGUgaW1wbGljaXQgcmVsZWFzZSBvZiBwb2ludGVyIGNhcHR1cmUsIHRoZW4gdGhyb3cgYSBET01F
eGNlcHRpb24gd2l0aCB0aGUgbmFtZSBOb3RGb3VuZEVycm9yLgorICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2FjdGl2ZVBvaW50ZXJJZHNUb0NhcHR1cmluZ0RhdGEuZmluZChwb2ludGVySWQpOworICAg
IGlmIChpbXBsaWNpdCA9PSBJbXBsaWNpdENhcHR1cmU6Ok5vICYmIGl0ZXJhdG9yID09IG1fYWN0
aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdEZvdW5kRXJyb3IgfTsKKworICAgIC8vIDIuIElmIGhhc1BvaW50ZXJDYXB0dXJl
IGlzIGZhbHNlIGZvciB0aGUgRWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgcG9pbnRlcklkLCB0
aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIWhhc1BvaW50ZXJDYXB0dXJlKGNh
cHR1cmluZ1RhcmdldCwgcG9pbnRlcklkKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8v
IDMuIEZvciB0aGUgc3BlY2lmaWVkIHBvaW50ZXJJZCwgY2xlYXIgdGhlIHBlbmRpbmcgcG9pbnRl
ciBjYXB0dXJlIHRhcmdldCBvdmVycmlkZSwgaWYgc2V0LgorICAgIGl0ZXJhdG9yLT52YWx1ZS5w
ZW5kaW5nVGFyZ2V0T3ZlcnJpZGUgPSBudWxscHRyOworCisgICAgcmV0dXJuIHsgfTsKK30KKwor
Ym9vbCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6Omhhc1BvaW50ZXJDYXB0dXJlKEVsZW1lbnQq
IGNhcHR1cmluZ1RhcmdldCwgaW50MzJfdCBwb2ludGVySWQpCit7CisgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3BvaW50ZXJldmVudHMvI2RvbS1lbGVtZW50LWhhc3BvaW50ZXJjYXB0dXJl
CisKKyAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGlzIG1l
dGhvZCBpcyBpbnZva2VkIGhhcyBwb2ludGVyIGNhcHR1cmUgZm9yIHRoZSBwb2ludGVyIGlkZW50
aWZpZWQgYnkgdGhlIGFyZ3VtZW50IHBvaW50ZXJJZC4KKyAgICAvLyBJbiBwYXJ0aWN1bGFyLCBy
ZXR1cm5zIHRydWUgaWYgdGhlIHBlbmRpbmcgcG9pbnRlciBjYXB0dXJlIHRhcmdldCBvdmVycmlk
ZSBmb3IgcG9pbnRlcklkIGlzIHNldCB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGlzIG1ldGhv
ZCBpcworICAgIC8vIGludm9rZWQsIGFuZCBmYWxzZSBvdGhlcndpc2UuCisKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0dXJpbmdEYXRhLmZpbmQocG9pbnRlcklk
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0dXJpbmdEYXRh
LmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBjYXB0dXJpbmdEYXRh
ID0gaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiBjYXB0dXJpbmdEYXRhLnBlbmRpbmdUYXJn
ZXRPdmVycmlkZSA9PSBjYXB0dXJpbmdUYXJnZXQgfHwgY2FwdHVyaW5nRGF0YS50YXJnZXRPdmVy
cmlkZSA9PSBjYXB0dXJpbmdUYXJnZXQ7Cit9CisKK3ZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9s
bGVyOjpwb2ludGVyTG9ja1dhc0FwcGxpZWQoKQoreworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wb2ludGVyZXZlbnRzLyNpbXBsaWNpdC1yZWxlYXNlLW9mLXBvaW50ZXItY2FwdHVyZQor
CisgICAgLy8gV2hlbiBhIHBvaW50ZXIgbG9jayBpcyBzdWNjZXNzZnVsbHkgYXBwbGllZCBvbiBh
biBlbGVtZW50LCBhIHVzZXIgYWdlbnQgTVVTVCBydW4gdGhlIHN0ZXBzIGFzIGlmIHRoZSByZWxl
YXNlUG9pbnRlckNhcHR1cmUoKQorICAgIC8vIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgaWYgYW55
IGVsZW1lbnQgaXMgc2V0IHRvIGJlIGNhcHR1cmVkIG9yIHBlbmRpbmcgdG8gYmUgY2FwdHVyZWQu
CisgICAgZm9yIChhdXRvJiBjYXB0dXJpbmdEYXRhIDogbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0
dXJpbmdEYXRhLnZhbHVlcygpKSB7CisgICAgICAgIGNhcHR1cmluZ0RhdGEucGVuZGluZ1Rhcmdl
dE92ZXJyaWRlID0gbnVsbHB0cjsKKyAgICAgICAgY2FwdHVyaW5nRGF0YS50YXJnZXRPdmVycmlk
ZSA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6
dG91Y2hFbmRlZE9yV2FzQ2FuY2VsZWRGb3JJZGVudGlmaWVyKGludDMyX3QgcG9pbnRlcklkKQor
eworICAgIG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5yZW1vdmUocG9pbnRlcklk
KTsKK30KKwordm9pZCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OnBvaW50ZXJFdmVudFdpbGxC
ZURpc3BhdGNoZWQoY29uc3QgUG9pbnRlckV2ZW50JiBldmVudCwgRXZlbnRUYXJnZXQqIHRhcmdl
dCkKK3sKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vcG9pbnRlcmV2ZW50cy8jaW1wbGlj
aXQtcG9pbnRlci1jYXB0dXJlCisKKyAgICAvLyBTb21lIGlucHV0IGRldmljZXMgKHN1Y2ggYXMg
dG91Y2hzY3JlZW5zKSBpbXBsZW1lbnQgYSAiZGlyZWN0IG1hbmlwdWxhdGlvbiIgbWV0YXBob3Ig
d2hlcmUgYSBwb2ludGVyIGlzIGludGVuZGVkIHRvIGFjdCBwcmltYXJpbHkgb24gdGhlIFVJCisg
ICAgLy8gZWxlbWVudCBpdCBiZWNhbWUgYWN0aXZlIHVwb24gKHByb3ZpZGluZyBhIHBoeXNpY2Fs
IGlsbHVzaW9uIG9mIGRpcmVjdCBjb250YWN0LCBpbnN0ZWFkIG9mIGluZGlyZWN0IGNvbnRhY3Qg
dmlhIGEgY3Vyc29yIHRoYXQgY29uY2VwdHVhbGx5CisgICAgLy8gZmxvYXRzIGFib3ZlIHRoZSBV
SSkuIFN1Y2ggZGV2aWNlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgSW5wdXREZXZpY2VDYXBhYmls
aXRpZXMucG9pbnRlck1vdmVtZW50U2Nyb2xscyBwcm9wZXJ0eSBhbmQgc2hvdWxkIGhhdmUgImlt
cGxpY2l0CisgICAgLy8gcG9pbnRlciBjYXB0dXJlIiBiZWhhdmlvciBhcyBmb2xsb3dzLgorCisg
ICAgLy8gRGlyZWN0IG1hbmlwdWxhdGlvbiBkZXZpY2VzIHNob3VsZCBiZWhhdmUgZXhhY3RseSBh
cyBpZiBzZXRQb2ludGVyQ2FwdHVyZSB3YXMgY2FsbGVkIG9uIHRoZSB0YXJnZXQgZWxlbWVudCBq
dXN0IGJlZm9yZSB0aGUgaW52b2NhdGlvbiBvZiBhbnkKKyAgICAvLyBwb2ludGVyZG93biBsaXN0
ZW5lcnMuIFRoZSBoYXNQb2ludGVyQ2FwdHVyZSBBUEkgbWF5IGJlIHVzZWQgKGVnLiB3aXRoaW4g
YW55IHBvaW50ZXJkb3duIGxpc3RlbmVyKSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGhhcyBv
Y2N1cnJlZC4gSWYKKyAgICAvLyByZWxlYXNlUG9pbnRlckNhcHR1cmUgaXMgbm90IGNhbGxlZCBm
b3IgdGhlIHBvaW50ZXIgYmVmb3JlIHRoZSBuZXh0IHBvaW50ZXIgZXZlbnQgaXMgZmlyZWQsIHRo
ZW4gYSBnb3Rwb2ludGVyY2FwdHVyZSBldmVudCB3aWxsIGJlIGRpc3BhdGNoZWQKKyAgICAvLyB0
byB0aGUgdGFyZ2V0IChhcyBub3JtYWwpIGluZGljYXRpbmcgdGhhdCBjYXB0dXJlIGlzIGFjdGl2
ZS4KKworICAgIGlmICghaXM8RWxlbWVudD4odGFyZ2V0KSB8fCBldmVudC50eXBlKCkgIT0gZXZl
bnROYW1lcygpLnBvaW50ZXJkb3duRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
cG9pbnRlcklkID0gZXZlbnQucG9pbnRlcklkKCk7CisgICAgbV9hY3RpdmVQb2ludGVySWRzVG9D
YXB0dXJpbmdEYXRhLnNldChwb2ludGVySWQsIENhcHR1cmluZ0RhdGEgeyB9KTsKKyAgICBzZXRQ
b2ludGVyQ2FwdHVyZShkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpLCBwb2ludGVySWQpOworfQor
Cit2b2lkIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6cG9pbnRlckV2ZW50V2FzRGlzcGF0Y2hl
ZChjb25zdCBQb2ludGVyRXZlbnQmIGV2ZW50KQoreworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wb2ludGVyZXZlbnRzLyNpbXBsaWNpdC1yZWxlYXNlLW9mLXBvaW50ZXItY2FwdHVyZQor
CisgICAgYXV0byBpdGVyYXRvciA9IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5m
aW5kKGV2ZW50LnBvaW50ZXJJZCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9hY3RpdmVQb2lu
dGVySWRzVG9DYXB0dXJpbmdEYXRhLmVuZCgpKSB7CisgICAgICAgIGF1dG8mIGNhcHR1cmluZ0Rh
dGEgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgIC8vIEltbWVkaWF0ZWx5IGFmdGVyIGZpcmlu
ZyB0aGUgcG9pbnRlcnVwIG9yIHBvaW50ZXJjYW5jZWwgZXZlbnRzLCBhIHVzZXIgYWdlbnQgTVVT
VCBjbGVhciB0aGUgcGVuZGluZyBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0CisgICAgICAgIC8vIG92
ZXJyaWRlIGZvciB0aGUgcG9pbnRlcklkIG9mIHRoZSBwb2ludGVydXAgb3IgcG9pbnRlcmNhbmNl
bCBldmVudCB0aGF0IHdhcyBqdXN0IGRpc3BhdGNoZWQsIGFuZCB0aGVuIHJ1biBQcm9jZXNzIFBl
bmRpbmcKKyAgICAgICAgLy8gUG9pbnRlciBDYXB0dXJlIHN0ZXBzIHRvIGZpcmUgbG9zdHBvaW50
ZXJjYXB0dXJlIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkucG9pbnRlcnVwRXZlbnQpCisgICAgICAgICAgICBjYXB0dXJpbmdEYXRhLnBlbmRp
bmdUYXJnZXRPdmVycmlkZSA9IG51bGxwdHI7CisgICAgICAgIAorICAgICAgICAvLyBXaGVuIHRo
ZSBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlIGlzIG5vIGxvbmdlciBjb25uZWN0ZWQg
KFtET000XSksIHRoZSBwZW5kaW5nIHBvaW50ZXIgY2FwdHVyZSB0YXJnZXQgb3ZlcnJpZGUgYW5k
IHBvaW50ZXIKKyAgICAgICAgLy8gY2FwdHVyZSB0YXJnZXQgb3ZlcnJpZGUgbm9kZXMgU0hPVUxE
IGJlIGNsZWFyZWQgYW5kIGFsc28gYSBQb2ludGVyRXZlbnQgbmFtZWQgbG9zdHBvaW50ZXJjYXB0
dXJlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNhcHR1cmVkCisgICAgICAgIC8vIHBvaW50ZXIgU0hP
VUxEIGJlIGZpcmVkIGF0IHRoZSBkb2N1bWVudC4KKyAgICAgICAgaWYgKGNhcHR1cmluZ0RhdGEu
dGFyZ2V0T3ZlcnJpZGUgJiYgIWNhcHR1cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUtPmlzQ29ubmVj
dGVkKCkpIHsKKyAgICAgICAgICAgIGNhcHR1cmluZ0RhdGEucGVuZGluZ1RhcmdldE92ZXJyaWRl
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGNhcHR1cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUgPSBu
dWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvY2Vzc1BlbmRpbmdQb2ludGVyQ2Fw
dHVyZShldmVudCk7Cit9CisKK3ZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpwcm9jZXNz
UGVuZGluZ1BvaW50ZXJDYXB0dXJlKGNvbnN0IFBvaW50ZXJFdmVudCYgZXZlbnQpCit7CisgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJldmVudHMvI3Byb2Nlc3MtcGVuZGluZy1w
b2ludGVyLWNhcHR1cmUKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2FjdGl2ZVBvaW50ZXJJZHNU
b0NhcHR1cmluZ0RhdGEuZmluZChldmVudC5wb2ludGVySWQoKSk7CisgICAgaWYgKGl0ZXJhdG9y
ID09IG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byYgY2FwdHVyaW5nRGF0YSA9IGl0ZXJhdG9yLT52YWx1ZTsKKworICAg
IC8vIDEuIElmIHRoZSBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlIGZvciB0aGlzIHBv
aW50ZXIgaXMgc2V0IGFuZCBpcyBub3QgZXF1YWwgdG8gdGhlIHBlbmRpbmcgcG9pbnRlciBjYXB0
dXJlIHRhcmdldCBvdmVycmlkZSwKKyAgICAvLyB0aGVuIGZpcmUgYSBwb2ludGVyIGV2ZW50IG5h
bWVkIGxvc3Rwb2ludGVyY2FwdHVyZSBhdCB0aGUgcG9pbnRlciBjYXB0dXJlIHRhcmdldCBvdmVy
cmlkZSBub2RlLgorICAgIGlmIChjYXB0dXJpbmdEYXRhLnRhcmdldE92ZXJyaWRlICYmIGNhcHR1
cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUgIT0gY2FwdHVyaW5nRGF0YS5wZW5kaW5nVGFyZ2V0T3Zl
cnJpZGUpCisgICAgICAgIGNhcHR1cmluZ0RhdGEudGFyZ2V0T3ZlcnJpZGUtPmRpc3BhdGNoRXZl
bnQoUG9pbnRlckV2ZW50OjpjcmVhdGVGb3JQb2ludGVyQ2FwdHVyZShldmVudE5hbWVzKCkubG9z
dHBvaW50ZXJjYXB0dXJlRXZlbnQsIGV2ZW50KSk7CisKKyAgICAvLyAyLiBJZiB0aGUgcGVuZGlu
ZyBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlIGZvciB0aGlzIHBvaW50ZXIgaXMgc2V0
IGFuZCBpcyBub3QgZXF1YWwgdG8gdGhlIHBvaW50ZXIgY2FwdHVyZSB0YXJnZXQgb3ZlcnJpZGUs
CisgICAgLy8gdGhlbiBmaXJlIGEgcG9pbnRlciBldmVudCBuYW1lZCBnb3Rwb2ludGVyY2FwdHVy
ZSBhdCB0aGUgcGVuZGluZyBwb2ludGVyIGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlLgorICAgIGlm
IChjYXB0dXJpbmdEYXRhLnBlbmRpbmdUYXJnZXRPdmVycmlkZSAmJiBjYXB0dXJpbmdEYXRhLnRh
cmdldE92ZXJyaWRlICE9IGNhcHR1cmluZ0RhdGEucGVuZGluZ1RhcmdldE92ZXJyaWRlKQorICAg
ICAgICBjYXB0dXJpbmdEYXRhLnBlbmRpbmdUYXJnZXRPdmVycmlkZS0+ZGlzcGF0Y2hFdmVudChQ
b2ludGVyRXZlbnQ6OmNyZWF0ZUZvclBvaW50ZXJDYXB0dXJlKGV2ZW50TmFtZXMoKS5nb3Rwb2lu
dGVyY2FwdHVyZUV2ZW50LCBldmVudCkpOworCisgICAgLy8gMy4gU2V0IHRoZSBwb2ludGVyIGNh
cHR1cmUgdGFyZ2V0IG92ZXJyaWRlIHRvIHRoZSBwZW5kaW5nIHBvaW50ZXIgY2FwdHVyZSB0YXJn
ZXQgb3ZlcnJpZGUsIGlmIHNldC4gT3RoZXJ3aXNlLCBjbGVhciB0aGUgcG9pbnRlcgorICAgIC8v
IGNhcHR1cmUgdGFyZ2V0IG92ZXJyaWRlLgorICAgIGlmIChjYXB0dXJpbmdEYXRhLnBlbmRpbmdU
YXJnZXRPdmVycmlkZSkKKyAgICAgICAgY2FwdHVyaW5nRGF0YS50YXJnZXRPdmVycmlkZSA9IGNh
cHR1cmluZ0RhdGEucGVuZGluZ1RhcmdldE92ZXJyaWRlOworICAgIGVsc2UKKyAgICAgICAgY2Fw
dHVyaW5nRGF0YS50YXJnZXRPdmVycmlkZSA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDZi
NzExYjJhMGQ1ZTc4OGVmMDJhOWZiYjg2NTY4ZjY0MTEyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBFdmVudFRhcmdldDsKK2NsYXNzIFBvaW50ZXJFdmVu
dDsKKworY2xhc3MgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcigp
OworCisgICAgZW51bSBjbGFzcyBJbXBsaWNpdENhcHR1cmUgOiB1aW50OF90IHsgWWVzLCBObyB9
OworCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UG9pbnRlckNhcHR1cmUoRWxlbWVudCosIGlu
dDMyX3QpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbGVhc2VQb2ludGVyQ2FwdHVyZShFbGVt
ZW50KiwgaW50MzJfdCwgSW1wbGljaXRDYXB0dXJlIGltcGxpY2l0ID0gSW1wbGljaXRDYXB0dXJl
OjpObyk7CisgICAgYm9vbCBoYXNQb2ludGVyQ2FwdHVyZShFbGVtZW50KiwgaW50MzJfdCk7CisK
KyAgICB2b2lkIHBvaW50ZXJMb2NrV2FzQXBwbGllZCgpOworCisgICAgdm9pZCB0b3VjaEVuZGVk
T3JXYXNDYW5jZWxlZEZvcklkZW50aWZpZXIoaW50MzJfdCk7CisgICAgdm9pZCBwb2ludGVyRXZl
bnRXaWxsQmVEaXNwYXRjaGVkKGNvbnN0IFBvaW50ZXJFdmVudCYsIEV2ZW50VGFyZ2V0Kik7Cisg
ICAgdm9pZCBwb2ludGVyRXZlbnRXYXNEaXNwYXRjaGVkKGNvbnN0IFBvaW50ZXJFdmVudCYpOwor
Citwcml2YXRlOgorICAgIHN0cnVjdCBDYXB0dXJpbmdEYXRhIHsKKyAgICAgICAgRWxlbWVudCog
cGVuZGluZ1RhcmdldE92ZXJyaWRlOworICAgICAgICBFbGVtZW50KiB0YXJnZXRPdmVycmlkZTsK
KyAgICB9OworCisgICAgdm9pZCBwcm9jZXNzUGVuZGluZ1BvaW50ZXJDYXB0dXJlKGNvbnN0IFBv
aW50ZXJFdmVudCYpOworICAgIEhhc2hNYXA8aW50MzJfdCwgQ2FwdHVyaW5nRGF0YT4gbV9hY3Rp
dmVQb2ludGVySWRzVG9DYXB0dXJpbmdEYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCmluZGV4IGNmYWU0MWI1MWFmZTU0ZDRkYWE1
Njg1M2I3NWQwMmM1NWUwNWEyMWQuLjY1ODBmMjNiN2Q5YmJlNmViZjZlYWMzOTYyZDNmNjVjN2Y4
YTc5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5j
cHAKQEAgLTcxLDYgKzcxLDkgQEAgdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQ
b2ludGVyTG9jayhFbGVtZW50KiB0YXJnZXQpCiAgICAgICAgIH0KICAgICAgICAgbV9lbGVtZW50
ID0gdGFyZ2V0OwogICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLnBvaW50ZXJsb2Nr
Y2hhbmdlRXZlbnQsIHRhcmdldCk7CisjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQorICAgICAg
ICBtX3BhZ2UucG9pbnRlckNhcHR1cmVDb250cm9sbGVyKCkucG9pbnRlckxvY2tXYXNBcHBsaWVk
KCk7CisjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICBtX2xvY2tQZW5kaW5nID0gdHJ1ZTsK
ICAgICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2tDb250cm9sbGVyLmgKaW5kZXggNDkwOTdhZTU5ZGZhYzIxMDljZDI1YTU3MzMwZjk2ODU3
OTc4OTk3Ni4uNTA3NzQ2NWZiNTQ1NmRmYmYyODZhMDAzMTM0MjllODkxYTg3ZmViYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzM4Y2Y0MTcxMzg4YmIwYWM0MWFi
NzQyMGJkMzI0YWU4NzRiZTliNy4uMmYxMTIxOTAzMGNiMGFkOWI3OTFlNWFkOGZjMGQ3NTJmY2Jm
ODMyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAxLTI4ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGNhcHR1cmUgZm9yIFBvaW50
ZXIgRXZlbnRzIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzOTE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzYwNTY4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdHMgZm9y
IGltcGxpY2l0IHBvaW50ZXIgY2FwdHVyZSBhbmQgdGhlIEVsZW1lbnQgQVBJcyByZWxhdGVkIHRv
IHBvaW50ZXIgY2FwdHVyZS4KKworICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3BvaW50ZXIt
ZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
b2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLWhhcy1wb2lu
dGVyLWNhcHR1cmUtaW4tcG9pbnRlci1kb3duLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1oYXMt
cG9pbnRlci1jYXB0dXJlLWluLXBvaW50ZXItZG93bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
b2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2Ut
ZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9p
b3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBs
aWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2lu
dGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1w
bGljaXQtY2FwdHVyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9w
b2ludGVyLWV2ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQt
cG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTktMDEtMjggIERl
YW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFByb2R1Y2UgInBlbiIgUG9p
bnRlciBFdmVudHMgaWYgdXNpbmcgYSBzdHlsdXMgKGUuZy4gQXBwbGUgUGVuY2lsKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGlj
aXQtY2FwdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9w
b2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OTIyYjI4ZTg3NmNlM2Q3YmJkMjZiNzQ4YWIyNTk1NjM1M2ZlNDcyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQt
Y2FwdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgUG9pbnRlciBldmVu
dHMgZm9yIGEgZGlyZWN0IG1hbmlwdWxhdGlvbiBkZXZpY2UgdHJpZ2dlciAnZ290cG9pbnRlcmNh
cHR1cmUnIGFuZCAnbG9zdHBvaW50ZXJjYXB0dXJlJyBldmVudHMgZHVlIHRvIGltcGxpY2l0IGNh
cHR1cmUuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2lu
dGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLWhhcy1wb2ludGVyLWNhcHR1cmUtaW4tcG9pbnRl
ci1kb3duLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50
ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtaGFzLXBvaW50ZXItY2FwdHVyZS1pbi1wb2ludGVy
LWRvd24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MmZmNzMzN2JmYmRmM2NjZjViNDRlNjFl
MzcwMTBmNzc2MTRiZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZl
bnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLWhhcy1wb2ludGVyLWNhcHR1
cmUtaW4tcG9pbnRlci1kb3duLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBD
YWxsaW5nIGhhc1BvaW50ZXJDYXB0dXJlKCkgaW4gdGhlICdwb2ludGVyZG93bicgZXZlbnQgaGFu
ZGxlciByZXR1cm5zIHRydWUgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24gZGV2aWNlcy4gCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWlt
cGxpY2l0LWNhcHR1cmUtaGFzLXBvaW50ZXItY2FwdHVyZS1pbi1wb2ludGVyLWRvd24uaHRtbCBi
L0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNh
cHR1cmUtaGFzLXBvaW50ZXItY2FwdHVyZS1pbi1wb2ludGVyLWRvd24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNTg3MTE1ZDdlZWNiZWUwOWE0OTQ0ZDRmZDdiYzkyNDdiOThjNzQzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGlj
aXQtY2FwdHVyZS1oYXMtcG9pbnRlci1jYXB0dXJlLWluLXBvaW50ZXItZG93bi5odG1sCkBAIC0w
LDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3V0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKKyd1c2Ugc3RyaWN0JzsKKwordGFy
Z2V0X3Rlc3QoKHRhcmdldCwgdGVzdCkgPT4geworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVy
KCJwb2ludGVyZG93biIsIGV2ZW50ID0+IGFzc2VydF90cnVlKHRhcmdldC5oYXNQb2ludGVyQ2Fw
dHVyZShldmVudC5wb2ludGVySWQpKSk7CisgICAgdWkuYmVnaW5Ub3VjaGVzKHsgeDogNTAsIHk6
IDUwIH0pLnRoZW4oKCkgPT4gdGVzdC5kb25lKCkpOworfSwgIkNhbGxpbmcgaGFzUG9pbnRlckNh
cHR1cmUoKSBpbiB0aGUgJ3BvaW50ZXJkb3duJyBldmVudCBoYW5kbGVyIHJldHVybnMgdHJ1ZSBm
b3IgZGlyZWN0IG1hbmlwdWxhdGlvbiBkZXZpY2VzLiIpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJl
bGVhc2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMv
aW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS1leGNlcHRpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0Y2NiNzg4MjNkN2MzMzBkYTMxYTI5OWUyNTA3MWQ1MDBk
ZGQzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9w
b2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDYWxsaW5nIHJlbGVhc2VQb2ludGVyQ2FwdHVy
ZSgpIGluIHRoZSAncG9pbnRlcmRvd24nIGV2ZW50IGhhbmRsZXIgd2l0aCBhIGJvZ3VzIHBvaW50
ZXIgaWQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhbmQgZG9lcyBub3QgYWx0ZXIgcG9pbnRlciBjYXB0
dXJlLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRl
ci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1y
ZWxlYXNlLWV4Y2VwdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOWQxZWM5ODcwYTE2YTY1ZjlmNTJk
MmIyN2FmZmRlYjRlNWM1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0
aW9uLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3
aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworJ3VzZSBz
dHJpY3QnOworCit0YXJnZXRfdGVzdCgodGFyZ2V0LCB0ZXN0KSA9PiB7CisgICAgdGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIiwgZXZlbnQgPT4geworICAgICAgICBhc3NlcnRf
dHJ1ZSh0YXJnZXQuaGFzUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKSk7CisgICAgICAg
IGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiB0YXJnZXQucmVsZWFzZVBvaW50
ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCArIDEpKTsKKyAgICAgICAgYXNzZXJ0X3RydWUodGFy
Z2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkpOworICAgIH0pOworICAgIHVp
LmJlZ2luVG91Y2hlcyh7IHg6IDUwLCB5OiA1MCB9KS50aGVuKCgpID0+IHRlc3QuZG9uZSgpKTsK
K30sICJDYWxsaW5nIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSgpIGluIHRoZSAncG9pbnRlcmRvd24n
IGV2ZW50IGhhbmRsZXIgd2l0aCBhIGJvZ3VzIHBvaW50ZXIgaWQgcmFpc2VzIGFuIGV4Y2VwdGlv
biBhbmQgZG9lcyBub3QgYWx0ZXIgcG9pbnRlciBjYXB0dXJlLiIpOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0
dXJlLXJlbGVhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3Mv
cG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NjQxNDQ3MjQ4Mjk5OWY1ZGQ1MTYzMzNiNTkzZGY0NjIxZDk2OWNlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMt
aW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKwor
UEFTUyBDYWxsaW5nIHJlbGVhc2VQb2ludGVyQ2FwdHVyZSgpIGluIHRoZSAncG9pbnRlcmRvd24n
IGV2ZW50IGhhbmRsZXIgbWFrZXMgaGFzUG9pbnRlckNhcHR1cmUoKSByZXR1cm4gZmFsc2UuIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50
cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVu
dHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmM2I2NzNjZjIxZjljMDZiMjg5YmQ5YWM4ZDZkY2YwYWUwZDFkZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1p
bXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi91dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCisndXNlIHN0cmljdCc7CisKK3RhcmdldF90ZXN0KCh0YXJnZXQsIHRlc3Qp
ID0+IHsKKyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCBldmVudCA9
PiB7CisgICAgICAgIGFzc2VydF90cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5w
b2ludGVySWQpKTsKKyAgICAgICAgdGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5w
b2ludGVySWQpOworICAgICAgICBhc3NlcnRfZmFsc2UodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJl
KGV2ZW50LnBvaW50ZXJJZCkpOworICAgIH0pOworICAgIHVpLmJlZ2luVG91Y2hlcyh7IHg6IDUw
LCB5OiA1MCB9KS50aGVuKCgpID0+IHRlc3QuZG9uZSgpKTsKK30sICJDYWxsaW5nIHJlbGVhc2VQ
b2ludGVyQ2FwdHVyZSgpIGluIHRoZSAncG9pbnRlcmRvd24nIGV2ZW50IGhhbmRsZXIgbWFrZXMg
aGFzUG9pbnRlckNhcHR1cmUoKSByZXR1cm4gZmFsc2UuIik7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUu
aHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxp
Y2l0LWNhcHR1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWQwOGRjMjk0NjNkYzMxMWNjM2ZlZTZkMmU5
MDE2YjA5ODgzMDVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50
cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS5odG1sCkBAIC0wLDAgKzEsNDYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+
Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0
aWFsLXNjYWxlPTEiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3V0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKKyd1c2Ugc3RyaWN0JzsKKwordGFyZ2V0X3Rlc3Qo
KHRhcmdldCwgdGVzdCkgPT4geworICAgIGNvbnN0IGV2ZW50VHJhY2tlciA9IG5ldyBFdmVudFRy
YWNrZXIodGFyZ2V0LCBbInBvaW50ZXJkb3duIiwgImdvdHBvaW50ZXJjYXB0dXJlIiwgInBvaW50
ZXJtb3ZlIiwgInBvaW50ZXJ1cCIsICJsb3N0cG9pbnRlcmNhcHR1cmUiXSk7CisKKyAgICBjb25z
dCBvbmUgPSB1aS5maW5nZXIoKTsKKyAgICBjb25zdCB0d28gPSB1aS5maW5nZXIoKTsKKyAgICB1
aS5zZXF1ZW5jZShbCisgICAgICAgIG9uZS5iZWdpbih7IHg6IDEwLCB5OiAxMCB9KSwKKyAgICAg
ICAgdHdvLmJlZ2luKHsgeDogNTAsIHk6IDUwIH0pLAorICAgICAgICBvbmUubW92ZSh7IHg6IDMw
LCB5OiAzMCB9KSwKKyAgICAgICAgdHdvLm1vdmUoeyB4OiA3MCwgeTogNzAgfSksCisgICAgICAg
IG9uZS5lbmQoKSwKKyAgICAgICAgdHdvLmVuZCgpCisgICAgXSkudGhlbigoKSA9PiB7CisgICAg
ICAgIGV2ZW50VHJhY2tlci5hc3NlcnRNYXRjaGVzRXZlbnRzKFsKKyAgICAgICAgICAgIHsgaWQ6
IDEsIHR5cGU6ICJwb2ludGVyZG93biIgfSwKKyAgICAgICAgICAgIHsgaWQ6IDEsIHR5cGU6ICJn
b3Rwb2ludGVyY2FwdHVyZSIsIGlzUHJpbWFyeTogdHJ1ZSB9LAorICAgICAgICAgICAgeyBpZDog
MiwgdHlwZTogInBvaW50ZXJkb3duIiB9LAorICAgICAgICAgICAgeyBpZDogMiwgdHlwZTogImdv
dHBvaW50ZXJjYXB0dXJlIiwgaXNQcmltYXJ5OiBmYWxzZSB9LAorICAgICAgICAgICAgeyBpZDog
MSwgdHlwZTogInBvaW50ZXJtb3ZlIiB9LAorICAgICAgICAgICAgeyBpZDogMiwgdHlwZTogInBv
aW50ZXJtb3ZlIiB9LAorICAgICAgICAgICAgeyBpZDogMSwgdHlwZTogInBvaW50ZXJ1cCIgfSwK
KyAgICAgICAgICAgIHsgaWQ6IDEsIHR5cGU6ICJsb3N0cG9pbnRlcmNhcHR1cmUiLCBpc1ByaW1h
cnk6IGZhbHNlIH0sCisgICAgICAgICAgICB7IGlkOiAyLCB0eXBlOiAicG9pbnRlcnVwIiB9LAor
ICAgICAgICAgICAgeyBpZDogMiwgdHlwZTogImxvc3Rwb2ludGVyY2FwdHVyZSIsIGlzUHJpbWFy
eTogZmFsc2UgfQorICAgICAgICBdKTsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAgfSk7Cit9
LCAiUG9pbnRlciBldmVudHMgZm9yIGEgZGlyZWN0IG1hbmlwdWxhdGlvbiBkZXZpY2UgdHJpZ2dl
ciAnZ290cG9pbnRlcmNhcHR1cmUnIGFuZCAnbG9zdHBvaW50ZXJjYXB0dXJlJyBldmVudHMgZHVl
IHRvIGltcGxpY2l0IGNhcHR1cmUuIik7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50
ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2
ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE1M2VjNzUwZDQ0ZDZkNmFiMjc1YjNhODM0ZGQxZGEzYTA4ZTEzNzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQt
cG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
CitQQVNTIFRoZSBzZXRQb2ludGVyQ2FwdHVyZSgpIG1ldGhvZCBjYW4gdGhyb3cuIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQt
cG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVu
dHMvaW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUzOTc0OTE1MjY2MmQyNzI1NjUwMDIwOWU4ODU2MGI1NmI5ZTA1ZTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2
ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbApAQCAtMCwwICsxLDI3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PXV0Zi04Pgor
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlh
bC1zY2FsZT0xIj4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi91dGlscy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisndXNlIHN0cmljdCc7CisKK3RhcmdldF90ZXN0KCh0
YXJnZXQsIHRlc3QpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgKCkg
PT4gZG9jdW1lbnQuYm9keS5zZXRQb2ludGVyQ2FwdHVyZSgxMCksICJDYWxsaW5nIHNldFBvaW50
ZXJDYXB0dXJlKCkgd2l0aCBhbiBpbnZhbGlkIHBvaW50ZXIgaWQgdGhyb3dzIGEgTm90Rm91bmRF
cnJvciBleGNlcHRpb24uIik7CisKKyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRl
cmRvd24iLCBldmVudCA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHRhcmdldC5oYXNQb2ludGVy
Q2FwdHVyZShldmVudC5wb2ludGVySWQpKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxp
ZFN0YXRlRXJyb3IiLCAoKSA9PiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zZXRQb2lu
dGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpLCAiQ2FsbGluZyBzZXRQb2ludGVyQ2FwdHVyZSgp
IHdpdGggYSB2YWxpZCBwb2ludGVyIGlkIG9uIGEgZGlzY29ubmVjdGVkIGVsZW1lbnQgdGhyb3dz
IGFuIEludmFsaWRTdGF0ZUVycm9yIGV4Y2VwdGlvbi4iKTsKKyAgICB9KTsKKyAgICB1aS5iZWdp
blRvdWNoZXMoeyB4OiA1MCwgeTogNTAgfSkudGhlbigoKSA9PiB0ZXN0LmRvbmUoKSk7Cit9LCAi
VGhlIHNldFBvaW50ZXJDYXB0dXJlKCkgbWV0aG9kIGNhbiB0aHJvdy4iKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="377125"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>