<?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>80758</bug_id>
          
          <creation_ts>2012-03-10 07:33:40 -0800</creation_ts>
          <short_desc>Enable animVal support for SVGTransformList</short_desc>
          <delta_ts>2012-03-15 06:11:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>12437</dependson>
    
    <dependson>80750</dependson>
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>575514</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-10 07:33:40 -0800</bug_when>
    <thetext>Introduce SVGAnimatedTransformList, to handle transform lists like any other lists within the SVGAnimatedType concept.
This allow us to completely remove the SVGAnimateTransformElement implementation and make SVGAnimateTransformElement inherit from SVGAnimateElement instead.
As side-effect this gives full animVal support for &lt;animateTransform&gt;.

This bug depends on both the initial animVal patch at bug 12437 plus the patch at bug 80750 adding support for SVGLengthList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575515</commentid>
    <comment_count>1</comment_count>
      <attachid>131173</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-10 07:34:47 -0800</bug_when>
    <thetext>Created attachment 131173
Draft patch

Not meant for review yet - depends on both patches mentioned in the description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579261</commentid>
    <comment_count>2</comment_count>
      <attachid>132016</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-15 04:01:40 -0700</bug_when>
    <thetext>Created attachment 132016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579269</commentid>
    <comment_count>3</comment_count>
      <attachid>132016</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-15 04:26:23 -0700</bug_when>
    <thetext>Comment on attachment 132016
Patch

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

r=me

&gt; Source/WebCore/svg/SVGAnimatedTransformList.cpp:3
&gt; +/*
&gt; + * Copyright (C) Research In Motion Limited 2012. All rights reserved.
&gt; + *

You might want to preserve the copyright as this code is at least based on the original code.

&gt; Source/WebCore/svg/SVGAnimatedTransformList.cpp:92
&gt; +    // âtoâ attribute value, which conflicts mathematically with the requirement for additive transform animations

Strange characters around &apos;to&apos;, but maybe it is just bugzilla?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579307</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-15 06:11:31 -0700</bug_when>
    <thetext>Committed r110838: &lt;http://trac.webkit.org/changeset/110838&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131173</attachid>
            <date>2012-03-10 07:34:47 -0800</date>
            <delta_ts>2012-03-15 04:01:19 -0700</delta_ts>
            <desc>Draft patch</desc>
            <filename>animVal-step-3.diff</filename>
            <type>text/plain</type>
            <size>60788</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtZ3JhZGllbnQt
dHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1h
dGUtZ3JhZGllbnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAppbmRleCBlYjYyMjA5Li4yNjY2ZjQ5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLWdyYWRpZW50
LXRyYW5zZm9ybS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
YW5pbWF0ZS1ncmFkaWVudC10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC01LDEyICs1LDMxIEBA
IFRlc3RzIGlmIGdyYWRpZW50VHJhbnNmb3JtIG9mIGEgZ3JhZGllbnQgaXMgYW5pbWF0ZWFibGUu
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBncmFkaWVudC5ncmFkaWVudFRy
YW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4LmUgaXMgMAotUEFTUyBncmFkaWVu
dC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4LmUgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IERPTSBFeGNlcHRp
b24gNy4KLVBBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0
ZSgpLm1hdHJpeC5lIGlzIDEwMAotUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmlt
VmFsLmNvbnNvbGlkYXRlKCkubWF0cml4LmUgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT19NT0RJ
RklDQVRJT05fQUxMT1dFRF9FUlI6IERPTSBFeGNlcHRpb24gNy4KLVBBU1MgZ3JhZGllbnQuZ3Jh
ZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJpeC5lIGlzIDIwMAotUEFT
UyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4
LmUgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IERP
TSBFeGNlcHRpb24gNy4KK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5j
b25zb2xpZGF0ZSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9fTU9ESUZJQ0FUSU9OX0FMTE9X
RURfRVJSOiBET00gRXhjZXB0aW9uIDcuCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3Jt
LmFuaW1WYWwubnVtYmVyT2ZJdGVtcyBpcyAxCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNm
b3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguZSBpcyAwCitQQVNTIGdyYWRpZW50LmdyYWRp
ZW50VHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS50eXBlIGlzIFNWR1RyYW5zZm9ybS5TVkdf
VFJBTlNGT1JNX1RSQU5TTEFURQorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNl
VmFsLm51bWJlck9mSXRlbXMgaXMgMQorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5i
YXNlVmFsLmdldEl0ZW0oMCkudHlwZSBpcyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9UUkFO
U0xBVEUKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDAp
Lm1hdHJpeC5lIGlzIDAKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5u
dW1iZXJPZkl0ZW1zIGlzIDEKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZh
bC5nZXRJdGVtKDApLnR5cGUgaXMgU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRF
CitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRy
aXguZSBpcyAxMDAKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDEKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5n
ZXRJdGVtKDApLnR5cGUgaXMgU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFCitQ
QVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS5tYXRyaXgu
ZSBpcyAwCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwubnVtYmVyT2ZJ
dGVtcyBpcyAxCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRl
bSgwKS50eXBlIGlzIFNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURQorUEFTUyBn
cmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4LmUgaXMg
MjAwCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVt
cyBpcyAxCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgw
KS50eXBlIGlzIFNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURQorUEFTUyBncmFk
aWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4LmUgaXMgMAor
UEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLm51bWJlck9mSXRlbXMgaXMg
MQorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkudHlw
ZSBpcyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUKK1BBU1MgZ3JhZGllbnQu
Z3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5lIGlzIDIwMAorUEFT
UyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9mSXRlbXMgaXMgMQor
UEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkudHlwZSBp
cyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUKK1BBU1MgZ3JhZGllbnQuZ3Jh
ZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLm1hdHJpeC5lIGlzIDAKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZVRyYW5zZm9ybS1wYXR0ZXJuLXRyYW5zZm9y
bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlVHJhbnNm
b3JtLXBhdHRlcm4tdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAppbmRleCBmZWM0ZjBiLi44MDk0ZmFj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlVHJhbnNmb3Jt
LXBhdHRlcm4tdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9hbmltYXRlVHJhbnNmb3JtLXBhdHRlcm4tdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApA
QCAtNSwxNCArNSwyMiBAQCBUZXN0cyBhbmltYXRpb24gb2YgJ3BhdHRlcm5UcmFuc2Zvcm0nLiBT
aG91bGQgcmVzdWx0IGluIGEgMTAweDEwMCByZWN0IGFuZCBvbmx5CiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDAKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwubnVt
YmVyT2ZJdGVtcyBpcyAwCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLm51
bWJlck9mSXRlbXMgaXMgMQorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5n
ZXRJdGVtKDApLnR5cGUgaXMgU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fU0NBTEUKIFBBU1Mg
cGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguYSBpcyAx
Ci1QQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4
LmEgaXMgMQorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0
ZW1zIGlzIDAKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwubnVtYmVyT2ZJ
dGVtcyBpcyAxCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0o
MCkudHlwZSBpcyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9TQ0FMRQogUEFTUyBwYXR0ZXJu
LnBhdHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIGlzIDEuNQotUEFT
UyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIGlz
IDEuNQorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1z
IGlzIDAKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwubnVtYmVyT2ZJdGVt
cyBpcyAxCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCku
dHlwZSBpcyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9TQ0FMRQogUEFTUyBwYXR0ZXJuLnBh
dHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIGlzIDIKLVBBU1MgcGF0
dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS5tYXRyaXguYSBpcyAyCi1Q
QVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4LmEg
aXMgMQotUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLm1h
dHJpeC5hIGlzIDEKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwubnVtYmVy
T2ZJdGVtcyBpcyAwCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLm51bWJl
ck9mSXRlbXMgaXMgMAorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRl
c3RzL2FuaW1hdGUtZ3JhZGllbnQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtZ3JhZGllbnQtdHJhbnNmb3JtLmpzCmluZGV4IDg1
MzQ5OGYuLmY0Y2U0ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Nj
cmlwdC10ZXN0cy9hbmltYXRlLWdyYWRpZW50LXRyYW5zZm9ybS5qcworKysgYi9MYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1ncmFkaWVudC10cmFuc2Zvcm0u
anMKQEAgLTQ0LDIwICs0NCwzNiBAQCByb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsK
IC8vIFNldHVwIGFuaW1hdGlvbiB0ZXN0CiBmdW5jdGlvbiBzYW1wbGUxKCkgewogICAgIC8vIENo
ZWNrIGluaXRpYWwgY29uZGl0aW9ucwotICAgIHNob3VsZEJlKCJncmFkaWVudC5ncmFkaWVudFRy
YW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4LmUiLCAiMCIpOwotICAgIHNob3Vs
ZFRocm93KCJncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmNvbnNvbGlkYXRlKCku
bWF0cml4LmUiKTsKKyAgICBzaG91bGRUaHJvdygiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0u
YW5pbVZhbC5jb25zb2xpZGF0ZSgpIik7CisgICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRpZW50
VHJhbnNmb3JtLmFuaW1WYWwubnVtYmVyT2ZJdGVtcyIsICIxIik7CisgICAgc2hvdWxkQmVDbG9z
ZUVub3VnaCgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1h
dHJpeC5lIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0u
YW5pbVZhbC5nZXRJdGVtKDApLnR5cGUiLCAiU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fVFJB
TlNMQVRFIik7CisKKyAgICBzaG91bGRCZSgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFz
ZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZ3JhZGllbnQuZ3JhZGll
bnRUcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLnR5cGUiLCAiU1ZHVHJhbnNmb3JtLlNWR19U
UkFOU0ZPUk1fVFJBTlNMQVRFIik7CisgICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRpZW50VHJh
bnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguZSIsICIwIik7CiB9CiAKIGZ1bmN0aW9u
IHNhbXBsZTIoKSB7CiAgICAgLy8gQ2hlY2sgaGFsZi10aW1lIGNvbmRpdGlvbnMKLSAgICBzaG91
bGRCZSgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1h
dHJpeC5lIiwgIjEwMCIpOwotICAgIHNob3VsZFRocm93KCJncmFkaWVudC5ncmFkaWVudFRyYW5z
Zm9ybS5hbmltVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4LmUiKTsKKyAgICBzaG91bGRCZSgiZ3Jh
ZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5udW1iZXJPZkl0ZW1zIiwgIjEiKTsKKyAg
ICBzaG91bGRCZSgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDAp
LnR5cGUiLCAiU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFIik7CisgICAgc2hv
dWxkQmVDbG9zZUVub3VnaCgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJ
dGVtKDApLm1hdHJpeC5lIiwgIjEwMCIpOworCisgICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRp
ZW50VHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIxIik7CisgICAgc2hvdWxkQmUo
ImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS50eXBlIiwgIlNW
R1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSIpOworICAgIHNob3VsZEJlKCJncmFk
aWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4LmUiLCAiMCIp
OwogfQogCiBmdW5jdGlvbiBzYW1wbGUzKCkgewogICAgIC8vIENoZWNrIGVuZCBjb25kaXRpb25z
Ci0gICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuY29uc29s
aWRhdGUoKS5tYXRyaXguZSIsICIyMDAiKTsKLSAgICBzaG91bGRUaHJvdygiZ3JhZGllbnQuZ3Jh
ZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJpeC5lIik7CisgICAgc2hv
dWxkQmUoImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwubnVtYmVyT2ZJdGVtcyIs
ICIxIik7CisgICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwu
Z2V0SXRlbSgwKS50eXBlIiwgIlNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSIp
OworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFu
aW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguZSIsICIyMDAiKTsKKworICAgIHNob3VsZEJlKCJncmFk
aWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMSIpOworICAg
IHNob3VsZEJlKCJncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCku
dHlwZSIsICJTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUiKTsKKyAgICBzaG91
bGRCZSgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLm1hdHJp
eC5lIiwgIjAiKTsKIH0KIAogZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7ICAKQEAgLTY1LDcgKzgx
LDggQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiAgICAgICAgIC8vIFthbmltYXRpb25JZCwg
dGltZSwgc2FtcGxlQ2FsbGJhY2tdCiAgICAgICAgIFsiYW5pbWF0aW9uIiwgMC4wLCBzYW1wbGUx
XSwKICAgICAgICAgWyJhbmltYXRpb24iLCAyLjAsIHNhbXBsZTJdLAotICAgICAgICBbImFuaW1h
dGlvbiIsIDQuMCwgc2FtcGxlM10KKyAgICAgICAgWyJhbmltYXRpb24iLCAzLjk5OSwgc2FtcGxl
M10sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgNC4wMDEsIHNhbXBsZTNdCiAgICAgXTsKIAogICAg
IHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGVUcmFuc2Zvcm0tcGF0dGVybi10
cmFuc2Zvcm0uanMgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5p
bWF0ZVRyYW5zZm9ybS1wYXR0ZXJuLXRyYW5zZm9ybS5qcwppbmRleCAxNGFlYTQ4Li4xODFkMDg1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5p
bWF0ZVRyYW5zZm9ybS1wYXR0ZXJuLXRyYW5zZm9ybS5qcworKysgYi9MYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZVRyYW5zZm9ybS1wYXR0ZXJuLXRyYW5zZm9y
bS5qcwpAQCAtNDEsMjcgKzQxLDQ0IEBAIHJvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKHJlY3Qp
OwogLy8gU2V0dXAgYW5pbWF0aW9uIHRlc3QKIGZ1bmN0aW9uIHNhbXBsZTEoKSB7CiAgICAgLy8g
Q2hlY2sgaW5pdGlhbC9lbmQgY29uZGl0aW9ucwotICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBhdHRl
cm5UcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIiwgIjEiKTsKLSAgICBzaG91
bGRCZSgicGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS5tYXRyaXgu
YSIsICIxIik7CisgICAgc2hvdWxkQmUoInBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFs
Lm51bWJlck9mSXRlbXMiLCAiMCIpOworICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBhdHRlcm5UcmFu
c2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjAiKTsKIH0KIAogZnVuY3Rpb24gc2FtcGxl
MigpIHsKLSAgICAvLyBDaGVjayBoYWxmLXRpbWUgY29uZGl0aW9ucwotICAgIHNob3VsZEJlKCJw
YXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIiwgIjEu
NSIpOwotICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5nZXRJ
dGVtKDApLm1hdHJpeC5hIiwgIjEuNSIpOworICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBhdHRlcm5U
cmFuc2Zvcm0uYW5pbVZhbC5udW1iZXJPZkl0ZW1zIiwgIjEiKTsKKyAgICBzaG91bGRCZSgicGF0
dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS50eXBlIiwgIlNWR1RyYW5z
Zm9ybS5TVkdfVFJBTlNGT1JNX1NDQUxFIik7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicGF0
dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguYSIsICIxIik7
CisKKyAgICBzaG91bGRCZSgicGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwubnVtYmVy
T2ZJdGVtcyIsICIwIik7CiB9CiAKIGZ1bmN0aW9uIHNhbXBsZTMoKSB7CisgICAgLy8gQ2hlY2sg
aGFsZi10aW1lIGNvbmRpdGlvbnMKKyAgICBzaG91bGRCZSgicGF0dGVybi5wYXR0ZXJuVHJhbnNm
b3JtLmFuaW1WYWwubnVtYmVyT2ZJdGVtcyIsICIxIik7CisgICAgc2hvdWxkQmUoInBhdHRlcm4u
cGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkudHlwZSIsICJTVkdUcmFuc2Zvcm0u
U1ZHX1RSQU5TRk9STV9TQ0FMRSIpOworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goInBhdHRlcm4u
cGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4LmEiLCAiMS41Iik7CisK
KyAgICBzaG91bGRCZSgicGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJ
dGVtcyIsICIwIik7CisKK30KKworZnVuY3Rpb24gc2FtcGxlNCgpIHsKKyAgICAvLyBDaGVjayBo
YWxmLXRpbWUgY29uZGl0aW9ucworICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zv
cm0uYW5pbVZhbC5udW1iZXJPZkl0ZW1zIiwgIjEiKTsKKyAgICBzaG91bGRCZSgicGF0dGVybi5w
YXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS50eXBlIiwgIlNWR1RyYW5zZm9ybS5T
VkdfVFJBTlNGT1JNX1NDQUxFIik7CiAgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicGF0dGVybi5w
YXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguYSIsICIyIik7Ci0gICAg
c2hvdWxkQmVDbG9zZUVub3VnaCgicGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwuZ2V0
SXRlbSgwKS5tYXRyaXguYSIsICIyIik7CisKKyAgICBzaG91bGRCZSgicGF0dGVybi5wYXR0ZXJu
VHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIwIik7CiB9CiAKIGZ1bmN0aW9uIGV4
ZWN1dGVUZXN0KCkgewogICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWwogICAgICAgICAvLyBb
YW5pbWF0aW9uSWQsIHRpbWUsIHNhbXBsZUNhbGxiYWNrXQogICAgICAgICBbImFuaW1hdGlvbiIs
IDAuMCwgICBzYW1wbGUxXSwKLSAgICAgICAgWyJhbmltYXRpb24iLCAyLjAsICAgc2FtcGxlMl0s
Ci0gICAgICAgIFsiYW5pbWF0aW9uIiwgMy45OTksIHNhbXBsZTNdLAorICAgICAgICBbImFuaW1h
dGlvbiIsIDAuMDAxLCBzYW1wbGUyXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCAyLjAsICAgc2Ft
cGxlM10sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMy45OTksIHNhbXBsZTRdLAogICAgICAgICBb
ImFuaW1hdGlvbiIsIDQuMCwgICBzYW1wbGUxXQogICAgIF07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggMmZjYzI2NS4uMGY4ZTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3NzEsNiAr
MTc3MSw3IEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRSZWN0LmNwcAogICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwCisgICAgICAgIHN2Zy9TVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCiAgICAgICAgIHN2
Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNDU2OTQxOS4uMzk3Yzll
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MDk4LDYgKzQwOTgsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3Qu
aCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggZjhmMmI1YS4uYmQ3NzRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNTA2LDYgKzM1MDYs
NyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgICAgICAgc3Zn
L1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgXAogICAgICAgICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWRSZWN0LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFN0cmlu
Zy5jcHAgXAorICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCBc
CiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIFwKICAgICAgICAgICAgICAg
c3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA0NzhjZmEuLjYwYjljY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTU4MTEsNiArNTgxMSw3IEBACiAgICAgICAgICAgICAnc3Zn
L1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9T
VkdBbmltYXRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcu
Y3BwJywKKyAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCcsCiAg
ICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9T
VkdBbmltYXRlRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlRWxlbWVu
dC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmZDY5ZGM1Li42YWZjM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzgzLDYgKzE3ODMsNyBAQAogCQk3
MTM0NDk2RDE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2QjE0Njk0MUIzMDA3
MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi87IH07CiAJCTcxMzQ0OTZFMTQ2OTQxQjMw
MDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2QzE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3Ro
Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcxNTM3QTAxMTQ2QkQ5RDcwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE1Mzc5RkYxNDZCRDlENjAwOEJE
NjE1IC8qIFNWR1BhdGhEYXRhLmggKi87IH07CisJCTcxNTdGMDYyMTUwQjY1NjQwMDZFQUFCRCAv
KiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzE1N0YwNjExNTBCNjU2NDAwNkVBQUJEIC8qIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5jcHAgKi87IH07CiAJCTcxRkI5NjdCMTM4M0Q2NDYwMEFDOEE0QyAv
KiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUZCOTY3QTEzODNENjQ2MDBBQzhBNEMg
LyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEw
N0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5j
cHAgKi87IH07CiAJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBE
MDI5MTExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwICovOyB9OwpAQCAt
ODczMSw2ICs4NzMyLDcgQEAKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0
aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTUzNzlGRTE0NkJEOUQ2MDA4
QkQ2MTUgLyogU1ZHUGF0aERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHUGF0aERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTUz
NzlGRjE0NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHUGF0aERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzE1N0YwNjExNTBCNjU2NDAwNkVBQUJEIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZCOTY3QTEzODNE
NjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJv
cGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjI2RTAxMEVG
MDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzUwRDAyOTExMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NTc5LDYgKzE4NTgxLDcgQEAKIAkJ
CQk0M0E2MjY2NjEzQjNEMTEwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwICovLAog
CQkJCTA4NERCNTlBMTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oICovLAog
CQkJCUIyMjI3N0Y2MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFN0cmluZy5pZGwgKi8s
CisJCQkJNzE1N0YwNjExNTBCNjU2NDAwNkVBQUJEIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5jcHAgKi8sCiAJCQkJMDgyNTA5MzgxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdC5oICovLAogCQkJCUIyMjI3N0Y4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3QuaWRsICovLAogCQkJCTQzQTBGMEI1MTNBQ0NDRkYwMEE1RjBBNyAv
KiBTVkdBbmltYXRlZFR5cGUuY3BwICovLApAQCAtMjc1NDQsNiArMjc1NDcsNyBAQAogCQkJCTQ1
MENFQkYwMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUM1QjRDMjRFMTUwOTIzNkMwMEE2RUYzNyAvKiBXZWJDb3JlTlNVUkxFeHRyYXMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjJCN0FDMTE1MDk4NTBBMDA4OTMyQ0MgLyogTWljcm9E
YXRhSXRlbVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcxNTdGMDYyMTUwQjY1NjQwMDZF
QUFCRCAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FsbEluT25lLmNwcAppbmRleCBlMWE3NDE3Li40ZjA5ZDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbGxJbk9uZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5j
cHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIgorI2luY2x1ZGUgIlNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmNwcCIKICNp
bmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKaW5k
ZXggNzBmOWY1ZS4uNzgwMzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmltYXRlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jCiAgICAgLCBt
X2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVydHlWYWx1ZSkKICAgICAsIG1fdG9Q
cm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVydHlWYWx1ZSkKIHsKLSAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0
VGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpKTsKKyAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1l
czo6c2V0VGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpIHx8IGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdBbmltYXRlRWxlbWVudD4gU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMjksNyArMTI5LDcg
QEAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1h
dGVkUHJvcGVydHlUeXBlKFNWR0VsZW1lbnQKIAogICAgIC8vIEFuaW1hdGlvbnMgb2YgdHJhbnNm
b3JtIGxpc3RzIGFyZSBub3QgYWxsb3dlZCBmb3IgPGFuaW1hdGU+IG9yIDxzZXQ+CiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRtbCNBbmltYXRpb25BdHRyaWJ1dGVz
QW5kUHJvcGVydGllcwotICAgIGlmICh0eXBlID09IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkKKyAg
ICBpZiAodHlwZSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3QgJiYgIWhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpKQogICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3du
OwogCiAgICAgcmV0dXJuIHR5cGU7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXQKIAogICAgIEFTU0VSVChwZXJjZW50YWdlID49IDAgJiYgcGVyY2VudGFnZSA8PSAx
KTsKICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZEVudW1lcmF0
aW9uKTsKLSAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFRyYW5z
Zm9ybUxpc3QpOworICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVk
VHJhbnNmb3JtTGlzdCB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFn
KSk7CiAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRVbmtub3du
KTsKICAgICBBU1NFUlQobV9hbmltYXRvcik7CiAgICAgQVNTRVJUKG1fYW5pbWF0b3ItPnR5cGUo
KSA9PSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKQEAgLTE3NSw2ICsxNzUsNyBAQCB2b2lkIFNW
R0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdAogCiAgICAgQVNTRVJUKHJlc3VsdEVsZW1lbnQtPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmFuaW1hdGVUYWcpCiAgICAgICAgIHx8IHJlc3VsdEVsZW1lbnQtPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykKKyAgICAgICAgfHwgcmVzdWx0RWxlbWVudC0+
aGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykKICAgICAgICAgfHwgcmVz
dWx0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKSk7CiAKICAgICBTVkdBbmlt
YXRlRWxlbWVudCogcmVzdWx0QW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1h
dGVFbGVtZW50Kj4ocmVzdWx0RWxlbWVudCk7CkBAIC0yMzksNyArMjQwLDcgQEAgdm9pZCBTVkdB
bmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZShjb25zdCBTdHJpbmcmIGJhc2VTdHJpbmcp
CiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiB7CiAgICAg
QVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0g
ICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
KTsKKyAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFRyYW5zZm9y
bUxpc3QgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOwogICAg
IEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVkVW5rbm93bik7CiAgICAg
QVNTRVJUKG1fYW5pbWF0ZWRUeXBlKTsKICAgICBzZXRUYXJnZXRBdHRyaWJ1dGVBbmltYXRlZFZh
bHVlKG1fYW5pbWF0ZWRUeXBlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCmluZGV4IGNkOTBlNzguLmZhYWNkNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcApA
QCAtMjUsMzIgKzI1LDE1IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAi
UmVuZGVyU1ZHUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJTVkdBbmdsZS5oIgotI2luY2x1ZGUgIlNW
R0VsZW1lbnRJbnN0YW5jZS5oIgotI2luY2x1ZGUgIlNWR0dyYWRpZW50RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5j
bHVkZSAiU1ZHUGF0dGVybkVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCi0j
aW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdU
ZXh0RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgotI2luY2x1ZGUgIlNWR1Ry
YW5zZm9ybUxpc3QuaCIKLSNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKyNpbmNsdWRlICJTVkdUcmFu
c2Zvcm1hYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIFNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50OjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBTVkdBbmltYXRpb25F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgIDogU1ZHQW5pbWF0ZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1VO
S05PV04pCi0gICAgLCBtX2Jhc2VJbmRleEluVHJhbnNmb3JtTGlzdCgwKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSk7CiB9CkBAIC02Miwy
NiArNDUsOSBAQCBQYXNzUmVmUHRyPFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50PiBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6Y3JlYXRlKGNvbnN0CiAKIGJvb2wgU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpCiB7Ci0gICAgU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVs
ZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gZGV0ZXJtaW5l
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0OwotfQotCi1BbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkgY29uc3QKLXsKLSAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7Ci0gICAgCi0gICAgLy8gSnVz
dCB0cmFuc2Zvcm0gbGlzdHMgY2FuIGJlIGFuaW1hdGVkIHdpdGggPGFuaW1hdGVUcmFuc2Zvcm0+
Ci0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRtbCNBbmltYXRpb25B
dHRyaWJ1dGVzQW5kUHJvcGVydGllcwotICAgIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4g
cHJvcGVydHlUeXBlczsKLSAgICB0YXJnZXRFbGVtZW50LT5hbmltYXRlZFByb3BlcnR5VHlwZUZv
ckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKCksIHByb3BlcnR5VHlwZXMpOwotICAgIGlmIChwcm9w
ZXJ0eVR5cGVzLmlzRW1wdHkoKSB8fCBwcm9wZXJ0eVR5cGVzWzBdICE9IEFuaW1hdGVkVHJhbnNm
b3JtTGlzdCkKLSAgICAgICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93bjsKLQotICAgIEFTU0VSVChw
cm9wZXJ0eVR5cGVzLnNpemUoKSA9PSAxKTsKLSAgICByZXR1cm4gQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0OworICAgIGlmIChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxl
bWVudCgpKQorICAgICAgICByZXR1cm4gZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFy
Z2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogYm9vbCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC05NSwxODcgKzYxLDE4IEBAIGJv
b2wgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOCiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShhdHRyLT5uYW1lKCkpKSB7Ci0gICAgICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGF0dHIpOworICAgICAgICBTVkdBbmltYXRlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoYXR0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKHZhbHVlID09ICJ0cmFuc2xhdGUi
KQotICAgICAgICAgICAgbV90eXBlID0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5T
TEFURTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gInNjYWxlIikKLSAgICAgICAgICAgIG1f
dHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TQ0FMRTsKLSAgICAgICAgZWxzZSBp
ZiAodmFsdWUgPT0gInJvdGF0ZSIpCi0gICAgICAgICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm06
OlNWR19UUkFOU0ZPUk1fUk9UQVRFOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAic2tld1gi
KQotICAgICAgICAgICAgbV90eXBlID0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NLRVdY
OwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAic2tld1kiKQotICAgICAgICAgICAgbV90eXBl
ID0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NLRVdZOworICAgICAgICBtX3R5cGUgPSBT
VkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUoYXR0ci0+dmFsdWUoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBhbmltYXRlZFRyYW5zZm9y
bUxpc3RGb3IoU1ZHRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQoZWxlbWVudCk7Ci0g
ICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpKQotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihlbGVtZW50KS0+dHJh
bnNmb3JtQW5pbWF0ZWQoKTsKLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6
dGV4dFRhZykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdUZXh0RWxlbWVudCo+KGVs
ZW1lbnQpLT50cmFuc2Zvcm1BbmltYXRlZCgpOwotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6cmFkaWFsR3JhZGllbnRUYWcpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
R3JhZGllbnRFbGVtZW50Kj4oZWxlbWVudCktPmdyYWRpZW50VHJhbnNmb3JtQW5pbWF0ZWQoKTsK
LSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cGF0dGVyblRhZykpCi0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXR0ZXJuRWxlbWVudCo+KGVsZW1lbnQpLT5wYXR0
ZXJuVHJhbnNmb3JtQW5pbWF0ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLSAgICAKLXZvaWQgU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUoY29uc3QgU3RyaW5nJiBi
YXNlVmFsdWUpCi17Ci0gICAgLy8gRklYTUU6IEFkZCBhbmltVmFsIHN1cHBvcnQhCi0gICAgU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAo
IXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxl
bWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhN
RTogVGhpcyBtaWdodCBub3QgYmUgY29ycmVjdCBmb3IgYWNjdW11bGF0ZWQgc3VtLiBOZWVkcyBj
aGVja2luZy4KLSAgICBpZiAodGFyZ2V0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6bGlu
ZWFyR3JhZGllbnRUYWcpIHx8IHRhcmdldEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJh
ZGlhbEdyYWRpZW50VGFnKSkgewotICAgICAgICB0YXJnZXRFbGVtZW50LT5zZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgYmFzZVZhbHVlLmlzRW1wdHkoKSA/ICJt
YXRyaXgoMSAwIDAgMSAwIDApIiA6IGJhc2VWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKHRhcmdldEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdHRlcm5UYWcp
KSB7Ci0gICAgICAgIHRhcmdldEVsZW1lbnQtPnNldEF0dHJpYnV0ZShTVkdOYW1lczo6cGF0dGVy
blRyYW5zZm9ybUF0dHIsIGJhc2VWYWx1ZS5pc0VtcHR5KCkgPyAibWF0cml4KDEgMCAwIDEgMCAw
KSIgOiBiYXNlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChi
YXNlVmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0PiBsaXN0ID0gYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Rm9yKHRhcmdldEVsZW1lbnQp
KSB7Ci0gICAgICAgICAgICBTVkdMaXN0UHJvcGVydHk8U1ZHVHJhbnNmb3JtTGlzdD4qIGJhc2VW
YWwgPSBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHk8U1ZHVHJhbnNmb3JtTGlzdD4qPihsaXN0
LT5iYXNlVmFsKCkpOwotICAgICAgICAgICAgYmFzZVZhbC0+ZGV0YWNoTGlzdFdyYXBwZXJzKDAp
OwotICAgICAgICAgICAgYmFzZVZhbC0+dmFsdWVzKCkuY2xlYXIoKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZQotICAgICAgICB0YXJnZXRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRy
YW5zZm9ybUF0dHIsIGJhc2VWYWx1ZSk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0LCBTVkdTTUlMRWxlbWVudCopCi17Ci0gICAgLy8gRklYTUU6IEFkZCBhbmltVmFsIHN1
cHBvcnQhCi0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1l
bnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQotICAgICAgICByZXR1cm47
Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4gYW5pbWF0ZWRMaXN0ID0gYW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0Rm9yKHRhcmdldEVsZW1lbnQpOwotICAgIEFTU0VSVChhbmltYXRl
ZExpc3QpOwotICAgIFNWR0xpc3RQcm9wZXJ0eTxTVkdUcmFuc2Zvcm1MaXN0PiogYmFzZVZhbCA9
IHN0YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eTxTVkdUcmFuc2Zvcm1MaXN0Pio+KGFuaW1hdGVk
TGlzdC0+YmFzZVZhbCgpKTsKLSAgICBBU1NFUlQoYmFzZVZhbCk7Ci0KLSAgICBpZiAoY2FsY01v
ZGUoKSA9PSBDYWxjTW9kZURpc2NyZXRlKQotICAgICAgICBwZXJjZW50YWdlID0gcGVyY2VudGFn
ZSA8IDAuNSA/IDAgOiAxOwotCi0gICAgaWYgKCFpc0FkZGl0aXZlKCkpIHsKLSAgICAgICAgYmFz
ZVZhbC0+ZGV0YWNoTGlzdFdyYXBwZXJzKDApOwotICAgICAgICBiYXNlVmFsLT52YWx1ZXMoKS5j
bGVhcigpOwotICAgIH0KLSAgICBpZiAoaXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdCkKLSAgICAg
ICAgcGVyY2VudGFnZSArPSByZXBlYXQ7Ci0gICAgU1ZHVHJhbnNmb3JtIHRyYW5zZm9ybSA9IFNW
R1RyYW5zZm9ybURpc3RhbmNlKG1fZnJvbVRyYW5zZm9ybSwgbV90b1RyYW5zZm9ybSkuc2NhbGVk
RGlzdGFuY2UocGVyY2VudGFnZSkuYWRkVG9TVkdUcmFuc2Zvcm0obV9mcm9tVHJhbnNmb3JtKTsK
LSAgICBiYXNlVmFsLT52YWx1ZXMoKS5hcHBlbmQodHJhbnNmb3JtKTsKLSAgICBiYXNlVmFsLT53
cmFwcGVycygpLmFwcGVuZChSZWZQdHI8U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybT4g
PigpKTsKLX0KLSAgICAKLWJvb2wgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0
ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpCi17Ci0gICAgbV9mcm9tVHJhbnNmb3JtID0gcGFyc2VUcmFuc2Zvcm1WYWx1ZShm
cm9tU3RyaW5nKTsKLSAgICBpZiAoIW1fZnJvbVRyYW5zZm9ybS5pc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBtX3RvVHJhbnNmb3JtID0gcGFyc2VUcmFuc2Zvcm1WYWx1ZSh0
b1N0cmluZyk7Ci0gICAgcmV0dXJuIG1fdG9UcmFuc2Zvcm0uaXNWYWxpZCgpOwotfQotCi1ib29s
IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQotewotICAgIG1f
ZnJvbVRyYW5zZm9ybSA9IHBhcnNlVHJhbnNmb3JtVmFsdWUoZnJvbVN0cmluZyk7Ci0gICAgaWYg
KCFtX2Zyb21UcmFuc2Zvcm0uaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
bV90b1RyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybURpc3RhbmNlOjphZGRTVkdUcmFuc2Zvcm1zKG1f
ZnJvbVRyYW5zZm9ybSwgcGFyc2VUcmFuc2Zvcm1WYWx1ZShieVN0cmluZykpOwotICAgIHJldHVy
biBtX3RvVHJhbnNmb3JtLmlzVmFsaWQoKTsKLX0KLQotU1ZHVHJhbnNmb3JtIFNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50OjpwYXJzZVRyYW5zZm9ybVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0Ci17Ci0gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFNWR1Ry
YW5zZm9ybShtX3R5cGUpOwotICAgIFNWR1RyYW5zZm9ybSByZXN1bHQ7Ci0gICAgLy8gRklYTUU6
IFRoaXMgaXMgcHJldHR5IGR1bWIgYnV0IHBhcnNlVHJhbnNmb3JtVmFsdWUoKSB3YW50cyB0aG9z
ZSBwYXJlbnRoZXNpcy4KLSAgICBTdHJpbmcgcGFyc2VTdHJpbmcoIigiICsgdmFsdWUgKyAiKSIp
OwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSBwYXJzZVN0cmluZy5jaGFyYWN0ZXJzKCk7Ci0gICAg
U1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShtX3R5cGUsIHB0ciwgcHRyICsg
cGFyc2VTdHJpbmcubGVuZ3RoKCksIHJlc3VsdCk7IC8vIGlnbm9yaW5nIHJldHVybiB2YWx1ZQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0gICAgCi12b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCi17Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwg
ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRV
bmtub3duKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBhY2N1bXVsYXRlIHRvIHRoZSB0
YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBpcyBub3QgbXVjaCB0byBkbyBo
ZXJlLgotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0RWxlbWVudC0+cmVu
ZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsK
LSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbihyZW5kZXJlcik7Ci0gICAgfQotCi0gICAgLy8gLi4uZXhjZXB0IGluIGNh
c2Ugd2hlcmUgd2UgaGF2ZSBhZGRpdGlvbmFsIGluc3RhbmNlcyBpbiA8dXNlPiB0cmVlcy4KLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBhbmltYXRlZExpc3QgPSBhbmltYXRl
ZFRyYW5zZm9ybUxpc3RGb3IodGFyZ2V0RWxlbWVudCk7Ci0gICAgaWYgKCFhbmltYXRlZExpc3Qp
Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogQWRkIGFuaW1WYWwgc3VwcG9ydCEgVGhp
cyB3aWxsIG1ha2UgdGhpcyBtYW51YWwgY29weWluZyB1bm5jZXNzYXJ5LiBXZSBqdXN0IGhhdmUg
dG8gZW5hYmxlIGl0LgotICAgIFNWR0xpc3RQcm9wZXJ0eTxTVkdUcmFuc2Zvcm1MaXN0PiogYmFz
ZVZhbCA9IHN0YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eTxTVkdUcmFuc2Zvcm1MaXN0Pio+KGFu
aW1hdGVkTGlzdC0+YmFzZVZhbCgpKTsKLSAgICBBU1NFUlQoYmFzZVZhbCk7Ci0gICAgU1ZHVHJh
bnNmb3JtTGlzdCYgdHJhbnNmb3JtTGlzdCA9IGJhc2VWYWwtPnZhbHVlcygpOwotCi0gICAgY29u
c3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYgaW5zdGFuY2VzID0gdGFyZ2V0RWxlbWVu
dC0+aW5zdGFuY2VzRm9yRWxlbWVudCgpOwotICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudElu
c3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsKLSAgICBmb3Ig
KEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5zdGFu
Y2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBTVkdFbGVtZW50KiBzaGFk
b3dUcmVlRWxlbWVudCA9ICgqaXQpLT5zaGFkb3dUcmVlRWxlbWVudCgpOwotICAgICAgICBBU1NF
UlQoc2hhZG93VHJlZUVsZW1lbnQpOwotICAgICAgICBpZiAoc2hhZG93VHJlZUVsZW1lbnQtPmlz
U3R5bGVkVHJhbnNmb3JtYWJsZSgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQqPihzaGFkb3dUcmVlRWxlbWVudCktPnNldFRyYW5zZm9ybUJh
c2VWYWx1ZSh0cmFuc2Zvcm1MaXN0KTsKLSAgICAgICAgZWxzZSBpZiAoc2hhZG93VHJlZUVsZW1l
bnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKQotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8U1ZHVGV4dEVsZW1lbnQqPihzaGFkb3dUcmVlRWxlbWVudCktPnNldFRyYW5zZm9ybUJhc2VW
YWx1ZSh0cmFuc2Zvcm1MaXN0KTsKLSAgICAgICAgZWxzZSBpZiAoc2hhZG93VHJlZUVsZW1lbnQt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSB8fCBzaGFkb3dUcmVlRWxl
bWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcpKQotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Kj4oc2hhZG93VHJlZUVsZW1lbnQpLT5z
ZXRHcmFkaWVudFRyYW5zZm9ybUJhc2VWYWx1ZSh0cmFuc2Zvcm1MaXN0KTsKLSAgICAgICAgZWxz
ZSBpZiAoc2hhZG93VHJlZUVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdHRlcm5UYWcp
KQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0dGVybkVsZW1lbnQqPihzaGFkb3dUcmVl
RWxlbWVudCktPnNldFBhdHRlcm5UcmFuc2Zvcm1CYXNlVmFsdWUodHJhbnNmb3JtTGlzdCk7Ci0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2hhZG93VHJlZUVsZW1lbnQtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0g
ICAgCi1mbG9hdCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQotewotICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGluIGFsbCBjYXNlcy4gVGhlIHNwZWMgZGVt
YW5kcyB0aGF0IGVhY2ggY29tcG9uZW50ICh0cmFuc2xhdGUgeCBhbmQgeSBmb3IgZXhhbXBsZSkg
Ci0gICAgLy8gaXMgcGFjZWQgc2VwYXJhdGVseS4gVG8gaW1wbGVtZW50IHRoaXMgd2UgbmVlZCB0
byB0cmVhdCBlYWNoIGNvbXBvbmVudCBhcyBpbmRpdmlkdWFsIGFuaW1hdGlvbiBldmVyeXdoZXJl
LgotICAgIFNWR1RyYW5zZm9ybSBmcm9tID0gcGFyc2VUcmFuc2Zvcm1WYWx1ZShmcm9tU3RyaW5n
KTsKLSAgICBpZiAoIWZyb20uaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgU1ZH
VHJhbnNmb3JtIHRvID0gcGFyc2VUcmFuc2Zvcm1WYWx1ZSh0b1N0cmluZyk7Ci0gICAgaWYgKCF0
by5pc1ZhbGlkKCkgfHwgZnJvbS50eXBlKCkgIT0gdG8udHlwZSgpKQotICAgICAgICByZXR1cm4g
LTE7Ci0gICAgaWYgKHRvLnR5cGUoKSA9PSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVFJB
TlNMQVRFKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBkaWZmID0gdG8udHJhbnNsYXRlKCkgLSBmcm9t
LnRyYW5zbGF0ZSgpOwotICAgICAgICByZXR1cm4gc3FydGYoZGlmZi53aWR0aCgpICogZGlmZi53
aWR0aCgpICsgZGlmZi5oZWlnaHQoKSAqIGRpZmYuaGVpZ2h0KCkpOwotICAgIH0KLSAgICBpZiAo
dG8udHlwZSgpID09IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9ST1RBVEUpCi0gICAgICAg
IHJldHVybiBmYWJzZih0by5hbmdsZSgpIC0gZnJvbS5hbmdsZSgpKTsKLSAgICBpZiAodG8udHlw
ZSgpID09IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TQ0FMRSkgewotICAgICAgICBGbG9h
dFNpemUgZGlmZiA9IHRvLnNjYWxlKCkgLSBmcm9tLnNjYWxlKCk7Ci0gICAgICAgIHJldHVybiBz
cXJ0ZihkaWZmLndpZHRoKCkgKiBkaWZmLndpZHRoKCkgKyBkaWZmLmhlaWdodCgpICogZGlmZi5o
ZWlnaHQoKSk7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQotfQogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dC5oCmluZGV4IGEzZDdmNzkuLmQzMDhlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCkBAIC0yMiw0NCArMjIsMzAgQEAKIAogI2lmbmRl
ZiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudF9oCiAjZGVmaW5lIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50X2gKLSNpZiBFTkFCTEUoU1ZHKQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0aW9uRWxl
bWVudC5oIgorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1EaXN0YW5j
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIAot
Y2xhc3MgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgOiBwdWJsaWMgU1ZHQW5pbWF0aW9uRWxl
bWVudCB7CitjbGFzcyBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCA6IHB1YmxpYyBTVkdBbmlt
YXRlRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAorICAgIFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSB0cmFuc2Zvcm1UeXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CisKIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpOwotICAgIEFuaW1hdGVkUHJvcGVydHlU
eXBlIGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKFNWR0VsZW1lbnQqKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgdm9pZCByZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1
YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJv
bUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0
cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCk7Ci0gICAgdmlydHVhbCBm
bG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0
cmluZyYgdG9TdHJpbmcpOwotCi0gICAgU1ZHVHJhbnNmb3JtIHBhcnNlVHJhbnNmb3JtVmFsdWUo
Y29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgCiAgICAgU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zv
cm1UeXBlIG1fdHlwZTsKLSAgICAKLSAgICB1bnNpZ25lZCBtX2Jhc2VJbmRleEluVHJhbnNmb3Jt
TGlzdDsKLQotICAgIFNWR1RyYW5zZm9ybSBtX3RvVHJhbnNmb3JtOwotICAgIFNWR1RyYW5zZm9y
bSBtX2Zyb21UcmFuc2Zvcm07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YmZhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcApAQCAtMCwwICsxLDE0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
Mi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKKworI2luY2x1ZGUg
IlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1i
ZXIuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybURpc3Rh
bmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVs
ZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAg
IDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBhbmltYXRp
b25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkKK3sKKyAgICAvLyBPbmx5IDxhbmltYXRlVHJhbnNm
b3JtPiB1c2VzIHRoaXMgYW5pbWF0b3IsIGFzIDxhbmltYXRlPiBkb2Vzbid0IGFsbG93IHRvIGFu
aW1hdGUgdHJhbnNmb3JtIGxpc3RzIGRpcmVjdGx5LgorICAgIEFTU0VSVChhbmltYXRpb25FbGVt
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSk7Cit9CisKK1Bh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
cjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZVRyYW5zZm9ybUxpc3QobmV3IFNWR1RyYW5zZm9ybUxpc3QpOworICAgIGFuaW1hdGVkVHlwZS0+
dHJhbnNmb3JtTGlzdCgpLnBhcnNlKHN0cmluZyk7CisgICAgQVNTRVJUKGFuaW1hdGVkVHlwZS0+
dHJhbnNmb3JtTGlzdCgpLnNpemUoKSA8PSAxKTsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJl
bGVhc2UoKTsKK30KKworUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tQ29weShTVkdHZW5lcmljQW5pbWF0ZWRU
eXBlIHR5cGUpCit7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3Jt
TGlzdChuZXcgU1ZHVHJhbnNmb3JtTGlzdCgqcmVpbnRlcnByZXRfY2FzdDxTVkdUcmFuc2Zvcm1M
aXN0Kj4odHlwZSkpKTsKK30KKworaW5saW5lIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhTVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudCogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQoreworICAgIEFTU0VSVChhbmltYXRlVHJhbnNmb3JtRWxlbWVudCk7Cisg
ICAgcmV0dXJuIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9t
U3RyaW5nKFNWR1RyYW5zZm9ybTo6dHJhbnNmb3JtVHlwZVByZWZpeEZvclBhcnNpbmcoYW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQtPnRyYW5zZm9ybVR5cGUoKSkgKyBzdHJpbmcgKyAnKScpOworfQor
Cit2b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKQoreworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50KiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0PFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKKworICAgIGZy
b20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LCBmcm9tU3Ry
aW5nKTsKKyAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQsIHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
cjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiBieVN0cmluZykKK3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50
KTsKKyAgICBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCogYW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCo+KG1fYW5pbWF0aW9u
RWxlbWVudCk7CisKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhhbmltYXRlVHJhbnNm
b3JtRWxlbWVudCwgZnJvbVN0cmluZyk7CisgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGFu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LCBieVN0cmluZyk7CisKKyAgICBTVkdUcmFuc2Zvcm1MaXN0
JiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZyb20tPnRyYW5zZm9ybUxpc3QoKTsKKyAgICBTVkdUcmFu
c2Zvcm1MaXN0JiB0b1RyYW5zZm9ybUxpc3QgPSB0by0+dHJhbnNmb3JtTGlzdCgpOworICAgIHVu
c2lnbmVkIGl0ZW1zQ291bnQgPSBmcm9tVHJhbnNmb3JtTGlzdC5zaXplKCk7CisgICAgaWYgKCFp
dGVtc0NvdW50IHx8IGl0ZW1zQ291bnQgIT0gdG9UcmFuc2Zvcm1MaXN0LnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKGl0ZW1zQ291bnQgPT0gMSk7CisgICAgdG9UcmFuc2Zv
cm1MaXN0WzBdID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoZnJvbVRy
YW5zZm9ybUxpc3RbMF0sIHRvVHJhbnNmb3JtTGlzdFswXSk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZy
b20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGFuaW1hdGVkKQoreworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworCisgICAgLy8g
U3BlYzogVG8gYW5pbWF0aW9ucyBwcm92aWRlIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgdG8gZ2V0
IGEgc21vb3RoIGNoYW5nZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHZhbHVlIHRvIHRoZQorICAgIC8v
IOKAmHRv4oCZIGF0dHJpYnV0ZSB2YWx1ZSwgd2hpY2ggY29uZmxpY3RzIG1hdGhlbWF0aWNhbGx5
IHdpdGggdGhlIHJlcXVpcmVtZW50IGZvciBhZGRpdGl2ZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucwor
ICAgIC8vIHRvIGJlIHBvc3QtbXVsdGlwbGllZC4gQXMgYSBjb25zZXF1ZW5jZSwgaW4gU1ZHIDEu
MSB0aGUgYmVoYXZpb3Igb2YgdG8gYW5pbWF0aW9ucyBmb3Ig4oCYYW5pbWF0ZVRyYW5zZm9ybeKA
mSBpcyB1bmRlZmluZWQuIAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCB0YWtlbiBpbnRvIGFj
Y291bnQgeWV0LgorICAgIFNWR1RyYW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zvcm1MaXN0ID0gZnJv
bS0+dHJhbnNmb3JtTGlzdCgpOworICAgIFNWR1RyYW5zZm9ybUxpc3QmIHRvVHJhbnNmb3JtTGlz
dCA9IHRvLT50cmFuc2Zvcm1MaXN0KCk7CisgICAgQVNTRVJUKGZyb21UcmFuc2Zvcm1MaXN0LnNp
emUoKSA8PSAxKTsKKyAgICBBU1NFUlQodG9UcmFuc2Zvcm1MaXN0LnNpemUoKSA8PSAxKTsKKyAg
ICBBU1NFUlQoZnJvbVRyYW5zZm9ybUxpc3RbMF0udHlwZSgpID09IHRvVHJhbnNmb3JtTGlzdFsw
XS50eXBlKCkpOworCisgICAgU1ZHVHJhbnNmb3JtIGZyb21UcmFuc2Zvcm07CisgICAgU1ZHVHJh
bnNmb3JtIHRvVHJhbnNmb3JtOworICAgIGlmICghdG9UcmFuc2Zvcm1MaXN0LmlzRW1wdHkoKSAm
JiAhZnJvbVRyYW5zZm9ybUxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGZyb21UcmFuc2Zvcm0g
PSBmcm9tVHJhbnNmb3JtTGlzdFswXTsKKyAgICAgICAgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9y
bUxpc3RbMF07CisgICAgICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtLnR5cGUoKSA9PSB0b1RyYW5z
Zm9ybS50eXBlKCkpOworICAgIH0KKworICAgIGlmIChtX2FuaW1hdGlvbkVsZW1lbnQtPmNhbGNN
b2RlKCkgPT0gQ2FsY01vZGVEaXNjcmV0ZSkKKyAgICAgICAgcGVyY2VudGFnZSA9IHBlcmNlbnRh
Z2UgPCAwLjUgPyAwIDogMTsKKworICAgIGlmIChtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11
bGF0ZWQoKSAmJiByZXBlYXRDb3VudCkKKyAgICAgICAgcGVyY2VudGFnZSArPSByZXBlYXRDb3Vu
dDsKKworICAgIFNWR1RyYW5zZm9ybUxpc3QmIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IGFuaW1h
dGVkLT50cmFuc2Zvcm1MaXN0KCk7CisgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWRk
aXRpdmUoKSkKKyAgICAgICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNsZWFyKCk7CisKKyAgICBh
bmltYXRlZFRyYW5zZm9ybUxpc3QuYXBwZW5kKFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFu
c2Zvcm0sIHRvVHJhbnNmb3JtKS5zY2FsZWREaXN0YW5jZShwZXJjZW50YWdlKS5hZGRUb1NWR1Ry
YW5zZm9ybShmcm9tVHJhbnNmb3JtKSk7Cit9CisKK2Zsb2F0IFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVu
dCk7CisgICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqIGFuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqPihtX2FuaW1hdGlv
bkVsZW1lbnQpOworCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3QgaW4gYWxsIGNh
c2VzLiBUaGUgc3BlYyBkZW1hbmRzIHRoYXQgZWFjaCBjb21wb25lbnQgKHRyYW5zbGF0ZSB4IGFu
ZCB5IGZvciBleGFtcGxlKSAKKyAgICAvLyBpcyBwYWNlZCBzZXBhcmF0ZWx5LiBUbyBpbXBsZW1l
bnQgdGhpcyB3ZSBuZWVkIHRvIHRyZWF0IGVhY2ggY29tcG9uZW50IGFzIGluZGl2aWR1YWwgYW5p
bWF0aW9uIGV2ZXJ5d2hlcmUuCisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gZnJvbSA9IGNv
bnN0cnVjdEZyb21TdHJpbmcoYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQsIGZyb21TdHJpbmcpOwor
ICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IHRvID0gY29uc3RydWN0RnJvbVN0cmluZyhhbmlt
YXRlVHJhbnNmb3JtRWxlbWVudCwgdG9TdHJpbmcpOworCisgICAgU1ZHVHJhbnNmb3JtTGlzdCYg
ZnJvbVRyYW5zZm9ybUxpc3QgPSBmcm9tLT50cmFuc2Zvcm1MaXN0KCk7CisgICAgU1ZHVHJhbnNm
b3JtTGlzdCYgdG9UcmFuc2Zvcm1MaXN0ID0gdG8tPnRyYW5zZm9ybUxpc3QoKTsKKyAgICB1bnNp
Z25lZCBpdGVtc0NvdW50ID0gZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgpOworICAgIGlmICghaXRl
bXNDb3VudCB8fCBpdGVtc0NvdW50ICE9IHRvVHJhbnNmb3JtTGlzdC5zaXplKCkpCisgICAgICAg
IHJldHVybiAtMTsKKworICAgIEFTU0VSVChpdGVtc0NvdW50ID09IDEpOworICAgIGlmIChmcm9t
VHJhbnNmb3JtTGlzdFswXS50eXBlKCkgIT0gdG9UcmFuc2Zvcm1MaXN0WzBdLnR5cGUoKSkKKyAg
ICAgICAgcmV0dXJuIC0xOworCisgICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZH
L2FuaW1hdGUuaHRtbCNjb21wbGV4RGlzdGFuY2VzCisgICAgLy8gUGFjZWQgYW5pbWF0aW9ucyBh
c3N1bWUgYSBub3Rpb24gb2YgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdmFyaW91cyBhbmltYXRpb24g
dmFsdWVzIGRlZmluZWQgYnkgdGhlIOKAmHRv4oCZLCDigJhmcm9t4oCZLCDigJhieeKAmSBhbmQg
4oCYdmFsdWVz4oCZIGF0dHJpYnV0ZXMuCisgICAgLy8gRGlzdGFuY2UgaXMgZGVmaW5lZCBvbmx5
IGZvciBzY2FsYXIgdHlwZXMgKHN1Y2ggYXMgPGxlbmd0aD4pLCBjb2xvcnMgYW5kIHRoZSBzdWJz
ZXQgb2YgdHJhbnNmb3JtYXRpb24gdHlwZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IOKAmGFuaW1h
dGVUcmFuc2Zvcm3igJkuCisgICAgcmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFu
c2Zvcm1MaXN0WzBdLCB0b1RyYW5zZm9ybUxpc3RbMF0pLmRpc3RhbmNlKCk7Cit9CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmgKaW5kZXggYmY4MDM4ZS4uZjM0Y2VmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaApAQCAtMjIsNiArMjIsNyBAQAogCiAj
aWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0
eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDYgKzM1LDI4IEBAIERFQ0xBUkVfQU5JTUFURURfTElT
VF9QUk9QRVJUWShTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QsIFNWR1RyYW5zZm9ybUxpc3QsIFVw
cGVyCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChPd25lclR5cGUsIERP
TUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRZKEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwgT3duZXJUeXBlLCBET01BdHRyaWJ1
dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkKIAorY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKK2NsYXNzIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50OworCitjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciA6IHB1
YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CisgICAgCitwdWJsaWM6CisgICAgU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1l
bnQqKTsKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcigpIHsg
fQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tQ29weShTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKTsKKworICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVh
bCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
ZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1
ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwg
ZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRvU3RyaW5nKTsKKworcHJpdmF0ZToKKyAgICBQYXNzT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCosIGNv
bnN0IFN0cmluZyYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKaW5kZXggZmMx
YzZmNC4uMDkzMzUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1
ZGUgIlNWR1BvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIK
KyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
QEAgLTg3LDYgKzg4LDkgQEAgU1ZHQW5pbWF0ZWRUeXBlOjp+U1ZHQW5pbWF0ZWRUeXBlKCkKICAg
ICBjYXNlIEFuaW1hdGVkU3RyaW5nOgogICAgICAgICBkZWxldGUgbV9kYXRhLnN0cmluZzsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CisgICAgICAgIGRl
bGV0ZSBtX2RhdGEudHJhbnNmb3JtTGlzdDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjA1LDYg
KzIwOSwxNCBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVTdHJpbmcoU3RyaW5nKiBzdHJpbmcpCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxl
YXNlKCk7CiB9CiAKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZVRyYW5zZm9ybUxpc3QoU1ZHVHJhbnNmb3JtTGlzdCogdHJhbnNmb3JtTGlzdCkKK3sK
KyAgICBBU1NFUlQodHJhbnNmb3JtTGlzdCk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
YW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFRyYW5z
Zm9ybUxpc3QpKTsKKyAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS50cmFuc2Zvcm1MaXN0ID0gdHJh
bnNmb3JtTGlzdDsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKK30KKwogU1ZH
QW5nbGUmIFNWR0FuaW1hdGVkVHlwZTo6YW5nbGUoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0g
QW5pbWF0ZWRBbmdsZSk7CkBAIC0yODksNiArMzAxLDEyIEBAIFN0cmluZyYgU1ZHQW5pbWF0ZWRU
eXBlOjpzdHJpbmcoKQogICAgIHJldHVybiAqbV9kYXRhLnN0cmluZzsKIH0KIAorU1ZHVHJhbnNm
b3JtTGlzdCYgU1ZHQW5pbWF0ZWRUeXBlOjp0cmFuc2Zvcm1MaXN0KCkKK3sKKyAgICBBU1NFUlQo
bV90eXBlID09IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7CisgICAgcmV0dXJuICptX2RhdGEudHJh
bnNmb3JtTGlzdDsKK30KKwogU3RyaW5nIFNWR0FuaW1hdGVkVHlwZTo6dmFsdWVBc1N0cmluZygp
CiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKQEAgLTMzOCw2ICszNTYsOSBAQCBTdHJpbmcgU1ZH
QW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkKICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgog
ICAgICAgICBBU1NFUlQobV9kYXRhLnN0cmluZyk7CiAgICAgICAgIHJldHVybiAqbV9kYXRhLnN0
cmluZzsKKyAgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CisgICAgICAgIEFTU0VSVCht
X2RhdGEudHJhbnNmb3JtTGlzdCk7CisgICAgICAgIHJldHVybiBtX2RhdGEudHJhbnNmb3JtTGlz
dC0+dmFsdWVBc1N0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTQxNCw2ICs0MzUsNyBAQCBib29sIFNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmlu
Zyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaQogICAgICAgICBBU1NF
UlQobV9kYXRhLnN0cmluZyk7CiAgICAgICAgICptX2RhdGEuc3RyaW5nID0gdmFsdWU7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OgogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTQyOSwx
MCArNDUxLDExIEBAIHZvaWQgU1ZHQW5pbWF0ZWRUeXBlOjpzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlv
QmFzZVZhbHVlKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0CiAKIGJvb2wgU1ZHQW5pbWF0ZWRU
eXBlOjpzdXBwb3J0c0FuaW1WYWwoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBsaXN0cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBvdXIgYW5pbVZhbCBzdXBw
b3J0OiBvbmx5IFNWR0xlbmd0aCBpcyBzdXBwb3J0ZWQgZm9yIG5vdy4KKyAgICAvLyBGSVhNRTog
VGhpcyBsaXN0cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBvdXIgYW5pbVZhbCBzdXBwb3J0LgogICAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmlt
YXRlZExlbmd0aExpc3Q6CisgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVk
Qm9vbGVhbjoKQEAgLTQ0Nyw3ICs0NzAsNiBAQCBib29sIFNWR0FuaW1hdGVkVHlwZTo6c3VwcG9y
dHNBbmltVmFsKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUpCiAgICAgY2FzZSBBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW86CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmlt
YXRlZFN0cmluZzoKLSAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKICAgICBjYXNlIEFu
aW1hdGVkVW5rbm93bjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQ1OCw3ICs0
ODAsNyBAQCBib29sIFNWR0FuaW1hdGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKEFuaW1hdGVkUHJv
cGVydHlUeXBlIHR5cGUpCiAKIHZvaWQgU1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1ZShTVkdHZW5l
cmljQW5pbWF0ZWRUeXBlIHR5cGUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgbGlzdHMgdGhlIGN1
cnJlbnQgc3RhdGUgb2Ygb3VyIGFuaW1WYWwgc3VwcG9ydDogb25seSBTVkdMZW5ndGggaXMgc3Vw
cG9ydGVkIGZvciBub3cuCisgICAgLy8gRklYTUU6IFRoaXMgbGlzdHMgdGhlIGN1cnJlbnQgc3Rh
dGUgb2Ygb3VyIGFuaW1WYWwgc3VwcG9ydC4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgICAgICptX2RhdGEubGVuZ3RoID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8U1ZHTGVuZ3RoKj4odHlwZSk7CkBAIC00NjYsNiArNDg4LDkgQEAgdm9pZCBTVkdBbmlt
YXRlZFR5cGU6OnNldFZhbHVlKFNWR0dlbmVyaWNBbmltYXRlZFR5cGUgdHlwZSkKICAgICBjYXNl
IEFuaW1hdGVkTGVuZ3RoTGlzdDoKICAgICAgICAgKm1fZGF0YS5sZW5ndGhMaXN0ID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8U1ZHTGVuZ3RoTGlzdCo+KHR5cGUpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CisgICAgICAgICptX2RhdGEudHJhbnNmb3JtTGlz
dCA9ICpyZWludGVycHJldF9jYXN0PFNWR1RyYW5zZm9ybUxpc3QqPih0eXBlKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVh
bjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC00NzksNyArNTA0LDYgQEAgdm9pZCBTVkdB
bmltYXRlZFR5cGU6OnNldFZhbHVlKFNWR0dlbmVyaWNBbmltYXRlZFR5cGUgdHlwZSkKICAgICBj
YXNlIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzoKICAgICBjYXNlIEFuaW1hdGVkUmVjdDoK
ICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgotICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
OgogICAgIGNhc2UgQW5pbWF0ZWRVbmtub3duOgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKaW5kZXggYmEzZDI5NC4uYjhmNzM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBTVkdO
dW1iZXJMaXN0OwogY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW07CiBjbGFzcyBTVkdQb2ludExpc3Q7
CiBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOworY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsK
IAogY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gY3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVSZWN0KEZs
b2F0UmVjdCopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRl
U3RyaW5nKFN0cmluZyopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y3JlYXRlVHJhbnNmb3JtTGlzdChTVkdUcmFuc2Zvcm1MaXN0Kik7CiAgICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNBbmltVmFsKEFuaW1hdGVkUHJvcGVydHlUeXBlKTsKIAogICAgIEFuaW1hdGVkUHJv
cGVydHlUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTc0LDYgKzc2LDcg
QEAgcHVibGljOgogICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0
aW8oKTsKICAgICBGbG9hdFJlY3QmIHJlY3QoKTsKICAgICBTdHJpbmcmIHN0cmluZygpOworICAg
IFNWR1RyYW5zZm9ybUxpc3QmIHRyYW5zZm9ybUxpc3QoKTsKIAogICAgIC8vIFVzZSB3aXRoIGNh
cmUsIHRoZSBhY3R1YWwgdHlwZSBvZiB0aGUgZ2VuZXJpYyBhbmltYXRlZCBvYmplY3QgaGFzIHRv
IGJlIGVxdWFsIHRvIG91ciB0eXBlKCkuCiAgICAgdm9pZCBzZXRWYWx1ZShTVkdHZW5lcmljQW5p
bWF0ZWRUeXBlKTsKQEAgLTEwOSw2ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBTVkdQb2lu
dExpc3QqIHBvaW50TGlzdDsKICAgICAgICAgRmxvYXRSZWN0KiByZWN0OwogICAgICAgICBTdHJp
bmcqIHN0cmluZzsKKyAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCogdHJhbnNmb3JtTGlzdDsKICAg
ICAgICAgU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSB2YXJpYW50OwogICAgIH0gbV9kYXRhOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAppbmRleCBmYmM3NDZmLi4wMjhk
YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIK
KyNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC03Niw4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcihhbmltYXRpb25FbGVt
ZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlz
dDoKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0QW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAg
Y2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOiAvLyBGSVhNRTogSW1wbGVtZW50YXRpb24gbmVlZGVk
LgotICAgICAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDogLy8gRklYTUU6IEltcGxlbWVu
dGF0aW9uIG5lZWRlZC4KICAgICAgICAgY2FzZSBBbmltYXRlZFVua25vd246CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmNwcAppbmRleCBjOTU5NDY0Li4wN2E4OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
ZGllbnRFbGVtZW50LmNwcApAQCAtOTEsOSArOTEsNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSB7CiAgICAgICAgIFNWR1RyYW5z
Zm9ybUxpc3QgbmV3TGlzdDsKLSAgICAgICAgaWYgKCFTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRy
YW5zZm9ybUF0dHJpYnV0ZShuZXdMaXN0LCBhdHRyLT52YWx1ZSgpKSkKLSAgICAgICAgICAgIG5l
d0xpc3QuY2xlYXIoKTsKLQorICAgICAgICBuZXdMaXN0LnBhcnNlKGF0dHItPnZhbHVlKCkpOwog
ICAgICAgICBkZXRhY2hBbmltYXRlZEdyYWRpZW50VHJhbnNmb3JtTGlzdFdyYXBwZXJzKG5ld0xp
c3Quc2l6ZSgpKTsKICAgICAgICAgc2V0R3JhZGllbnRUcmFuc2Zvcm1CYXNlVmFsdWUobmV3TGlz
dCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
Y3BwCmluZGV4IDhiZjk3YjMuLjc4MGY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcApAQCAtMTI3LDkgKzEyNyw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgcmV0dXJuOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikg
ewogICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0IG5ld0xpc3Q7Ci0gICAgICAgIGlmICghU1ZHVHJh
bnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUobmV3TGlzdCwgYXR0ci0+dmFsdWUo
KSkpCi0gICAgICAgICAgICBuZXdMaXN0LmNsZWFyKCk7Ci0KKyAgICAgICAgbmV3TGlzdC5wYXJz
ZShhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRQYXR0ZXJuVHJhbnNmb3Jt
TGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0UGF0dGVyblRyYW5zZm9y
bUJhc2VWYWx1ZShuZXdMaXN0KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKaW5kZXggOTljMTc4
MS4uMWJkNzYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuY3BwCkBAIC0xMDYsOCArMTA2LDcgQEAgdm9pZCBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewogICAgICAg
ICBTVkdUcmFuc2Zvcm1MaXN0IG5ld0xpc3Q7Ci0gICAgICAgIGlmICghU1ZHVHJhbnNmb3JtYWJs
ZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUobmV3TGlzdCwgYXR0ci0+dmFsdWUoKSkpCi0gICAg
ICAgICAgICBuZXdMaXN0LmNsZWFyKCk7CisgICAgICAgIG5ld0xpc3QucGFyc2UoYXR0ci0+dmFs
dWUoKSk7CiAgICAgICAgIGRldGFjaEFuaW1hdGVkVHJhbnNmb3JtTGlzdFdyYXBwZXJzKG5ld0xp
c3Quc2l6ZSgpKTsKICAgICAgICAgc2V0VHJhbnNmb3JtQmFzZVZhbHVlKG5ld0xpc3QpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAppbmRleCA1NGE2
NGE1Li5jYzhiNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKQEAgLTcz
LDkgKzczLDcgQEAgdm9pZCBTVkdUZXh0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0
cikgewogICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0IG5ld0xpc3Q7Ci0gICAgICAgIGlmICghU1ZH
VHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUobmV3TGlzdCwgYXR0ci0+dmFs
dWUoKSkpCi0gICAgICAgICAgICBuZXdMaXN0LmNsZWFyKCk7Ci0KKyAgICAgICAgbmV3TGlzdC5w
YXJzZShhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRUcmFuc2Zvcm1CYXNlVmFsdWUo
bmV3TGlzdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAK
aW5kZXggNzBiZGFkNy4uMmNlOTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAK
QEAgLTEyOSw0OSArMTI5LDc1IEBAIHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRTa2V3WShmbG9hdCBh
bmdsZSkKICAgICBtX21hdHJpeC5za2V3WShhbmdsZSk7CiB9CiAKLVN0cmluZyBTVkdUcmFuc2Zv
cm06OnZhbHVlQXNTdHJpbmcoKSBjb25zdAorY29uc3QgU3RyaW5nJiBTVkdUcmFuc2Zvcm06OnRy
YW5zZm9ybVR5cGVQcmVmaXhGb3JQYXJzaW5nKFNWR1RyYW5zZm9ybVR5cGUgdHlwZSkKIHsKLSAg
ICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU1ZHX1RS
QU5TRk9STV9VTktOT1dOOgotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9NQVRSSVg6IHsKICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG1hdHJpeFN0cmluZywgKCJtYXRyaXgoIikp
OwotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1hdHJpeFN0cmluZyArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LmEoKSkgKyAnICcgKyBTdHJp
bmc6Om51bWJlcihtX21hdHJpeC5iKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIobV9tYXRyaXgu
YygpKSArICcgJyArCi0gICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6bnVtYmVyKG1fbWF0
cml4LmQoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX21hdHJpeC5lKCkpICsgJyAnICsgU3Ry
aW5nOjpudW1iZXIobV9tYXRyaXguZigpKSArICcpJyk7Ci0gICAgICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtYXRyaXhTdHJpbmc7CiAgICAgfQogICAgIGNh
c2UgU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6IHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHRyYW5zbGF0ZVN0cmluZywgKCJ0cmFuc2xhdGUoIikpOwotICAgICAgICByZXR1
cm4gdHJhbnNsYXRlU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9tYXRyaXguZSgpKSArICcgJyAr
IFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LmYoKSkgKyAnKSc7CisgICAgICAgIHJldHVybiB0cmFu
c2xhdGVTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TQ0FMRTogewogICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2NhbGVTdHJpbmcsICgic2NhbGUoIikp
OwotICAgICAgICByZXR1cm4gc2NhbGVTdHJpbmcgKyBTdHJpbmc6Om51bWJlcihtX21hdHJpeC54
U2NhbGUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX21hdHJpeC55U2NhbGUoKSkgKyAnKSc7
CisgICAgICAgIHJldHVybiBzY2FsZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNG
T1JNX1JPVEFURTogewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcm90YXRl
U3RyaW5nLCAoInJvdGF0ZSgiKSk7Ci0gICAgICAgIGRvdWJsZSBhbmdsZUluUmFkID0gZGVnMnJh
ZChtX2FuZ2xlKTsKLSAgICAgICAgZG91YmxlIGNvc0FuZ2xlID0gY29zKGFuZ2xlSW5SYWQpOwot
ICAgICAgICBkb3VibGUgc2luQW5nbGUgPSBzaW4oYW5nbGVJblJhZCk7Ci0gICAgICAgIGZsb2F0
IGN4ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LmUo
KSAqICgxIC0gY29zQW5nbGUpIC0gbV9tYXRyaXguZigpICogc2luQW5nbGUpIC8gKDEgLSBjb3NB
bmdsZSkgLyAyIDogMCk7Ci0gICAgICAgIGZsb2F0IGN5ID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LmUoKSAqIHNpbkFuZ2xlIC8gKDEgLSBjb3NBbmds
ZSkgKyBtX21hdHJpeC5mKCkpIC8gMiA6IDApOwotICAgICAgICBpZiAoY3ggfHwgY3kpCi0gICAg
ICAgICAgICByZXR1cm4gcm90YXRlU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9hbmdsZSkgKyAn
ICcgKyBTdHJpbmc6Om51bWJlcihjeCkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihjeSkgKyAnKSc7
Ci0gICAgICAgIHJldHVybiByb3RhdGVTdHJpbmcgKyBTdHJpbmc6Om51bWJlcihtX2FuZ2xlKSAr
ICcpJzsKKyAgICAgICAgcmV0dXJuIHJvdGF0ZVN0cmluZzsKICAgICB9ICAgIAogICAgIGNhc2Ug
U1ZHX1RSQU5TRk9STV9TS0VXWDogewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
Zywgc2tld1hTdHJpbmcsICgic2tld1goIikpOwotICAgICAgICByZXR1cm4gc2tld1hTdHJpbmcg
KyBTdHJpbmc6Om51bWJlcihtX2FuZ2xlKSArICcpJzsKKyAgICAgICAgcmV0dXJuIHNrZXdYU3Ry
aW5nOwogICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1k6IHsKICAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNrZXdZU3RyaW5nLCAoInNrZXdZKCIpKTsKLSAgICAg
ICAgcmV0dXJuIHNrZXdZU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9hbmdsZSkgKyAnKSc7Cisg
ICAgICAgIHJldHVybiBza2V3WVN0cmluZzsKICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOworfQorCitTdHJpbmcgU1ZHVHJhbnNmb3JtOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK3sK
KyAgICBjb25zdCBTdHJpbmcmIHByZWZpeCA9IHRyYW5zZm9ybVR5cGVQcmVmaXhGb3JQYXJzaW5n
KG1fdHlwZSk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFNWR19UUkFOU0ZPUk1f
VU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIHByZWZpeDsKKyAgICBjYXNlIFNWR19UUkFOU0ZPUk1f
TUFUUklYOiB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQocHJlZml4ICsgU3RyaW5nOjpudW1iZXIobV9tYXRyaXguYSgpKSArICcgJyArIFN0
cmluZzo6bnVtYmVyKG1fbWF0cml4LmIoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX21hdHJp
eC5jKCkpICsgJyAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpudW1iZXIobV9t
YXRyaXguZCgpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LmUoKSkgKyAnICcgKyBT
dHJpbmc6Om51bWJlcihtX21hdHJpeC5mKCkpICsgJyknKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKKyAgICB9CisgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURToK
KyAgICAgICAgcmV0dXJuIHByZWZpeCArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LmUoKSkgKyAn
ICcgKyBTdHJpbmc6Om51bWJlcihtX21hdHJpeC5mKCkpICsgJyknOworICAgIGNhc2UgU1ZHX1RS
QU5TRk9STV9TQ0FMRToKKyAgICAgICAgcmV0dXJuIHByZWZpeCArIFN0cmluZzo6bnVtYmVyKG1f
bWF0cml4LnhTY2FsZSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LnlTY2FsZSgp
KSArICcpJzsKKyAgICBjYXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRFOiB7CisgICAgICAgIGRvdWJs
ZSBhbmdsZUluUmFkID0gZGVnMnJhZChtX2FuZ2xlKTsKKyAgICAgICAgZG91YmxlIGNvc0FuZ2xl
ID0gY29zKGFuZ2xlSW5SYWQpOworICAgICAgICBkb3VibGUgc2luQW5nbGUgPSBzaW4oYW5nbGVJ
blJhZCk7CisgICAgICAgIGZsb2F0IGN4ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb3NBbmds
ZSAhPSAxID8gKG1fbWF0cml4LmUoKSAqICgxIC0gY29zQW5nbGUpIC0gbV9tYXRyaXguZigpICog
c2luQW5nbGUpIC8gKDEgLSBjb3NBbmdsZSkgLyAyIDogMCk7CisgICAgICAgIGZsb2F0IGN5ID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LmUoKSAqIHNp
bkFuZ2xlIC8gKDEgLSBjb3NBbmdsZSkgKyBtX21hdHJpeC5mKCkpIC8gMiA6IDApOworICAgICAg
ICBpZiAoY3ggfHwgY3kpCisgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgU3RyaW5nOjpudW1i
ZXIobV9hbmdsZSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihjeCkgKyAnICcgKyBTdHJpbmc6Om51
bWJlcihjeSkgKyAnKSc7CisgICAgICAgIHJldHVybiBwcmVmaXggKyBTdHJpbmc6Om51bWJlciht
X2FuZ2xlKSArICcpJzsKKyAgICB9ICAgIAorICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWDoK
KyAgICAgICAgcmV0dXJuIHByZWZpeCArIFN0cmluZzo6bnVtYmVyKG1fYW5nbGUpICsgJyknOwor
ICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWToKKyAgICAgICAgcmV0dXJuIHByZWZpeCArIFN0
cmluZzo6bnVtYmVyKG1fYW5nbGUpICsgJyknOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgKaW5kZXggMTQ3MThhZS4uNmEwOGI3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaApAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IFNWR19UUkFOU0ZPUk1f
VU5LTk9XTjsgfQogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAKKyAgICBzdGF0
aWMgY29uc3QgU3RyaW5nJiB0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhTVkdUcmFuc2Zv
cm1UeXBlKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNW
R1RyYW5zZm9ybSYgYSwgY29uc3QgU1ZHVHJhbnNmb3JtJiBiKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuY3BwCmluZGV4IDVjYzg0OTIuLmQ5NzQ2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NzMsNiArNzQsMTMgQEAgU3RyaW5nIFNWR1RyYW5zZm9ybUxpc3Q6OnZhbHVlQXNTdHJpbmcoKSBj
b25zdAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgU1ZHVHJhbnNm
b3JtTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB0cmFuc2Zvcm0pCit7CisgICAgY29uc3QgVUNo
YXIqIHN0YXJ0ID0gdHJhbnNmb3JtLmNoYXJhY3RlcnMoKTsKKyAgICBpZiAoIVNWR1RyYW5zZm9y
bWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKCp0aGlzLCBzdGFydCwgc3RhcnQgKyB0cmFu
c2Zvcm0ubGVuZ3RoKCkpKQorICAgICAgICBjbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1MaXN0LmgKaW5kZXggMGFmYzgzMi4uMTRhYmEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtTGlzdC5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbmNhdGVu
YXRlKEFmZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25zdDsKICAKICAgICBTdHJpbmcgdmFsdWVB
c1N0cmluZygpIGNvbnN0OworICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CiB9OwogCiB0
ZW1wbGF0ZTw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKaW5kZXggZDQx
OTNiYy4uMDk0Y2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bWFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcApA
QCAtMTcwLDEwICsxNzAsMTIgQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlQW5kU2tpcFR5cGUo
Y29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW4KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0
ZShTVkdUcmFuc2Zvcm1MaXN0JiBsaXN0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zZm9ybSkK
K1NWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRy
YW5zZm9ybVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewotICAgIGNvbnN0IFVDaGFy
KiBzdGFydCA9IHRyYW5zZm9ybS5jaGFyYWN0ZXJzKCk7Ci0gICAgcmV0dXJuIHBhcnNlVHJhbnNm
b3JtQXR0cmlidXRlKGxpc3QsIHN0YXJ0LCBzdGFydCArIHRyYW5zZm9ybS5sZW5ndGgoKSk7Cisg
ICAgdW5zaWduZWQgc2hvcnQgdHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9VTktO
T1dOOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdHlwZVN0cmluZy5jaGFyYWN0ZXJz
KCk7CisgICAgcGFyc2VBbmRTa2lwVHlwZShjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsgdHlwZVN0
cmluZy5sZW5ndGgoKSwgdHlwZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1RyYW5zZm9y
bTo6U1ZHVHJhbnNmb3JtVHlwZT4odHlwZSk7CiB9CiAKIGJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6
cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCYgbGlzdCwgY29uc3QgVUNo
YXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW5kLCBUcmFuc2Zvcm1QYXJzaW5nTW9k
ZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKaW5kZXggZmZkOWNlZS4u
NzE2OGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCkBAIC0yMiwxNiAr
MjIsMTQgQEAKICNkZWZpbmUgU1ZHVHJhbnNmb3JtYWJsZV9oCiAKICNpZiBFTkFCTEUoU1ZHKQot
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCisj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgot
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLWNs
YXNzIFNWR1RyYW5zZm9ybTsKLWNsYXNzIFF1YWxpZmllZE5hbWU7CiAKIGNsYXNzIFNWR1RyYW5z
Zm9ybWFibGUgOiB2aXJ0dWFsIHB1YmxpYyBTVkdMb2NhdGFibGUgewogcHVibGljOgpAQCAtNDIs
OSArNDAsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1hYmxlKCk7CiAK
LSAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0
JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2Zvcm0pOwogICAgIHN0YXRpYyBib29sIHBhcnNl
VHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3QmLCBjb25zdCBVQ2hhciomIHB0ciwg
Y29uc3QgVUNoYXIqIGVuZCwgVHJhbnNmb3JtUGFyc2luZ01vZGUgbW9kZSA9IENsZWFyTGlzdCk7
CiAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1WYWx1ZSh1bnNpZ25lZCB0eXBlLCBjb25z
dCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtJik7CisgICAgc3Rh
dGljIFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSBwYXJzZVRyYW5zZm9ybVR5cGUoY29u
c3QgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5h
dGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCB7IHJldHVybiBh
bmltYXRlZExvY2FsVHJhbnNmb3JtKCk7IH0KICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBh
bmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3Bl
Yy5jcHAKaW5kZXggY2U3YmQxOS4uZDA5ZWE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ZpZXdTcGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIFNWR1ZpZXdTcGVjOjpTVkdWaWV3U3BlYyhTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCkKIAogdm9pZCBTVkdWaWV3U3BlYzo6c2V0VHJhbnNmb3JtKGNvbnN0
IFN0cmluZyYgdHJhbnNmb3JtKQogewotICAgIFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNm
b3JtQXR0cmlidXRlKG1fdHJhbnNmb3JtLCB0cmFuc2Zvcm0pOworICAgIG1fdHJhbnNmb3JtLnBh
cnNlKHRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgU1ZHVmlld1NwZWM6OnNldFZpZXdCb3hTdHJpbmco
Y29uc3QgU3RyaW5nJiB2aWV3Qm94U3RyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132016</attachid>
            <date>2012-03-15 04:01:40 -0700</date>
            <delta_ts>2012-03-15 04:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80758-20120315120136.patch</filename>
            <type>text/plain</type>
            <size>69365</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdlOTg1MmVmOTFhZTU2
YzNhNjIwMzk2NDQyNDhhZTE5Y2E0MzY4Ny4uNGNlYzBmYWE5ZWE4MDQ3MjBmOTFlZWU0YWMxZmRj
OTQ0ODQ4ZWIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTE1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEVuYWJsZSBh
bmltVmFsIHN1cHBvcnQgZm9yIFNWR1RyYW5zZm9ybUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGFuaW1WYWwgc3VwcG9ydCBmb3IgU1ZH
VHJhbnNmb3JtTGlzdC4gU1ZHVHJhbnNmb3JtTGlzdHMgYXJlIG9ubHkgYW5pbWF0YWJsZQorICAg
ICAgICB2aWEgPGFuaW1hdGVUcmFuc2Zvcm0+LCBub3QgdmlhIDxhbmltYXRlPiBkaXJlY3RseS4g
U3RpbGwgd2UgY2FuIGhhbmRsZSBpdCBpbiB0aGUKKyAgICAgICAgc2FtZSBmcmFtZXdvcmsgYXMg
YWxsIG90aGVyIHR5cGVzIHVzZWQgZm9yIDxhbmltYXRlPiwgYXMgd2UgYWxzbyBuZWVkIHByb3Bl
ciBhbmltVmFsCisgICAgICAgIHN1cHBvcnQgZm9yIDxhbmltYXRlVHJhbnNmb3JtPi4KKworICAg
ICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIHNwZWNpYWwgPGFuaW1hdGVUcmFuc2Zvcm0+IGlt
cGxlbWVudGF0aW9uLCBhbmQgbGV0cworICAgICAgICBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dCBpbmhlcml0IGZyb20gU1ZHQW5pbWF0ZUVsZW1lbnQsIGp1c3QgbGlrZSBpdHMgZG9uZQorICAg
ICAgICBmb3IgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAmIFNWR1NldEVsZW1lbnQuCisKKyAgICAg
ICAgQWxsIGV4aXN0aW5nIGNvZGUgKGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcy9Gcm9tQW5kQnlW
YWx1ZXMvZXRjLi4pIGFyZSBtb3ZlZCBmcm9tCisgICAgICAgIFNWR0FuaW1hdGVUcmFuc2Zvcm0g
cmlnaHQgaW50byB0aGUgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IuCisKKyAgICAg
ICAgVGhpcyBkb2Vzbid0IGNoYW5nZSA8YW5pbWF0ZVRyYW5zZm9ybT4gYmVoYXZpb3IsIGl0IGp1
c3Qgc2ltcGxpZXMgdGhlIGNvZGUKKyAgICAgICAgYW5kIGVuYWJsZXMgYW5pbVZhbCBzdXBwb3J0
IGZvciBTVkdUcmFuc2Zvcm1MaXN0cyAtIGFsbCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3ZnL1NW
R0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZFByb3Bl
cnR5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6YXBw
bHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnRyYW5zZm9ybVR5cGUpOgorICAgICAgICAoU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tQ29weSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRnJv
bUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNh
bGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFu
aW1hdG9yOjp+U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBl
Ojp+U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6
Y3JlYXRlVHJhbnNmb3JtTGlzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkVHlwZTo6dHJhbnNmb3JtTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRUeXBlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VHlwZTo6c2V0VmFyaWFudFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NW
R1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUcmFuc2Zvcm06OnRyYW5zZm9ybVR5cGVQcmVmaXhGb3JQYXJzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjp2YWx1ZUFz
U3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmg6CisgICAgICAgIChTVkdUcmFu
c2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RyYW5zZm9ybUxpc3Q6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgIChTVkdUcmFuc2Zvcm1MaXN0
KToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdUcmFuc2Zvcm1hYmxlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvU1ZH
Vmlld1NwZWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnNldFRyYW5zZm9y
bSk6CisKIDIwMTItMDMtMTMgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CiAKICAgICAgICAgRW5hYmxlIGFuaW1WYWwgc3VwcG9ydCBmb3IgU1ZHTGVuZ3RoTGlzdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkYTRjOWM5ODg3ODE1NzZiM2VjYjM5OTg0NGI3ZTQwMzNh
ZDhmYjM1Li40MmZhMDAyMTBmZGQ3M2E4NGNiM2I2ZTBmZmNhM2EzZGU4NDFkNDE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTc3MCw2ICsxNzcwLDcgQEAgSUYgKEVOQUJMRV9TVkcpCiAgICAg
ICAgIHN2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCiAgICAgICAgIHN2Zy9T
VkdBbmltYXRlZFJlY3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKKyAg
ICAgICAgc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKICAgICAgICAgc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAogICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA5YjU4Yzk1MmFiZTcwOTU2Njg1MzA3YTI0Yzg4YWU3ZTU0YTJiNTYzLi5hODdh
ZTFjOWUyNjM4Yjg4MDJhZGJmNzU5NzY1MzA1NjA5NjMxYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTQxMDAsNiArNDEwMCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuaCBcCisJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBlY2ZkNjQ3NDY1MTY0
OTM2N2E4MzQwMDcwMzEwZGE2NjAxMWIwZTYwLi4wNjNhYTQwMjEwNTRjMGYzOTI3OWY4Mjk4YTE0
NGY0OWFhMDZmNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM1MDEsNiArMzUwMSw3IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFJl
Y3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcCBcCisgICAg
ICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIFwKICAgICAgICAgICAg
ICAgc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0
ZUVsZW1lbnQuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzVmMGM4ZjA1YmNjZjRlYjg5MmFiYjgwYmYyN2Ri
NjkyZDIwZjFjZS4uODUxYjhiNTAyZTAzNTgyNDUxMjczNzI2ODQ2MDU2OTM2N2VlYzU4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtNTgxMyw2ICs1ODEzLDcgQEAKICAgICAgICAgICAgICdzdmcvU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0Fu
aW1hdGVkUmVjdC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAn
LAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwJywKICAgICAg
ICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGQ4ZTU3ZGJkMDcxOGI0Yjk0NjAyMmZjY2FjZWEyNjlmMzg5Yjc1MzMuLjUxZmJmNDI4
YzNhOTgyZjQwNmE1ZDhiNTcyMGJjMTkzNWNhNWY1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODgsNiArMTc4OCw3IEBA
CiAJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzQ0OTZCMTQ2OTQx
QjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCAqLzsgfTsKIAkJNzEzNDQ5NkUxNDY5
NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzQ0OTZDMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdM
ZW5ndGhDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTUzNzlGRjE0NkJEOUQ2
MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuaCAqLzsgfTsKKwkJNzE1N0YwNjIxNTBCNjU2NDAwNkVB
QUJEIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTU3RjA2MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCAqLzsgfTsKIAkJNzFGQjk2N0IxMzgzRDY0NjAwQUM4
QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI5NjdBMTM4M0Q2NDYwMEFD
OEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2MjZFMDIwRUYwMjJG
RTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQ
YXRoLmNwcCAqLzsgfTsKIAkJNzUwRDAyOTMxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0
U3BlZWNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgKi87IH07
CkBAIC04NzM5LDYgKzg3NDAsNyBAQAogCQk3MTM0NDk2QzE0Njk0MUIzMDA3MjAzMTIgLyogU1ZH
TGVuZ3RoQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZW5n
dGhDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTM3OUZFMTQ2QkQ5
RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdQYXRoRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxNTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MTU3RjA2MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI5NjdB
MTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2Zm
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZF
MDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3NTBEMDI5MTExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2gu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW5wdXRTcGVl
Y2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1ODksNiArMTg1OTEsNyBA
QAogCQkJCTQzQTYyNjY2MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0cmluZy5jcHAg
Ki8sCiAJCQkJMDg0REI1OUExMjgwMDhDQzAwMkE2RDY0IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmgg
Ki8sCiAJCQkJQjIyMjc3RjYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkU3RyaW5nLmlk
bCAqLywKKwkJCQk3MTU3RjA2MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0LmNwcCAqLywKIAkJCQkwODI1MDkzODEyOEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0LmggKi8sCiAJCQkJQjIyMjc3RjgwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5pZGwgKi8sCiAJCQkJNDNBMEYwQjUxM0FDQ0NGRjAwQTVG
MEE3IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAgKi8sCkBAIC0yNzU1Niw2ICsyNzU1OSw3IEBACiAJ
CQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzVCNEMyNEUxNTA5MjM2QzAwQTZFRjM3IC8qIFdlYkNvcmVOU1VSTEV4
dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCMkI3QUMxMTUwOTg1MEEwMDg5MzJDQyAvKiBN
aWNyb0RhdGFJdGVtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzE1N0YwNjIxNTBCNjU2
NDAwNkVBQUJEIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCmluZGV4IGUxYTc0MTdmNjYzZGEyNTE4NzM0MzAx
ZDUxY2E1YWY5OWQ3ZmQwOTQuLjRmMDlkNWNiN2M0ZGQ1MDEzMjEyZTNhOTFlYmE2YjAyMWNjZTFl
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRSZWN0LmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5jcHAiCisjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFR5cGUuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmNwcCIKICNpbmNsdWRlICJT
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmNwcAppbmRleCAwNmU0YzgxYmI4YjZhOWEwYTY3MmRhY2E2MmE3ZjBiZTFmMWZiYmE4
Li4wNTllYmM2NjE1ODMzZGVhYzE5N2NlYzQ5ODhhZDU5ZTAxYWY2OWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU1ZHQW5pbWF0
ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2MKICAgICAsIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVy
dHlWYWx1ZSkKICAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eSgwKQogewotICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRU
YWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykpOworICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVz
OjpzZXRUYWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykgfHwgaGFz
VGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOwogfQogCiBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVFbGVtZW50PiBTVkdBbmltYXRlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEzMCw3ICsxMzAsNyBA
QCBBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudAogCiAgICAgLy8gQW5pbWF0aW9ucyBvZiB0cmFuc2Zv
cm0gbGlzdHMgYXJlIG5vdCBhbGxvd2VkIGZvciA8YW5pbWF0ZT4gb3IgPHNldD4KICAgICAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYW5pbWF0ZS5odG1sI0FuaW1hdGlvbkF0dHJpYnV0ZXNB
bmRQcm9wZXJ0aWVzCi0gICAgaWYgKHR5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KQorICAg
IGlmICh0eXBlID09IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCAmJiAhaGFzVGFnTmFtZShTVkdOYW1l
czo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpCiAgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247
CiAKICAgICByZXR1cm4gdHlwZTsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdAogCiAgICAgQVNTRVJUKHBlcmNlbnRhZ2UgPj0gMCAmJiBwZXJjZW50YWdlIDw9IDEp
OwogICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVkRW51bWVyYXRp
b24pOwotICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVkVHJhbnNm
b3JtTGlzdCk7CisgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0IHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcp
KTsKICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFVua25vd24p
OwogICAgIEFTU0VSVChtX2FuaW1hdG9yKTsKICAgICBBU1NFUlQobV9hbmltYXRvci0+dHlwZSgp
ID09IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwpAQCAtMTc2LDYgKzE3Niw3IEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0CiAKICAgICBBU1NFUlQocmVzdWx0RWxlbWVudC0+aGFzVGFnTmFtZShT
VkdOYW1lczo6YW5pbWF0ZVRhZykKICAgICAgICAgfHwgcmVzdWx0RWxlbWVudC0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKQorICAgICAgICB8fCByZXN1bHRFbGVtZW50LT5o
YXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKQogICAgICAgICB8fCByZXN1
bHRFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKTsKIAogICAgIFNWR0FuaW1h
dGVFbGVtZW50KiByZXN1bHRBbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0
ZUVsZW1lbnQqPihyZXN1bHRFbGVtZW50KTsKQEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIFNWR0Fu
aW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYgYmFzZVN0cmluZykK
IHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKIHsKICAgICBB
U1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAg
ICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFRyYW5zZm9ybUxpc3Qp
OworICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVkVHJhbnNmb3Jt
TGlzdCB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSk7CiAgICAg
QVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRVbmtub3duKTsKICAgICBB
U1NFUlQobV9hbmltYXRlZFR5cGUpOwogICAgIHNldFRhcmdldEF0dHJpYnV0ZUFuaW1hdGVkVmFs
dWUobV9hbmltYXRlZFR5cGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKaW5kZXggYzFiYjE5OWUyM2U5YjZlMmUzNzVjY2Rk
ZGQ4NzljYzVjN2MxNzFjNC4uZmFhY2Q0ZTdjZDEyZDlkYTdjZmUzODEyNWJjODI5OGY0ZjU0NjE2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQuY3BwCkBAIC0yNSwzMiArMjUsMTUgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKLSNp
bmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgotI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0jaW5j
bHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCi0jaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlICJTVkdQYXR0ZXJuRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1NWR0VsZW1l
bnQuaCIKLSNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oIgotI2luY2x1
ZGUgIlNWR1RleHRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCi0jaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKLSNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOworI2luY2x1ZGUg
IlNWR1RyYW5zZm9ybWFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IFNWR0Fu
aW1hdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgOiBTVkdBbmltYXRlRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTVkdUcmFuc2Zvcm06OlNWR19UUkFO
U0ZPUk1fVU5LTk9XTikKLSAgICAsIG1fYmFzZUluZGV4SW5UcmFuc2Zvcm1MaXN0KDApCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpKTsKIH0K
QEAgLTYyLDI2ICs0NSw5IEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ+
IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjcmVhdGUoY29uc3QKIAogYm9vbCBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkKIHsKLSAgICBTVkdF
bGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwotICAgIGlmICgh
dGFyZ2V0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVybiBk
ZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFRy
YW5zZm9ybUxpc3Q7Ci19Ci0KLUFuaW1hdGVkUHJvcGVydHlUeXBlIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZShTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50KSBjb25zdAotewotICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICAKLSAg
ICAvLyBKdXN0IHRyYW5zZm9ybSBsaXN0cyBjYW4gYmUgYW5pbWF0ZWQgd2l0aCA8YW5pbWF0ZVRy
YW5zZm9ybT4KLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYW5pbWF0ZS5odG1sI0Fu
aW1hdGlvbkF0dHJpYnV0ZXNBbmRQcm9wZXJ0aWVzCi0gICAgVmVjdG9yPEFuaW1hdGVkUHJvcGVy
dHlUeXBlPiBwcm9wZXJ0eVR5cGVzOwotICAgIHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJvcGVy
dHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSwgcHJvcGVydHlUeXBlcyk7Ci0gICAg
aWYgKHByb3BlcnR5VHlwZXMuaXNFbXB0eSgpIHx8IHByb3BlcnR5VHlwZXNbMF0gIT0gQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0KQotICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOwotCi0gICAg
QVNTRVJUKHByb3BlcnR5VHlwZXMuc2l6ZSgpID09IDEpOwotICAgIHJldHVybiBBbmltYXRlZFRy
YW5zZm9ybUxpc3Q7CisgICAgaWYgKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50
YXJnZXRFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5
VHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiBib29sIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTk1LDE5NCArNjEs
MTggQEAgYm9vbCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck4KIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoIWlzU3Vw
cG9ydGVkQXR0cmlidXRlKGF0dHItPm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHQW5pbWF0aW9uRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CisgICAgICAgIFNWR0FuaW1hdGVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShhdHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7Ci0gICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUgPT0gInRy
YW5zbGF0ZSIpCi0gICAgICAgICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZP
Uk1fVFJBTlNMQVRFOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAic2NhbGUiKQotICAgICAg
ICAgICAgbV90eXBlID0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NDQUxFOwotICAgICAg
ICBlbHNlIGlmICh2YWx1ZSA9PSAicm90YXRlIikKLSAgICAgICAgICAgIG1fdHlwZSA9IFNWR1Ry
YW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9ST1RBVEU7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlID09
ICJza2V3WCIpCi0gICAgICAgICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZP
Uk1fU0tFV1g7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJza2V3WSIpCi0gICAgICAgICAg
ICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1k7CisgICAgICAgIG1f
dHlwZSA9IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZShhdHRyLT52YWx1ZSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IGFuaW1hdGVk
VHJhbnNmb3JtTGlzdEZvcihTVkdFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVt
ZW50KTsKLSAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KGVsZW1l
bnQpLT50cmFuc2Zvcm1BbmltYXRlZCgpOwotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNW
R05hbWVzOjp0ZXh0VGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1RleHRFbGVt
ZW50Kj4oZWxlbWVudCktPnRyYW5zZm9ybUFuaW1hdGVkKCk7Ci0gICAgaWYgKGVsZW1lbnQtPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdO
YW1lKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykpCi0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxTVkdHcmFkaWVudEVsZW1lbnQqPihlbGVtZW50KS0+Z3JhZGllbnRUcmFuc2Zvcm1Bbmlt
YXRlZCgpOwotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFn
KSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1BhdHRlcm5FbGVtZW50Kj4oZWxlbWVu
dCktPnBhdHRlcm5UcmFuc2Zvcm1BbmltYXRlZCgpOwotICAgIHJldHVybiAwOwotfQotICAgIAot
dm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZShjb25zdCBT
dHJpbmcmIGJhc2VWYWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogT25jZSB3ZSBhZGRlZCBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciwgdGhpcyB3aG9sZSBjbGFzcyBpcyB1bm5jZXNzYXJ5
LgotICAgIC8vIFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNzU4LiBPbmNlIHRoaXMgaXMgZml4ZWQgYW5pbVZhbCBzdXBwb3J0Ci0gICAgLy8gZm9yIDxh
bmltYXRlVHJhbnNmb3JtPiBpcyBmaW5pc2hlZCwgYW5kIHRoaXMgY2xhc3MgaXMgYWxtb3N0IGVt
cHR5LgotICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50
KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlU
eXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgbm90IGJlIGNvcnJlY3QgZm9yIGFjY3VtdWxhdGVk
IHN1bS4gTmVlZHMgY2hlY2tpbmcuCi0gICAgaWYgKHRhcmdldEVsZW1lbnQtPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSB8fCB0YXJnZXRFbGVtZW50LT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykpIHsKLSAgICAgICAgdGFyZ2V0RWxlbWVudC0+
c2V0QXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIGJhc2VWYWx1ZS5p
c0VtcHR5KCkgPyAibWF0cml4KDEgMCAwIDEgMCAwKSIgOiBiYXNlVmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmICh0YXJnZXRFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVz
OjpwYXR0ZXJuVGFnKSkgewotICAgICAgICB0YXJnZXRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoU1ZH
TmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCBiYXNlVmFsdWUuaXNFbXB0eSgpID8gIm1hdHJp
eCgxIDAgMCAxIDAgMCkiIDogYmFzZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoYmFzZVZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4gbGlzdCA9IGFuaW1hdGVkVHJhbnNmb3JtTGlzdEZvcih0
YXJnZXRFbGVtZW50KSkgewotICAgICAgICAgICAgU1ZHTGlzdFByb3BlcnR5PFNWR1RyYW5zZm9y
bUxpc3Q+KiBiYXNlVmFsID0gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5PFNWR1RyYW5zZm9y
bUxpc3Q+Kj4obGlzdC0+YmFzZVZhbCgpKTsKLSAgICAgICAgICAgIGJhc2VWYWwtPmRldGFjaExp
c3RXcmFwcGVycygwKTsKLSAgICAgICAgICAgIGJhc2VWYWwtPnZhbHVlcygpLmNsZWFyKCk7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgdGFyZ2V0RWxlbWVudC0+c2V0QXR0cmlidXRl
KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBiYXNlVmFsdWUpOwotfQotCi12b2lkIFNWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqKQotewotICAgIC8vIEZJWE1FOiBP
bmNlIHdlIGFkZGVkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yLCB0aGlzIHdob2xl
IGNsYXNzIGlzIHVubmNlc3NhcnkuCi0gICAgLy8gU2VlIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA3NTguIE9uY2UgdGhpcyBpcyBmaXhlZCBhbmltVmFsIHN1
cHBvcnQKLSAgICAvLyBmb3IgPGFuaW1hdGVUcmFuc2Zvcm0+IGlzIGZpbmlzaGVkLCBhbmQgdGhp
cyBjbGFzcyBpcyBhbG1vc3QgZW1wdHkuCi0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9
IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJt
aW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3du
KQotICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4g
YW5pbWF0ZWRMaXN0ID0gYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Rm9yKHRhcmdldEVsZW1lbnQpOwot
ICAgIEFTU0VSVChhbmltYXRlZExpc3QpOwotICAgIFNWR0xpc3RQcm9wZXJ0eTxTVkdUcmFuc2Zv
cm1MaXN0PiogYmFzZVZhbCA9IHN0YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eTxTVkdUcmFuc2Zv
cm1MaXN0Pio+KGFuaW1hdGVkTGlzdC0+YmFzZVZhbCgpKTsKLSAgICBBU1NFUlQoYmFzZVZhbCk7
Ci0KLSAgICBpZiAoY2FsY01vZGUoKSA9PSBDYWxjTW9kZURpc2NyZXRlKQotICAgICAgICBwZXJj
ZW50YWdlID0gcGVyY2VudGFnZSA8IDAuNSA/IDAgOiAxOwotCi0gICAgaWYgKCFpc0FkZGl0aXZl
KCkpIHsKLSAgICAgICAgYmFzZVZhbC0+ZGV0YWNoTGlzdFdyYXBwZXJzKDApOwotICAgICAgICBi
YXNlVmFsLT52YWx1ZXMoKS5jbGVhcigpOwotICAgIH0KLSAgICBpZiAoaXNBY2N1bXVsYXRlZCgp
ICYmIHJlcGVhdCkKLSAgICAgICAgcGVyY2VudGFnZSArPSByZXBlYXQ7Ci0gICAgU1ZHVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybURpc3RhbmNlKG1fZnJvbVRyYW5zZm9ybSwgbV90
b1RyYW5zZm9ybSkuc2NhbGVkRGlzdGFuY2UocGVyY2VudGFnZSkuYWRkVG9TVkdUcmFuc2Zvcm0o
bV9mcm9tVHJhbnNmb3JtKTsKLSAgICBiYXNlVmFsLT52YWx1ZXMoKS5hcHBlbmQodHJhbnNmb3Jt
KTsKLSAgICBiYXNlVmFsLT53cmFwcGVycygpLmFwcGVuZChSZWZQdHI8U1ZHUHJvcGVydHlUZWFy
T2ZmPFNWR1RyYW5zZm9ybT4gPigpKTsKLX0KLSAgICAKLWJvb2wgU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCi17Ci0gICAgbV9mcm9tVHJhbnNmb3JtID0gcGFy
c2VUcmFuc2Zvcm1WYWx1ZShmcm9tU3RyaW5nKTsKLSAgICBpZiAoIW1fZnJvbVRyYW5zZm9ybS5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3RvVHJhbnNmb3JtID0gcGFy
c2VUcmFuc2Zvcm1WYWx1ZSh0b1N0cmluZyk7Ci0gICAgcmV0dXJuIG1fdG9UcmFuc2Zvcm0uaXNW
YWxpZCgpOwotfQotCi1ib29sIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5
U3RyaW5nKQotewotICAgIG1fZnJvbVRyYW5zZm9ybSA9IHBhcnNlVHJhbnNmb3JtVmFsdWUoZnJv
bVN0cmluZyk7Ci0gICAgaWYgKCFtX2Zyb21UcmFuc2Zvcm0uaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV90b1RyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybURpc3RhbmNlOjph
ZGRTVkdUcmFuc2Zvcm1zKG1fZnJvbVRyYW5zZm9ybSwgcGFyc2VUcmFuc2Zvcm1WYWx1ZShieVN0
cmluZykpOwotICAgIHJldHVybiBtX3RvVHJhbnNmb3JtLmlzVmFsaWQoKTsKLX0KLQotU1ZHVHJh
bnNmb3JtIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpwYXJzZVRyYW5zZm9ybVZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybShtX3R5cGUpOwotICAgIFNWR1RyYW5zZm9ybSByZXN1
bHQ7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgcHJldHR5IGR1bWIgYnV0IHBhcnNlVHJhbnNmb3Jt
VmFsdWUoKSB3YW50cyB0aG9zZSBwYXJlbnRoZXNpcy4KLSAgICBTdHJpbmcgcGFyc2VTdHJpbmco
IigiICsgdmFsdWUgKyAiKSIpOwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSBwYXJzZVN0cmluZy5j
aGFyYWN0ZXJzKCk7Ci0gICAgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZSht
X3R5cGUsIHB0ciwgcHRyICsgcGFyc2VTdHJpbmcubGVuZ3RoKCksIHJlc3VsdCk7IC8vIGlnbm9y
aW5nIHJldHVybiB2YWx1ZQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0gICAgCi12b2lkIFNWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCi17Ci0gICAgU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAo
IXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxl
bWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBh
Y2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBp
cyBub3QgbXVjaCB0byBkbyBoZXJlLgotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
dGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNU
cmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7Ci0gICAgfQotCi0gICAg
Ly8gLi4uZXhjZXB0IGluIGNhc2Ugd2hlcmUgd2UgaGF2ZSBhZGRpdGlvbmFsIGluc3RhbmNlcyBp
biA8dXNlPiB0cmVlcy4KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBhbmlt
YXRlZExpc3QgPSBhbmltYXRlZFRyYW5zZm9ybUxpc3RGb3IodGFyZ2V0RWxlbWVudCk7Ci0gICAg
aWYgKCFhbmltYXRlZExpc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBPbmNl
IHdlIGFkZGVkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yLCB0aGlzIHdob2xlIGNs
YXNzIGlzIHVubmNlc3NhcnkuCi0gICAgLy8gU2VlIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODA3NTguIE9uY2UgdGhpcyBpcyBmaXhlZCBhbmltVmFsIHN1cHBv
cnQKLSAgICAvLyBmb3IgPGFuaW1hdGVUcmFuc2Zvcm0+IGlzIGZpbmlzaGVkLCBhbmQgdGhpcyBj
bGFzcyBpcyBhbG1vc3QgZW1wdHkuCi0gICAgU1ZHTGlzdFByb3BlcnR5PFNWR1RyYW5zZm9ybUxp
c3Q+KiBiYXNlVmFsID0gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5PFNWR1RyYW5zZm9ybUxp
c3Q+Kj4oYW5pbWF0ZWRMaXN0LT5iYXNlVmFsKCkpOwotICAgIEFTU0VSVChiYXNlVmFsKTsKLSAg
ICBTVkdUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zvcm1MaXN0ID0gYmFzZVZhbC0+dmFsdWVzKCk7Ci0K
LSAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBpbnN0YW5jZXMgPSB0YXJn
ZXRFbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCk7Ci0gICAgY29uc3QgSGFzaFNldDxTVkdF
bGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdGFuY2VzLmVuZCgpOwot
ICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBpbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNWR0VsZW1l
bnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCk7Ci0gICAg
ICAgIEFTU0VSVChzaGFkb3dUcmVlRWxlbWVudCk7Ci0gICAgICAgIGlmIChzaGFkb3dUcmVlRWxl
bWVudC0+aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KHNoYWRvd1RyZWVFbGVtZW50KS0+c2V0VHJh
bnNmb3JtQmFzZVZhbHVlKHRyYW5zZm9ybUxpc3QpOwotICAgICAgICBlbHNlIGlmIChzaGFkb3dU
cmVlRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFRhZykpCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxTVkdUZXh0RWxlbWVudCo+KHNoYWRvd1RyZWVFbGVtZW50KS0+c2V0VHJhbnNm
b3JtQmFzZVZhbHVlKHRyYW5zZm9ybUxpc3QpOwotICAgICAgICBlbHNlIGlmIChzaGFkb3dUcmVl
RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcpIHx8IHNoYWRv
d1RyZWVFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykpCi0g
ICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdHcmFkaWVudEVsZW1lbnQqPihzaGFkb3dUcmVlRWxl
bWVudCktPnNldEdyYWRpZW50VHJhbnNmb3JtQmFzZVZhbHVlKHRyYW5zZm9ybUxpc3QpOwotICAg
ICAgICBlbHNlIGlmIChzaGFkb3dUcmVlRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cGF0
dGVyblRhZykpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdQYXR0ZXJuRWxlbWVudCo+KHNo
YWRvd1RyZWVFbGVtZW50KS0+c2V0UGF0dGVyblRyYW5zZm9ybUJhc2VWYWx1ZSh0cmFuc2Zvcm1M
aXN0KTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaGFkb3dUcmVlRWxl
bWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNm
b3JtVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLSAgICAKLWZsb2F0IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVE
aXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3QgaW4gYWxsIGNhc2VzLiBUaGUg
c3BlYyBkZW1hbmRzIHRoYXQgZWFjaCBjb21wb25lbnQgKHRyYW5zbGF0ZSB4IGFuZCB5IGZvciBl
eGFtcGxlKSAKLSAgICAvLyBpcyBwYWNlZCBzZXBhcmF0ZWx5LiBUbyBpbXBsZW1lbnQgdGhpcyB3
ZSBuZWVkIHRvIHRyZWF0IGVhY2ggY29tcG9uZW50IGFzIGluZGl2aWR1YWwgYW5pbWF0aW9uIGV2
ZXJ5d2hlcmUuCi0gICAgU1ZHVHJhbnNmb3JtIGZyb20gPSBwYXJzZVRyYW5zZm9ybVZhbHVlKGZy
b21TdHJpbmcpOwotICAgIGlmICghZnJvbS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAtMTsK
LSAgICBTVkdUcmFuc2Zvcm0gdG8gPSBwYXJzZVRyYW5zZm9ybVZhbHVlKHRvU3RyaW5nKTsKLSAg
ICBpZiAoIXRvLmlzVmFsaWQoKSB8fCBmcm9tLnR5cGUoKSAhPSB0by50eXBlKCkpCi0gICAgICAg
IHJldHVybiAtMTsKLSAgICBpZiAodG8udHlwZSgpID09IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5T
Rk9STV9UUkFOU0xBVEUpIHsKLSAgICAgICAgRmxvYXRTaXplIGRpZmYgPSB0by50cmFuc2xhdGUo
KSAtIGZyb20udHJhbnNsYXRlKCk7Ci0gICAgICAgIHJldHVybiBzcXJ0ZihkaWZmLndpZHRoKCkg
KiBkaWZmLndpZHRoKCkgKyBkaWZmLmhlaWdodCgpICogZGlmZi5oZWlnaHQoKSk7Ci0gICAgfQot
ICAgIGlmICh0by50eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1JPVEFURSkK
LSAgICAgICAgcmV0dXJuIGZhYnNmKHRvLmFuZ2xlKCkgLSBmcm9tLmFuZ2xlKCkpOwotICAgIGlm
ICh0by50eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NDQUxFKSB7Ci0gICAg
ICAgIEZsb2F0U2l6ZSBkaWZmID0gdG8uc2NhbGUoKSAtIGZyb20uc2NhbGUoKTsKLSAgICAgICAg
cmV0dXJuIHNxcnRmKGRpZmYud2lkdGgoKSAqIGRpZmYud2lkdGgoKSArIGRpZmYuaGVpZ2h0KCkg
KiBkaWZmLmhlaWdodCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIC0xOwogfQogCi19CiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50LmgKaW5kZXggYTNkN2Y3OTU3ZGI4YmFiY2E5NGY0ZDE0NDFhNTg0MGFhNTNiY2Ez
OC4uZDMwOGUwYjYyOWM4ODk4NjhiMmEwNjY2ODZiZWU5ZTNkYTNkOGJjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKQEAgLTIyLDQ0ICsy
MiwzMCBAQAogCiAjaWZuZGVmIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50X2gKICNkZWZpbmUg
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnRfaAotI2lmIEVOQUJMRShTVkcpCiAKLSNpbmNsdWRl
ICJTVkdBbmltYXRpb25FbGVtZW50LmgiCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdB
bmltYXRlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgotI2luY2x1ZGUgIlNW
R1RyYW5zZm9ybURpc3RhbmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZm
aW5lVHJhbnNmb3JtOwogCi1jbGFzcyBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCA6IHB1Ymxp
YyBTVkdBbmltYXRpb25FbGVtZW50IHsKK2NsYXNzIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
IDogcHVibGljIFNWR0FuaW1hdGVFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCisgICAgU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm1UeXBlIHRy
YW5zZm9ybVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwogcHJpdmF0ZToKICAgICBT
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCk7Ci0gICAg
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxl
bWVudCopIGNvbnN0OwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSop
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJlc2V0VG9CYXNlVmFsdWUoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1YWwg
Ym9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXQsIFNWR1NNSUxFbGVtZW50
KiByZXN1bHRFbGVtZW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQo
KTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Ci0KLSAgICBTVkdUcmFuc2Zvcm0gcGFy
c2VUcmFuc2Zvcm1WYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICAKICAgICBTVkdUcmFu
c2Zvcm06OlNWR1RyYW5zZm9ybVR5cGUgbV90eXBlOwotICAgIAotICAgIHVuc2lnbmVkIG1fYmFz
ZUluZGV4SW5UcmFuc2Zvcm1MaXN0OwotCi0gICAgU1ZHVHJhbnNmb3JtIG1fdG9UcmFuc2Zvcm07
Ci0gICAgU1ZHVHJhbnNmb3JtIG1fZnJvbVRyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmUzZWQ5NDRkZTk3YWMwZDdjZDdjOWI1NzZiODE2YmNmZDI4MTc3
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdC5oIgorCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCIK
KyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQpCisgICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmlt
YXRlZFRyYW5zZm9ybUxpc3QsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQorewor
ICAgIC8vIE9ubHkgPGFuaW1hdGVUcmFuc2Zvcm0+IHVzZXMgdGhpcyBhbmltYXRvciwgYXMgPGFu
aW1hdGU+IGRvZXNuJ3QgYWxsb3cgdG8gYW5pbWF0ZSB0cmFuc2Zvcm0gbGlzdHMgZGlyZWN0bHku
CisgICAgQVNTRVJUKGFuaW1hdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1h
dGVUcmFuc2Zvcm1UYWcpKTsKK30KKworUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQoreworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlw
ZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3JtTGlzdChuZXcgU1ZHVHJhbnNmb3Jt
TGlzdCk7CisgICAgYW5pbWF0ZWRUeXBlLT50cmFuc2Zvcm1MaXN0KCkucGFyc2Uoc3RyaW5nKTsK
KyAgICBBU1NFUlQoYW5pbWF0ZWRUeXBlLT50cmFuc2Zvcm1MaXN0KCkuc2l6ZSgpIDw9IDEpOwor
ICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZy
b21Db3B5KFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqIGFuaW1hdGVkVHlwZSkKK3sKKyAgICBBU1NF
UlQoYW5pbWF0ZWRUeXBlKTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFu
c2Zvcm1MaXN0KG5ldyBTVkdUcmFuc2Zvcm1MaXN0KCpyZWludGVycHJldF9jYXN0PFNWR1RyYW5z
Zm9ybUxpc3QqPihhbmltYXRlZFR5cGUpKSk7Cit9CisKK2lubGluZSBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZy
b21TdHJpbmcoU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqIGFuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBBU1NFUlQoYW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQpOworICAgIHJldHVybiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6
Y29uc3RydWN0RnJvbVN0cmluZyhTVkdUcmFuc2Zvcm06OnRyYW5zZm9ybVR5cGVQcmVmaXhGb3JQ
YXJzaW5nKGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LT50cmFuc2Zvcm1UeXBlKCkpICsgc3RyaW5n
ICsgJyknKTsKK30KKwordm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZykKK3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAg
ICBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVu
dCk7CisKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhhbmltYXRlVHJhbnNmb3JtRWxl
bWVudCwgZnJvbVN0cmluZyk7CisgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGFuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50LCB0b1N0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCit7CisgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqIGFuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQq
PihtX2FuaW1hdGlvbkVsZW1lbnQpOworCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmco
YW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQsIGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0
RnJvbVN0cmluZyhhbmltYXRlVHJhbnNmb3JtRWxlbWVudCwgYnlTdHJpbmcpOworCisgICAgU1ZH
VHJhbnNmb3JtTGlzdCYgZnJvbVRyYW5zZm9ybUxpc3QgPSBmcm9tLT50cmFuc2Zvcm1MaXN0KCk7
CisgICAgU1ZHVHJhbnNmb3JtTGlzdCYgdG9UcmFuc2Zvcm1MaXN0ID0gdG8tPnRyYW5zZm9ybUxp
c3QoKTsKKyAgICB1bnNpZ25lZCBpdGVtc0NvdW50ID0gZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgp
OworICAgIGlmICghaXRlbXNDb3VudCB8fCBpdGVtc0NvdW50ICE9IHRvVHJhbnNmb3JtTGlzdC5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChpdGVtc0NvdW50ID09IDEpOwor
ICAgIHRvVHJhbnNmb3JtTGlzdFswXSA9IFNWR1RyYW5zZm9ybURpc3RhbmNlOjphZGRTVkdUcmFu
c2Zvcm1zKGZyb21UcmFuc2Zvcm1MaXN0WzBdLCB0b1RyYW5zZm9ybUxpc3RbMF0pOworfQorCit2
b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBhbmltYXRlZCkKK3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50
KTsKKworICAgIC8vIFNwZWM6IFRvIGFuaW1hdGlvbnMgcHJvdmlkZSBzcGVjaWZpYyBmdW5jdGlv
bmFsaXR5IHRvIGdldCBhIHNtb290aCBjaGFuZ2UgZnJvbSB0aGUgdW5kZXJseWluZyB2YWx1ZSB0
byB0aGUKKyAgICAvLyDigJh0b+KAmSBhdHRyaWJ1dGUgdmFsdWUsIHdoaWNoIGNvbmZsaWN0cyBt
YXRoZW1hdGljYWxseSB3aXRoIHRoZSByZXF1aXJlbWVudCBmb3IgYWRkaXRpdmUgdHJhbnNmb3Jt
IGFuaW1hdGlvbnMKKyAgICAvLyB0byBiZSBwb3N0LW11bHRpcGxpZWQuIEFzIGEgY29uc2VxdWVu
Y2UsIGluIFNWRyAxLjEgdGhlIGJlaGF2aW9yIG9mIHRvIGFuaW1hdGlvbnMgZm9yIOKAmGFuaW1h
dGVUcmFuc2Zvcm3igJkgaXMgdW5kZWZpbmVkLgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCB0
YWtlbiBpbnRvIGFjY291bnQgeWV0LgorICAgIFNWR1RyYW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zv
cm1MaXN0ID0gZnJvbS0+dHJhbnNmb3JtTGlzdCgpOworICAgIFNWR1RyYW5zZm9ybUxpc3QmIHRv
VHJhbnNmb3JtTGlzdCA9IHRvLT50cmFuc2Zvcm1MaXN0KCk7CisgICAgQVNTRVJUKGZyb21UcmFu
c2Zvcm1MaXN0LnNpemUoKSA8PSAxKTsKKyAgICBBU1NFUlQodG9UcmFuc2Zvcm1MaXN0LnNpemUo
KSA8PSAxKTsKKyAgICBBU1NFUlQoZnJvbVRyYW5zZm9ybUxpc3RbMF0udHlwZSgpID09IHRvVHJh
bnNmb3JtTGlzdFswXS50eXBlKCkpOworCisgICAgU1ZHVHJhbnNmb3JtIGZyb21UcmFuc2Zvcm07
CisgICAgU1ZHVHJhbnNmb3JtIHRvVHJhbnNmb3JtOworICAgIGlmICghdG9UcmFuc2Zvcm1MaXN0
LmlzRW1wdHkoKSAmJiAhZnJvbVRyYW5zZm9ybUxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGZy
b21UcmFuc2Zvcm0gPSBmcm9tVHJhbnNmb3JtTGlzdFswXTsKKyAgICAgICAgdG9UcmFuc2Zvcm0g
PSB0b1RyYW5zZm9ybUxpc3RbMF07CisgICAgICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtLnR5cGUo
KSA9PSB0b1RyYW5zZm9ybS50eXBlKCkpOworICAgIH0KKworICAgIGlmIChtX2FuaW1hdGlvbkVs
ZW1lbnQtPmNhbGNNb2RlKCkgPT0gQ2FsY01vZGVEaXNjcmV0ZSkKKyAgICAgICAgcGVyY2VudGFn
ZSA9IHBlcmNlbnRhZ2UgPCAwLjUgPyAwIDogMTsKKworICAgIGlmIChtX2FuaW1hdGlvbkVsZW1l
bnQtPmlzQWNjdW11bGF0ZWQoKSAmJiByZXBlYXRDb3VudCkKKyAgICAgICAgcGVyY2VudGFnZSAr
PSByZXBlYXRDb3VudDsKKworICAgIFNWR1RyYW5zZm9ybUxpc3QmIGFuaW1hdGVkVHJhbnNmb3Jt
TGlzdCA9IGFuaW1hdGVkLT50cmFuc2Zvcm1MaXN0KCk7CisgICAgaWYgKCFtX2FuaW1hdGlvbkVs
ZW1lbnQtPmlzQWRkaXRpdmUoKSkKKyAgICAgICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNsZWFy
KCk7CisKKyAgICBhbmltYXRlZFRyYW5zZm9ybUxpc3QuYXBwZW5kKFNWR1RyYW5zZm9ybURpc3Rh
bmNlKGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtKS5zY2FsZWREaXN0YW5jZShwZXJjZW50YWdl
KS5hZGRUb1NWR1RyYW5zZm9ybShmcm9tVHJhbnNmb3JtKSk7Cit9CisKK2Zsb2F0IFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7CisgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqIGFuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQq
PihtX2FuaW1hdGlvbkVsZW1lbnQpOworCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJl
Y3QgaW4gYWxsIGNhc2VzLiBUaGUgc3BlYyBkZW1hbmRzIHRoYXQgZWFjaCBjb21wb25lbnQgKHRy
YW5zbGF0ZSB4IGFuZCB5IGZvciBleGFtcGxlKQorICAgIC8vIGlzIHBhY2VkIHNlcGFyYXRlbHku
IFRvIGltcGxlbWVudCB0aGlzIHdlIG5lZWQgdG8gdHJlYXQgZWFjaCBjb21wb25lbnQgYXMgaW5k
aXZpZHVhbCBhbmltYXRpb24gZXZlcnl3aGVyZS4KKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhhbmltYXRlVHJhbnNmb3JtRWxlbWVudCwgZnJv
bVN0cmluZyk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gdG8gPSBjb25zdHJ1Y3RGcm9t
U3RyaW5nKGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LCB0b1N0cmluZyk7CisKKyAgICBTVkdUcmFu
c2Zvcm1MaXN0JiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZyb20tPnRyYW5zZm9ybUxpc3QoKTsKKyAg
ICBTVkdUcmFuc2Zvcm1MaXN0JiB0b1RyYW5zZm9ybUxpc3QgPSB0by0+dHJhbnNmb3JtTGlzdCgp
OworICAgIHVuc2lnbmVkIGl0ZW1zQ291bnQgPSBmcm9tVHJhbnNmb3JtTGlzdC5zaXplKCk7Cisg
ICAgaWYgKCFpdGVtc0NvdW50IHx8IGl0ZW1zQ291bnQgIT0gdG9UcmFuc2Zvcm1MaXN0LnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgQVNTRVJUKGl0ZW1zQ291bnQgPT0gMSk7Cisg
ICAgaWYgKGZyb21UcmFuc2Zvcm1MaXN0WzBdLnR5cGUoKSAhPSB0b1RyYW5zZm9ybUxpc3RbMF0u
dHlwZSgpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvLyBTcGVjOiBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9TVkcvYW5pbWF0ZS5odG1sI2NvbXBsZXhEaXN0YW5jZXMKKyAgICAvLyBQYWNlZCBh
bmltYXRpb25zIGFzc3VtZSBhIG5vdGlvbiBvZiBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB2YXJpb3Vz
IGFuaW1hdGlvbiB2YWx1ZXMgZGVmaW5lZCBieSB0aGUg4oCYdG/igJksIOKAmGZyb23igJksIOKA
mGJ54oCZIGFuZCDigJh2YWx1ZXPigJkgYXR0cmlidXRlcy4KKyAgICAvLyBEaXN0YW5jZSBpcyBk
ZWZpbmVkIG9ubHkgZm9yIHNjYWxhciB0eXBlcyAoc3VjaCBhcyA8bGVuZ3RoPiksIGNvbG9ycyBh
bmQgdGhlIHN1YnNldCBvZiB0cmFuc2Zvcm1hdGlvbiB0eXBlcyB0aGF0IGFyZSBzdXBwb3J0ZWQg
Ynkg4oCYYW5pbWF0ZVRyYW5zZm9ybeKAmS4KKyAgICByZXR1cm4gU1ZHVHJhbnNmb3JtRGlzdGFu
Y2UoZnJvbVRyYW5zZm9ybUxpc3RbMF0sIHRvVHJhbnNmb3JtTGlzdFswXSkuZGlzdGFuY2UoKTsK
K30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAppbmRleCBiZjgwMzhlOTBhZTI4ZWFhMjVjMDIwZWQy
NzNhMGJhMDkxMjQ2NDc2Li44OTVhMzJmNTZjMGM5YzZjZTA5Y2U4ZjZiMDFhZjFmODA1ZDExMzlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCkBA
IC0yMiw2ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNiArMzUsMjggQEAg
REVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwg
U1ZHVHJhbnNmb3JtTGlzdCwgVXBwZXIKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9S
TV9MSVNUKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KSBcCiBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQogCitjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OworY2xh
c3MgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ7CitjbGFzcyBTVkdHZW5lcmljQW5pbWF0ZWRU
eXBlOworCitjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciA6IHB1YmxpYyBT
VkdBbmltYXRlZFR5cGVBbmltYXRvciB7CitwdWJsaWM6CisgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKKyAgICB2
aXJ0dWFsIH5TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcigpIHsgfQorCisgICAgdmly
dHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tQ29weShTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZyk7CisKK3ByaXZhdGU6CisgICAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0
cnVjdEZyb21TdHJpbmcoU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
KTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCmluZGV4IDNhYmFhYjk1ZDI2YjEy
YTNjNmJkOGU3M2Q4MWI4MDQ5MzA3OGM2MGEuLjQxZTU3OWMwNmZjYjg2NjNhYzJhNjg4YzcwMWRk
ODFmZWMxMGI5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRl
ICJTVkdQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCisj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBA
IC04Nyw2ICs4OCw5IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSgpCiAgICAg
Y2FzZSBBbmltYXRlZFN0cmluZzoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5zdHJpbmc7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OgorICAgICAgICBkZWxl
dGUgbV9kYXRhLnRyYW5zZm9ybUxpc3Q7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTIwNSw2ICsy
MDksMTQgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3Jl
YXRlU3RyaW5nKFN0cmluZyogc3RyaW5nKQogICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFz
ZSgpOwogfQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVUcmFuc2Zvcm1MaXN0KFNWR1RyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybUxpc3QpCit7Cisg
ICAgQVNTRVJUKHRyYW5zZm9ybUxpc3QpOworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFu
aW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0KSk7CisgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEudHJhbnNmb3JtTGlzdCA9IHRyYW5z
Zm9ybUxpc3Q7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKIFNWR0Fu
Z2xlJiBTVkdBbmltYXRlZFR5cGU6OmFuZ2xlKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFu
aW1hdGVkQW5nbGUpOwpAQCAtMjg5LDYgKzMwMSwxMiBAQCBTdHJpbmcmIFNWR0FuaW1hdGVkVHlw
ZTo6c3RyaW5nKCkKICAgICByZXR1cm4gKm1fZGF0YS5zdHJpbmc7CiB9CiAKK1NWR1RyYW5zZm9y
bUxpc3QmIFNWR0FuaW1hdGVkVHlwZTo6dHJhbnNmb3JtTGlzdCgpCit7CisgICAgQVNTRVJUKG1f
dHlwZSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOworICAgIHJldHVybiAqbV9kYXRhLnRyYW5z
Zm9ybUxpc3Q7Cit9CisKIFN0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQog
ewogICAgIHN3aXRjaCAobV90eXBlKSB7CkBAIC0zMzgsNiArMzU2LDkgQEAgU3RyaW5nIFNWR0Fu
aW1hdGVkVHlwZTo6dmFsdWVBc1N0cmluZygpCiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAg
ICAgICAgQVNTRVJUKG1fZGF0YS5zdHJpbmcpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS5zdHJp
bmc7CisgICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OgorICAgICAgICBBU1NFUlQobV9k
YXRhLnRyYW5zZm9ybUxpc3QpOworICAgICAgICByZXR1cm4gbV9kYXRhLnRyYW5zZm9ybUxpc3Qt
PnZhbHVlQXNTdHJpbmcoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBA
IC00MTQsNiArNDM1LDcgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmco
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmkKICAgICAgICAgQVNTRVJU
KG1fZGF0YS5zdHJpbmcpOwogICAgICAgICAqbV9kYXRhLnN0cmluZyA9IHZhbHVlOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC00MjksMTAg
KzQ1MSwxMSBAQCB2b2lkIFNWR0FuaW1hdGVkVHlwZTo6c2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jh
c2VWYWx1ZShjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdAogCiBib29sIFNWR0FuaW1hdGVkVHlw
ZTo6c3VwcG9ydHNBbmltVmFsKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUpCiB7Ci0gICAgLy8g
RklYTUU6IFRoaXMgbGlzdHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygb3VyIGFuaW1WYWwgc3VwcG9y
dDogb25seSBTVkdMZW5ndGggaXMgc3VwcG9ydGVkIGZvciBub3cuCisgICAgLy8gRklYTUU6IFRo
aXMgbGlzdHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygb3VyIGFuaW1WYWwgc3VwcG9ydC4KICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0
ZWRMZW5ndGhMaXN0OgorICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJv
b2xlYW46CkBAIC00NDcsNyArNDcwLDYgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnN1cHBvcnRz
QW5pbVZhbChBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKQogICAgIGNhc2UgQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgIGNhc2UgQW5pbWF0
ZWRTdHJpbmc6Ci0gICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CiAgICAgY2FzZSBBbmlt
YXRlZFVua25vd246CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00NTgsNyArNDgw
LDcgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnN1cHBvcnRzQW5pbVZhbChBbmltYXRlZFByb3Bl
cnR5VHlwZSB0eXBlKQogCiB2b2lkIFNWR0FuaW1hdGVkVHlwZTo6c2V0VmFyaWFudFZhbHVlKFNW
R0dlbmVyaWNBbmltYXRlZFR5cGUqIHR5cGUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgbGlzdHMg
dGhlIGN1cnJlbnQgc3RhdGUgb2Ygb3VyIGFuaW1WYWwgc3VwcG9ydDogb25seSBTVkdMZW5ndGgg
aXMgc3VwcG9ydGVkIGZvciBub3cuCisgICAgLy8gRklYTUU6IFRoaXMgbGlzdHMgdGhlIGN1cnJl
bnQgc3RhdGUgb2Ygb3VyIGFuaW1WYWwgc3VwcG9ydC4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgICAgICptX2RhdGEubGVuZ3RoID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8U1ZHTGVuZ3RoKj4odHlwZSk7CkBAIC00NjYsNiArNDg4LDkgQEAgdm9pZCBT
VkdBbmltYXRlZFR5cGU6OnNldFZhcmlhbnRWYWx1ZShTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiB0
eXBlKQogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgogICAgICAgICAqbV9kYXRhLmxlbmd0
aExpc3QgPSAqcmVpbnRlcnByZXRfY2FzdDxTVkdMZW5ndGhMaXN0Kj4odHlwZSk7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKKyAgICAgICAgKm1fZGF0
YS50cmFuc2Zvcm1MaXN0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8U1ZHVHJhbnNmb3JtTGlzdCo+KHR5
cGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2Ug
QW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKQEAgLTQ3OSw3ICs1MDQs
NiBAQCB2b2lkIFNWR0FuaW1hdGVkVHlwZTo6c2V0VmFyaWFudFZhbHVlKFNWR0dlbmVyaWNBbmlt
YXRlZFR5cGUqIHR5cGUpCiAgICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW86CiAg
ICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKLSAgICBjYXNl
IEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCmluZGV4IDE1
MmUzNGYwNzkwYTM5YjFjMTlmY2FiOTc2YjdlZGM3NjFkMjMwNWIuLjc3ZGM2ZTNkYjA1ZDEyYjJk
YWEwYzkyNmJkOTIyNzZmZGRkNjVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgU1ZHTnVtYmVyTGlzdDsKIGNsYXNzIFNWR1BhdGhC
eXRlU3RyZWFtOwogY2xhc3MgU1ZHUG9pbnRMaXN0OwogY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzsKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKIGNsYXNzIFNWR0FuaW1hdGVkVHlwZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVByZXNlcnZlQXNw
ZWN0UmF0aW8oU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyopOwogICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUmVjdChGbG9hdFJlY3QqKTsKICAgICBzdGF0aWMgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVN0cmluZyhTdHJpbmcqKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVRyYW5zZm9ybUxpc3QoU1ZHVHJh
bnNmb3JtTGlzdCopOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQW5pbVZhbChBbmltYXRlZFBy
b3BlcnR5VHlwZSk7CiAKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CkBAIC03Myw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7CiAgICAgRmxvYXRSZWN0JiByZWN0
KCk7CiAgICAgU3RyaW5nJiBzdHJpbmcoKTsKKyAgICBTVkdUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zv
cm1MaXN0KCk7CiAKICAgICAvLyBVc2Ugd2l0aCBjYXJlLCB0aGUgYWN0dWFsIHR5cGUgb2YgdGhl
IGdlbmVyaWMgYW5pbWF0ZWQgb2JqZWN0IGhhcyB0byBiZSBlcXVhbCB0byBvdXIgdHlwZSgpLgog
ICAgIHZvaWQgc2V0VmFyaWFudFZhbHVlKFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqKTsKQEAgLTEw
OSw2ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBTVkdQb2ludExpc3QqIHBvaW50TGlzdDsK
ICAgICAgICAgRmxvYXRSZWN0KiByZWN0OwogICAgICAgICBTdHJpbmcqIHN0cmluZzsKKyAgICAg
ICAgU1ZHVHJhbnNmb3JtTGlzdCogdHJhbnNmb3JtTGlzdDsKICAgICAgICAgU1ZHR2VuZXJpY0Fu
aW1hdGVkVHlwZSogdmFyaWFudDsKICAgICB9IG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggZmJjNzQ2ZjAwMTc3ZmQ5MTRmOTZhZGNhZTljYzYz
Yjc0NThjYTE5NS4uMDI4ZGFmNjQxNjA1Nzg4NjNlNDM4ODhkM2ExZmVkZGY0MjM0ODg2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUmVjdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCisjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzYsOCArNzcsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50
KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29u
dGV4dEVsZW1lbnQpKTsKKyAgICAgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1h
dG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5p
bWF0ZWRFbnVtZXJhdGlvbjogLy8gRklYTUU6IEltcGxlbWVudGF0aW9uIG5lZWRlZC4KLSAgICAg
ICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6IC8vIEZJWE1FOiBJbXBsZW1lbnRhdGlvbiBu
ZWVkZWQuCiAgICAgICAgIGNhc2UgQW5pbWF0ZWRVbmtub3duOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5k
ZXggYzk1OTQ2NGVhYjNjNTc5OGY4YTIzZGZkNmUyNjljMjFmZjIxNDIyNC4uMDdhODhhZDk2MTlj
ODNlODA2NjBlMWNiZDk4YTQzOWI2ZDllMjQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5jcHAKQEAgLTkxLDkgKzkxLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIAogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikgewogICAgICAgICBTVkdUcmFu
c2Zvcm1MaXN0IG5ld0xpc3Q7Ci0gICAgICAgIGlmICghU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VU
cmFuc2Zvcm1BdHRyaWJ1dGUobmV3TGlzdCwgYXR0ci0+dmFsdWUoKSkpCi0gICAgICAgICAgICBu
ZXdMaXN0LmNsZWFyKCk7Ci0KKyAgICAgICAgbmV3TGlzdC5wYXJzZShhdHRyLT52YWx1ZSgpKTsK
ICAgICAgICAgZGV0YWNoQW5pbWF0ZWRHcmFkaWVudFRyYW5zZm9ybUxpc3RXcmFwcGVycyhuZXdM
aXN0LnNpemUoKSk7CiAgICAgICAgIHNldEdyYWRpZW50VHJhbnNmb3JtQmFzZVZhbHVlKG5ld0xp
c3QpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcAppbmRleCA4YmY5N2IzNThiMzI2ZGE5Y2MyYmE1NDdiNmE5YWRmNTY1N2E0MmJhLi43ODBm
NTdiMWEyNjdmN2VlYTVjNWVlZGFmMTNjMzA1YjM5N2I5MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTEyNyw5ICsxMjcsNyBAQCB2b2lkIFNWR1BhdHRl
cm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIHJldHVy
bjsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0dGVyblRyYW5z
Zm9ybUF0dHIpIHsKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCBuZXdMaXN0OwotICAgICAgICBp
ZiAoIVNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKG5ld0xpc3QsIGF0
dHItPnZhbHVlKCkpKQotICAgICAgICAgICAgbmV3TGlzdC5jbGVhcigpOwotCisgICAgICAgIG5l
d0xpc3QucGFyc2UoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGRldGFjaEFuaW1hdGVkUGF0dGVy
blRyYW5zZm9ybUxpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNldFBhdHRl
cm5UcmFuc2Zvcm1CYXNlVmFsdWUobmV3TGlzdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCmlu
ZGV4IDAyZjM1ZDNlMzhmYzk3YWRmMzdkZjI3ZTM3Njk2Y2U5ODQxY2M1MTcuLjdlNmYxZGQ1MzU3
ZmI5YzcxYzQwN2NkOTczMmMxMDgyOTk5YmVlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcApAQCAtMTA3LDggKzEwNyw3
IEBAIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnRyYW5z
Zm9ybUF0dHIpIHsKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCBuZXdMaXN0OwotICAgICAgICBp
ZiAoIVNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKG5ld0xpc3QsIGF0
dHItPnZhbHVlKCkpKQotICAgICAgICAgICAgbmV3TGlzdC5jbGVhcigpOworICAgICAgICBuZXdM
aXN0LnBhcnNlKGF0dHItPnZhbHVlKCkpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFRyYW5zZm9y
bUxpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNldFRyYW5zZm9ybUJhc2VW
YWx1ZShuZXdMaXN0KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxl
bWVudC5jcHAKaW5kZXggNTRhNjRhNTdlZjE5NmIxNzlkODdmZDc2OTgyYmI1MGJjZThjMWRiNS4u
Y2M4YjY3NDg0M2E1OTRiMmFlYmU1Zjk4ZDg2OTZhY2U4YzQ3YTcyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dEVsZW1lbnQuY3BwCkBAIC03Myw5ICs3Myw3IEBAIHZvaWQgU1ZHVGV4dEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIAogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlz
dCBuZXdMaXN0OwotICAgICAgICBpZiAoIVNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3Jt
QXR0cmlidXRlKG5ld0xpc3QsIGF0dHItPnZhbHVlKCkpKQotICAgICAgICAgICAgbmV3TGlzdC5j
bGVhcigpOwotCisgICAgICAgIG5ld0xpc3QucGFyc2UoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAg
IGRldGFjaEFuaW1hdGVkVHJhbnNmb3JtTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAg
ICAgICAgc2V0VHJhbnNmb3JtQmFzZVZhbHVlKG5ld0xpc3QpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCmluZGV4IDcwYmRhZDc2ODZmODk1MjUzMzlmMWJl
MjNiYjlmOWE0NmU4OGY2ZTUuLjQ1NjFkNDI4YTUwMjhiYTgwYWY2NTI1NmM1ZTMyNmY1ZWRmZGM4
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCkBAIC0xMjksNDkgKzEyOSw3NSBA
QCB2b2lkIFNWR1RyYW5zZm9ybTo6c2V0U2tld1koZmxvYXQgYW5nbGUpCiAgICAgbV9tYXRyaXgu
c2tld1koYW5nbGUpOwogfQogCi1TdHJpbmcgU1ZHVHJhbnNmb3JtOjp2YWx1ZUFzU3RyaW5nKCkg
Y29uc3QKK2NvbnN0IFN0cmluZyYgU1ZHVHJhbnNmb3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9y
UGFyc2luZyhTVkdUcmFuc2Zvcm1UeXBlIHR5cGUpCiB7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAg
ICBjYXNlIFNWR19UUkFOU0ZPUk1fTUFUUklYOiB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBtYXRyaXhTdHJpbmcsICgibWF0cml4KCIpKTsKLSAgICAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZChtYXRyaXhTdHJpbmcgKyBTdHJp
bmc6Om51bWJlcihtX21hdHJpeC5hKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIobV9tYXRyaXgu
YigpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LmMoKSkgKyAnICcgKwotICAgICAg
ICAgICAgICAgICAgICAgICBTdHJpbmc6Om51bWJlcihtX21hdHJpeC5kKCkpICsgJyAnICsgU3Ry
aW5nOjpudW1iZXIobV9tYXRyaXguZSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4
LmYoKSkgKyAnKScpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAg
ICByZXR1cm4gbWF0cml4U3RyaW5nOwogICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVFJB
TlNMQVRFOiB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0cmFuc2xhdGVT
dHJpbmcsICgidHJhbnNsYXRlKCIpKTsKLSAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVN0cmluZyAr
IFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LmUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX21h
dHJpeC5mKCkpICsgJyknOworICAgICAgICByZXR1cm4gdHJhbnNsYXRlU3RyaW5nOwogICAgIH0K
ICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0NBTEU6IHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHNjYWxlU3RyaW5nLCAoInNjYWxlKCIpKTsKLSAgICAgICAgcmV0dXJuIHNj
YWxlU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9tYXRyaXgueFNjYWxlKCkpICsgJyAnICsgU3Ry
aW5nOjpudW1iZXIobV9tYXRyaXgueVNjYWxlKCkpICsgJyknOworICAgICAgICByZXR1cm4gc2Nh
bGVTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJvdGF0ZVN0cmluZywgKCJyb3RhdGUoIikp
OwotICAgICAgICBkb3VibGUgYW5nbGVJblJhZCA9IGRlZzJyYWQobV9hbmdsZSk7Ci0gICAgICAg
IGRvdWJsZSBjb3NBbmdsZSA9IGNvcyhhbmdsZUluUmFkKTsKLSAgICAgICAgZG91YmxlIHNpbkFu
Z2xlID0gc2luKGFuZ2xlSW5SYWQpOwotICAgICAgICBmbG9hdCBjeCA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQoY29zQW5nbGUgIT0gMSA/IChtX21hdHJpeC5lKCkgKiAoMSAtIGNvc0FuZ2xlKSAt
IG1fbWF0cml4LmYoKSAqIHNpbkFuZ2xlKSAvICgxIC0gY29zQW5nbGUpIC8gMiA6IDApOwotICAg
ICAgICBmbG9hdCBjeSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29zQW5nbGUgIT0gMSA/ICht
X21hdHJpeC5lKCkgKiBzaW5BbmdsZSAvICgxIC0gY29zQW5nbGUpICsgbV9tYXRyaXguZigpKSAv
IDIgOiAwKTsKLSAgICAgICAgaWYgKGN4IHx8IGN5KQotICAgICAgICAgICAgcmV0dXJuIHJvdGF0
ZVN0cmluZyArIFN0cmluZzo6bnVtYmVyKG1fYW5nbGUpICsgJyAnICsgU3RyaW5nOjpudW1iZXIo
Y3gpICsgJyAnICsgU3RyaW5nOjpudW1iZXIoY3kpICsgJyknOwotICAgICAgICByZXR1cm4gcm90
YXRlU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9hbmdsZSkgKyAnKSc7CisgICAgICAgIHJldHVy
biByb3RhdGVTdHJpbmc7CiAgICAgfSAgICAKICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6
IHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNrZXdYU3RyaW5nLCAoInNr
ZXdYKCIpKTsKLSAgICAgICAgcmV0dXJuIHNrZXdYU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9h
bmdsZSkgKyAnKSc7CisgICAgICAgIHJldHVybiBza2V3WFN0cmluZzsKICAgICB9CiAgICAgY2Fz
ZSBTVkdfVFJBTlNGT1JNX1NLRVdZOiB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBza2V3WVN0cmluZywgKCJza2V3WSgiKSk7Ci0gICAgICAgIHJldHVybiBza2V3WVN0cmlu
ZyArIFN0cmluZzo6bnVtYmVyKG1fYW5nbGUpICsgJyknOworICAgICAgICByZXR1cm4gc2tld1lT
dHJpbmc7CisgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgU1ZHVHJhbnNmb3JtOjp2YWx1ZUFzU3Ry
aW5nKCkgY29uc3QKK3sKKyAgICBjb25zdCBTdHJpbmcmIHByZWZpeCA9IHRyYW5zZm9ybVR5cGVQ
cmVmaXhGb3JQYXJzaW5nKG1fdHlwZSk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNl
IFNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIHByZWZpeDsKKyAgICBjYXNl
IFNWR19UUkFOU0ZPUk1fTUFUUklYOiB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4ICsgU3RyaW5nOjpudW1iZXIobV9tYXRyaXgu
YSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4LmIoKSkgKyAnICcgKyBTdHJpbmc6
Om51bWJlcihtX21hdHJpeC5jKCkpICsgJyAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpudW1iZXIobV9tYXRyaXguZCgpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1fbWF0cml4
LmUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX21hdHJpeC5mKCkpICsgJyknKTsKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICB9CisgICAgY2FzZSBTVkdfVFJBTlNG
T1JNX1RSQU5TTEFURToKKyAgICAgICAgcmV0dXJuIHByZWZpeCArIFN0cmluZzo6bnVtYmVyKG1f
bWF0cml4LmUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX21hdHJpeC5mKCkpICsgJyknOwor
ICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TQ0FMRToKKyAgICAgICAgcmV0dXJuIHByZWZpeCArIFN0
cmluZzo6bnVtYmVyKG1fbWF0cml4LnhTY2FsZSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1f
bWF0cml4LnlTY2FsZSgpKSArICcpJzsKKyAgICBjYXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRFOiB7
CisgICAgICAgIGRvdWJsZSBhbmdsZUluUmFkID0gZGVnMnJhZChtX2FuZ2xlKTsKKyAgICAgICAg
ZG91YmxlIGNvc0FuZ2xlID0gY29zKGFuZ2xlSW5SYWQpOworICAgICAgICBkb3VibGUgc2luQW5n
bGUgPSBzaW4oYW5nbGVJblJhZCk7CisgICAgICAgIGZsb2F0IGN4ID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LmUoKSAqICgxIC0gY29zQW5nbGUpIC0g
bV9tYXRyaXguZigpICogc2luQW5nbGUpIC8gKDEgLSBjb3NBbmdsZSkgLyAyIDogMCk7CisgICAg
ICAgIGZsb2F0IGN5ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1f
bWF0cml4LmUoKSAqIHNpbkFuZ2xlIC8gKDEgLSBjb3NBbmdsZSkgKyBtX21hdHJpeC5mKCkpIC8g
MiA6IDApOworICAgICAgICBpZiAoY3ggfHwgY3kpCisgICAgICAgICAgICByZXR1cm4gcHJlZml4
ICsgU3RyaW5nOjpudW1iZXIobV9hbmdsZSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihjeCkgKyAn
ICcgKyBTdHJpbmc6Om51bWJlcihjeSkgKyAnKSc7CisgICAgICAgIHJldHVybiBwcmVmaXggKyBT
dHJpbmc6Om51bWJlcihtX2FuZ2xlKSArICcpJzsKICAgICB9CisgICAgY2FzZSBTVkdfVFJBTlNG
T1JNX1NLRVdYOgorICAgICAgICByZXR1cm4gcHJlZml4ICsgU3RyaW5nOjpudW1iZXIobV9hbmds
ZSkgKyAnKSc7CisgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdZOgorICAgICAgICByZXR1cm4g
cHJlZml4ICsgU3RyaW5nOjpudW1iZXIobV9hbmdsZSkgKyAnKSc7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtLmgKaW5kZXggMTQ3MThhZTQwZWVlN2FkZjFiOTFkMGRjYzRhZjA4OWYyYmMwZjU3OC4u
NmEwOGI3Mzk3MTY0OGIyOWQ2MGI2MTE0NjUxNGQ3ODVhMmM1MzM0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm0uaApAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IFNWR19UUkFOU0ZPUk1fVU5LTk9XTjsgfQogICAg
IFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiB0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhTVkdUcmFuc2Zvcm1UeXBlKTsKKwogcHJp
dmF0ZToKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1RyYW5zZm9ybSYgYSwg
Y29uc3QgU1ZHVHJhbnNmb3JtJiBiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxp
c3QuY3BwCmluZGV4IDVjYzg0OTJlNzEwZGM4ZTEwYTUzOTA0NGE5MWE4NzFkMGYxNTE2MjUuLmQ5
NzQ2MWQ2MGEzZTVlMmIxMTMxMWQyN2U3ZTA2MmY1MTlkZWQ3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNiAr
NzQsMTMgQEAgU3RyaW5nIFNWR1RyYW5zZm9ybUxpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgU1ZHVHJhbnNmb3JtTGlz
dDo6cGFyc2UoY29uc3QgU3RyaW5nJiB0cmFuc2Zvcm0pCit7CisgICAgY29uc3QgVUNoYXIqIHN0
YXJ0ID0gdHJhbnNmb3JtLmNoYXJhY3RlcnMoKTsKKyAgICBpZiAoIVNWR1RyYW5zZm9ybWFibGU6
OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKCp0aGlzLCBzdGFydCwgc3RhcnQgKyB0cmFuc2Zvcm0u
bGVuZ3RoKCkpKQorICAgICAgICBjbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0
LmgKaW5kZXggMGFmYzgzMmM1YzJkMWE3NDk1M2IwMzhlNjFjMzhkMjIxMjg5YzVjMy4uMTRhYmEz
YmY0MDY1ZTU4OGJlOWQ2MTZiYzFmYzQxMjgwYTQ2NjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtTGlzdC5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbmNh
dGVuYXRlKEFmZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25zdDsKICAKICAgICBTdHJpbmcgdmFs
dWVBc1N0cmluZygpIGNvbnN0OworICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CiB9Owog
CiB0ZW1wbGF0ZTw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKaW5kZXgg
ZDQxOTNiY2E0Nzk5ZjE4MjJjYTA5MjRkN2ExNDUzZDFiN2RkMmVjYi4uMDk0Y2VkOWEzYTRjN2I3
YTA0YTc4MTVkZmZmNzI0NDE2YmE5MGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybWFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1hYmxlLmNwcApAQCAtMTcwLDEwICsxNzAsMTIgQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNl
QW5kU2tpcFR5cGUoY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW4K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5z
Zm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0JiBsaXN0LCBjb25zdCBBdG9taWNTdHJpbmcm
IHRyYW5zZm9ybSkKK1NWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSBTVkdUcmFuc2Zvcm1h
YmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewotICAg
IGNvbnN0IFVDaGFyKiBzdGFydCA9IHRyYW5zZm9ybS5jaGFyYWN0ZXJzKCk7Ci0gICAgcmV0dXJu
IHBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKGxpc3QsIHN0YXJ0LCBzdGFydCArIHRyYW5zZm9ybS5s
ZW5ndGgoKSk7CisgICAgdW5zaWduZWQgc2hvcnQgdHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZHX1RS
QU5TRk9STV9VTktOT1dOOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdHlwZVN0cmlu
Zy5jaGFyYWN0ZXJzKCk7CisgICAgcGFyc2VBbmRTa2lwVHlwZShjaGFyYWN0ZXJzLCBjaGFyYWN0
ZXJzICsgdHlwZVN0cmluZy5sZW5ndGgoKSwgdHlwZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZT4odHlwZSk7CiB9CiAKIGJvb2wgU1ZHVHJh
bnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCYgbGlz
dCwgY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW5kLCBUcmFuc2Zv
cm1QYXJzaW5nTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKaW5k
ZXggZmZkOWNlZTIwMTFhMmMyMDZjYTlhOWE0ZDY4MmNlYWEwMmFhMDI4MS4uNzE2OGJhMzExNTAx
NmE2OGUwYTg1NWFlNzM3MzFjNGQxZGZlMjg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybWFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtYWJsZS5oCkBAIC0yMiwxNiArMjIsMTQgQEAKICNkZWZpbmUgU1ZHVHJhbnNmb3JtYWJsZV9o
CiAKICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiU1ZHTG9jYXRhYmxlLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAi
U1ZHVHJhbnNmb3JtTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNz
IEFmZmluZVRyYW5zZm9ybTsKLWNsYXNzIFNWR1RyYW5zZm9ybTsKLWNsYXNzIFF1YWxpZmllZE5h
bWU7CiAKIGNsYXNzIFNWR1RyYW5zZm9ybWFibGUgOiB2aXJ0dWFsIHB1YmxpYyBTVkdMb2NhdGFi
bGUgewogcHVibGljOgpAQCAtNDIsOSArNDAsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5T
VkdUcmFuc2Zvcm1hYmxlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJp
YnV0ZShTVkdUcmFuc2Zvcm1MaXN0JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2Zvcm0pOwog
ICAgIHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3Qm
LCBjb25zdCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgVHJhbnNmb3JtUGFyc2luZ01v
ZGUgbW9kZSA9IENsZWFyTGlzdCk7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1WYWx1
ZSh1bnNpZ25lZCB0eXBlLCBjb25zdCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgU1ZH
VHJhbnNmb3JtJik7CisgICAgc3RhdGljIFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSBw
YXJzZVRyYW5zZm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNj
b3BlKSBjb25zdCB7IHJldHVybiBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7IH0KICAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKaW5kZXggY2U3YmQxOWVkM2MwYTA0MjRiODc0ZDhm
OTgxZTkzOGNmMzRiYzE0Ny4uZDA5ZWE1OWYwNzBmNDA0NzRlNzIzMzc4Y2NkMTgyMDJiYWM0YjZh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFNWR1Zp
ZXdTcGVjOjpTVkdWaWV3U3BlYyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIAogdm9pZCBT
VkdWaWV3U3BlYzo6c2V0VHJhbnNmb3JtKGNvbnN0IFN0cmluZyYgdHJhbnNmb3JtKQogewotICAg
IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKG1fdHJhbnNmb3JtLCB0
cmFuc2Zvcm0pOworICAgIG1fdHJhbnNmb3JtLnBhcnNlKHRyYW5zZm9ybSk7CiB9CiAKIHZvaWQg
U1ZHVmlld1NwZWM6OnNldFZpZXdCb3hTdHJpbmcoY29uc3QgU3RyaW5nJiB2aWV3Qm94U3RyKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGRkYWQ1ZGI2Nzc5NzY2NGIzODZhZmY1NjMxOWVjNzhjNTUwMTQ5ZTcuLjU1OTRmMmU4
NDhmNDg1Y2Q3NmQ1Mzk4MDM1ZDY2NTk1YzYzMjA2MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAxMi0wMy0xNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKwor
ICAgICAgICBFbmFibGUgYW5pbVZhbCBzdXBwb3J0IGZvciBTVkdUcmFuc2Zvcm1MaXN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDc1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgdGVz
dHMgYWZ0ZXIgZW5hYmxpbmcgYW5pbVZhbCBzdXBwb3J0IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50L1NWR1RyYW5zZm9ybUxpc3QuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9hbmltYXRl
LWdyYWRpZW50LXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2FuaW1hdGlv
bnMvYW5pbWF0ZVRyYW5zZm9ybS1wYXR0ZXJuLXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtZ3JhZGllbnQtdHJhbnNm
b3JtLmpzOgorICAgICAgICAoc2FtcGxlMSk6CisgICAgICAgIChzYW1wbGUyKToKKyAgICAgICAg
KHNhbXBsZTMpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorICAgICAgICAqIHN2Zy9hbmltYXRp
b25zL3NjcmlwdC10ZXN0cy9hbmltYXRlVHJhbnNmb3JtLXBhdHRlcm4tdHJhbnNmb3JtLmpzOgor
ICAgICAgICAoc2FtcGxlMSk6CisgICAgICAgIChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMp
OgorICAgICAgICAoc2FtcGxlNCk6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisKIDIwMTItMDMt
MTMgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAg
RW5hYmxlIGFuaW1WYWwgc3VwcG9ydCBmb3IgU1ZHTGVuZ3RoTGlzdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1ncmFkaWVudC10cmFuc2Zvcm0tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1ncmFkaWVudC10cmFu
c2Zvcm0tZXhwZWN0ZWQudHh0CmluZGV4IGViNjIyMDk0MmJjZmJmMGRmYmU5MTQ2NGRjMDE0ZTdm
MWZiMmQ3NmQuLmNkNzI4MTRhYzBkOTBiMGNkMzZkYjIzODFhZDQ4MzQ0N2IyYWY3YTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtZ3JhZGllbnQtdHJhbnNm
b3JtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRl
LWdyYWRpZW50LXRyYW5zZm9ybS1leHBlY3RlZC50eHQKQEAgLTUsMTIgKzUsMzEgQEAgVGVzdHMg
aWYgZ3JhZGllbnRUcmFuc2Zvcm0gb2YgYSBncmFkaWVudCBpcyBhbmltYXRlYWJsZS4KIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3Jt
LmJhc2VWYWwuY29uc29saWRhdGUoKS5tYXRyaXguZSBpcyAwCi1QQVNTIGdyYWRpZW50LmdyYWRp
ZW50VHJhbnNmb3JtLmFuaW1WYWwuY29uc29saWRhdGUoKS5tYXRyaXguZSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogRE9NIEV4Y2VwdGlvbiA3Lgot
UEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkubWF0
cml4LmUgaXMgMTAwCi1QQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuY29u
c29saWRhdGUoKS5tYXRyaXguZSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PX01PRElGSUNBVElP
Tl9BTExPV0VEX0VSUjogRE9NIEV4Y2VwdGlvbiA3LgotUEFTUyBncmFkaWVudC5ncmFkaWVudFRy
YW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4LmUgaXMgMjAwCi1QQVNTIGdyYWRp
ZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuY29uc29saWRhdGUoKS5tYXRyaXguZSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogRE9NIEV4Y2Vw
dGlvbiA3LgorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmNvbnNvbGlk
YXRlKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6
IERPTSBFeGNlcHRpb24gNy4KK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZh
bC5udW1iZXJPZkl0ZW1zIGlzIDEKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5p
bVZhbC5nZXRJdGVtKDApLm1hdHJpeC5lIGlzIDAKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFu
c2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLnR5cGUgaXMgU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZP
Uk1fVFJBTlNMQVRFCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwubnVt
YmVyT2ZJdGVtcyBpcyAxCitQQVNTIGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwu
Z2V0SXRlbSgwKS50eXBlIGlzIFNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURQor
UEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4
LmUgaXMgMAorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLm51bWJlck9m
SXRlbXMgaXMgMQorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmdldEl0
ZW0oMCkudHlwZSBpcyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUKK1BBU1Mg
Z3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5lIGlz
IDEwMAorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9mSXRl
bXMgaXMgMQorUEFTUyBncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0o
MCkudHlwZSBpcyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUKK1BBU1MgZ3Jh
ZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLm1hdHJpeC5lIGlzIDAK
K1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5udW1iZXJPZkl0ZW1zIGlz
IDEKK1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLnR5
cGUgaXMgU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFCitQQVNTIGdyYWRpZW50
LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguZSBpcyAyMDAKK1BB
U1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDEK
K1BBU1MgZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLnR5cGUg
aXMgU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFCitQQVNTIGdyYWRpZW50Lmdy
YWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS5tYXRyaXguZSBpcyAwCitQQVNTIGdy
YWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwubnVtYmVyT2ZJdGVtcyBpcyAxCitQQVNT
IGdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS50eXBlIGlzIFNW
R1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURQorUEFTUyBncmFkaWVudC5ncmFkaWVu
dFRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4LmUgaXMgMjAwCitQQVNTIGdyYWRp
ZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyAxCitQQVNTIGdy
YWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS50eXBlIGlzIFNWR1Ry
YW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURQorUEFTUyBncmFkaWVudC5ncmFkaWVudFRy
YW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4LmUgaXMgMAogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlVHJhbnNmb3JtLXBhdHRlcm4tdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGVUcmFuc2Zvcm0tcGF0
dGVybi10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CmluZGV4IGZlYzRmMGI0OWNlOTA0YTM1MGIxMGJk
N2I3YmU4ZGY0Y2M0YjM5MWQuLjgwOTRmYWM3NTAxZjI1MDY0NGFlZjg4NThkMDViMjNjNTJkOTQ5
N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGVUcmFuc2Zv
cm0tcGF0dGVybi10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL2FuaW1hdGVUcmFuc2Zvcm0tcGF0dGVybi10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0
CkBAIC01LDE0ICs1LDIyIEBAIFRlc3RzIGFuaW1hdGlvbiBvZiAncGF0dGVyblRyYW5zZm9ybScu
IFNob3VsZCByZXN1bHQgaW4gYSAxMDB4MTAwIHJlY3QgYW5kIG9ubHkKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLm51
bWJlck9mSXRlbXMgaXMgMAorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5u
dW1iZXJPZkl0ZW1zIGlzIDAKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwu
bnVtYmVyT2ZJdGVtcyBpcyAxCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFs
LmdldEl0ZW0oMCkudHlwZSBpcyBTVkdUcmFuc2Zvcm0uU1ZHX1RSQU5TRk9STV9TQ0FMRQogUEFT
UyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIGlz
IDEKLVBBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS5tYXRy
aXguYSBpcyAxCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9m
SXRlbXMgaXMgMAorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5udW1iZXJP
Zkl0ZW1zIGlzIDEKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRl
bSgwKS50eXBlIGlzIFNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1NDQUxFCiBQQVNTIHBhdHRl
cm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4LmEgaXMgMS41Ci1Q
QVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4LmEg
aXMgMS41CitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9mSXRl
bXMgaXMgMAorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5udW1iZXJPZkl0
ZW1zIGlzIDEKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgw
KS50eXBlIGlzIFNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1NDQUxFCiBQQVNTIHBhdHRlcm4u
cGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4LmEgaXMgMgotUEFTUyBw
YXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIGlzIDIK
LVBBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXgu
YSBpcyAxCi1QQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCku
bWF0cml4LmEgaXMgMQorUEFTUyBwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5udW1i
ZXJPZkl0ZW1zIGlzIDAKK1BBU1MgcGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwubnVt
YmVyT2ZJdGVtcyBpcyAwCitQQVNTIHBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLm51
bWJlck9mSXRlbXMgaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQt
dGVzdHMvYW5pbWF0ZS1ncmFkaWVudC10cmFuc2Zvcm0uanMgYi9MYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1ncmFkaWVudC10cmFuc2Zvcm0uanMKaW5kZXgg
OGY5M2FiZjY5NGRhN2UxYzFjMTFhY2RmY2Q3M2FiMjllMGVjNTcwZC4uYjYyMTQ2YmQ5MjNhYzkx
NGQ3ZDc5NWJmZmIwMzJjODA5MjU3MmU4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtZ3JhZGllbnQtdHJhbnNmb3JtLmpzCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLWdyYWRpZW50
LXRyYW5zZm9ybS5qcwpAQCAtNDQsMjAgKzQ0LDM2IEBAIHJvb3RTVkdFbGVtZW50LmFwcGVuZENo
aWxkKHJlY3QpOwogLy8gU2V0dXAgYW5pbWF0aW9uIHRlc3QKIGZ1bmN0aW9uIHNhbXBsZTEoKSB7
CiAgICAgLy8gQ2hlY2sgaW5pdGlhbCBjb25kaXRpb25zCi0gICAgc2hvdWxkQmVDbG9zZUVub3Vn
aCgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJp
eC5lIiwgIjAiKTsKLSAgICBzaG91bGRUaHJvdygiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0u
YW5pbVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJpeC5lIik7CisgICAgc2hvdWxkVGhyb3coImdyYWRp
ZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuY29uc29saWRhdGUoKSIpOworICAgIHNob3Vs
ZEJlKCJncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLm51bWJlck9mSXRlbXMiLCAi
MSIpOworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3Jt
LmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguZSIsICIwIik7CisgICAgc2hvdWxkQmUoImdyYWRp
ZW50LmdyYWRpZW50VHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS50eXBlIiwgIlNWR1RyYW5z
Zm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSIpOworCisgICAgc2hvdWxkQmUoImdyYWRpZW50
LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIxIik7CisgICAgc2hv
dWxkQmUoImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS50eXBl
IiwgIlNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSIpOworICAgIHNob3VsZEJl
KCJncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4LmUi
LCAiMCIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUyKCkgewogICAgIC8vIENoZWNrIGhhbGYtdGlt
ZSBjb25kaXRpb25zCi0gICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZ3JhZGllbnQuZ3JhZGllbnRU
cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJpeC5lIiwgIjEwMCIpOwotICAgIHNo
b3VsZFRocm93KCJncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5hbmltVmFsLmNvbnNvbGlkYXRl
KCkubWF0cml4LmUiKTsKKyAgICBzaG91bGRCZSgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0u
YW5pbVZhbC5udW1iZXJPZkl0ZW1zIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZ3JhZGllbnQuZ3Jh
ZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLnR5cGUiLCAiU1ZHVHJhbnNmb3JtLlNW
R19UUkFOU0ZPUk1fVFJBTlNMQVRFIik7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZ3JhZGll
bnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5lIiwgIjEwMCIp
OworCisgICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwubnVt
YmVyT2ZJdGVtcyIsICIxIik7CisgICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRpZW50VHJhbnNm
b3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS50eXBlIiwgIlNWR1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JN
X1RSQU5TTEFURSIpOworICAgIHNob3VsZEJlKCJncmFkaWVudC5ncmFkaWVudFRyYW5zZm9ybS5i
YXNlVmFsLmdldEl0ZW0oMCkubWF0cml4LmUiLCAiMCIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUz
KCkgewogICAgIC8vIENoZWNrIGVuZCBjb25kaXRpb25zCi0gICAgc2hvdWxkQmVDbG9zZUVub3Vn
aCgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJp
eC5lIiwgIjIwMCIpOwotICAgIHNob3VsZFRocm93KCJncmFkaWVudC5ncmFkaWVudFRyYW5zZm9y
bS5hbmltVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4LmUiKTsKKyAgICBzaG91bGRCZSgiZ3JhZGll
bnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5udW1iZXJPZkl0ZW1zIiwgIjEiKTsKKyAgICBz
aG91bGRCZSgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLnR5
cGUiLCAiU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFIik7CisgICAgc2hvdWxk
QmVDbG9zZUVub3VnaCgiZ3JhZGllbnQuZ3JhZGllbnRUcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVt
KDApLm1hdHJpeC5lIiwgIjIwMCIpOworCisgICAgc2hvdWxkQmUoImdyYWRpZW50LmdyYWRpZW50
VHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIxIik7CisgICAgc2hvdWxkQmUoImdy
YWRpZW50LmdyYWRpZW50VHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKS50eXBlIiwgIlNWR1Ry
YW5zZm9ybS5TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSIpOworICAgIHNob3VsZEJlKCJncmFkaWVu
dC5ncmFkaWVudFRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkubWF0cml4LmUiLCAiMCIpOwog
fQogCiBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsgIApAQCAtNjUsNyArODEsOCBAQCBmdW5jdGlv
biBleGVjdXRlVGVzdCgpIHsKICAgICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBzYW1wbGVD
YWxsYmFja10KICAgICAgICAgWyJhbmltYXRpb24iLCAwLjAsIHNhbXBsZTFdLAogICAgICAgICBb
ImFuaW1hdGlvbiIsIDIuMCwgc2FtcGxlMl0sCi0gICAgICAgIFsiYW5pbWF0aW9uIiwgNC4wLCBz
YW1wbGUzXQorICAgICAgICBbImFuaW1hdGlvbiIsIDMuOTk5LCBzYW1wbGUzXSwKKyAgICAgICAg
WyJhbmltYXRpb24iLCA0LjAwMSwgc2FtcGxlM10KICAgICBdOwogCiAgICAgcnVuQW5pbWF0aW9u
VGVzdChleHBlY3RlZFZhbHVlcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZVRyYW5zZm9ybS1wYXR0ZXJuLXRyYW5zZm9ybS5qcyBi
L0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlVHJhbnNmb3Jt
LXBhdHRlcm4tdHJhbnNmb3JtLmpzCmluZGV4IGNmNzFmN2E1M2I4ZjliN2I3MGMyZGYwNWQyYWI5
MmZkNDNhMjA3ZjEuLjNjMmNlNGRlMTM3NTM0MWU3Y2Q0NWZhOTVjZmIyNTM4YzE4Mzc1ZDUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRl
VHJhbnNmb3JtLXBhdHRlcm4tdHJhbnNmb3JtLmpzCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlVHJhbnNmb3JtLXBhdHRlcm4tdHJhbnNmb3JtLmpz
CkBAIC00MSwyOCArNDEsNDQgQEAgcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdCk7CiAv
LyBTZXR1cCBhbmltYXRpb24gdGVzdAogZnVuY3Rpb24gc2FtcGxlMSgpIHsKICAgICAvLyBDaGVj
ayBpbml0aWFsL2VuZCBjb25kaXRpb25zCi0gICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicGF0dGVy
bi5wYXR0ZXJuVHJhbnNmb3JtLmFuaW1WYWwuZ2V0SXRlbSgwKS5tYXRyaXguYSIsICIxIik7Ci0g
ICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicGF0dGVybi5wYXR0ZXJuVHJhbnNmb3JtLmJhc2VWYWwu
Z2V0SXRlbSgwKS5tYXRyaXguYSIsICIxIik7CisgICAgc2hvdWxkQmUoInBhdHRlcm4ucGF0dGVy
blRyYW5zZm9ybS5hbmltVmFsLm51bWJlck9mSXRlbXMiLCAiMCIpOworICAgIHNob3VsZEJlKCJw
YXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjAiKTsKIH0K
IAogZnVuY3Rpb24gc2FtcGxlMigpIHsKKyAgICBzaG91bGRCZSgicGF0dGVybi5wYXR0ZXJuVHJh
bnNmb3JtLmFuaW1WYWwubnVtYmVyT2ZJdGVtcyIsICIxIik7CisgICAgc2hvdWxkQmUoInBhdHRl
cm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkudHlwZSIsICJTVkdUcmFuc2Zv
cm0uU1ZHX1RSQU5TRk9STV9TQ0FMRSIpOworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goInBhdHRl
cm4ucGF0dGVyblRyYW5zZm9ybS5hbmltVmFsLmdldEl0ZW0oMCkubWF0cml4LmEiLCAiMSIpOwor
CisgICAgc2hvdWxkQmUoInBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9m
SXRlbXMiLCAiMCIpOworfQorCitmdW5jdGlvbiBzYW1wbGUzKCkgewogICAgIC8vIENoZWNrIGhh
bGYtdGltZSBjb25kaXRpb25zCisgICAgc2hvdWxkQmUoInBhdHRlcm4ucGF0dGVyblRyYW5zZm9y
bS5hbmltVmFsLm51bWJlck9mSXRlbXMiLCAiMSIpOworICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBh
dHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLnR5cGUiLCAiU1ZHVHJhbnNmb3JtLlNW
R19UUkFOU0ZPUk1fU0NBTEUiKTsKICAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJwYXR0ZXJuLnBh
dHRlcm5UcmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIiwgIjEuNSIpOwotICAg
IHNob3VsZEJlQ2xvc2VFbm91Z2goInBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5iYXNlVmFsLmdl
dEl0ZW0oMCkubWF0cml4LmEiLCAiMS41Iik7CisKKyAgICBzaG91bGRCZSgicGF0dGVybi5wYXR0
ZXJuVHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIwIik7CiB9CiAKLWZ1bmN0aW9u
IHNhbXBsZTMoKSB7CitmdW5jdGlvbiBzYW1wbGU0KCkgeworICAgIC8vIENoZWNrIGhhbGYtdGlt
ZSBjb25kaXRpb25zCisgICAgc2hvdWxkQmUoInBhdHRlcm4ucGF0dGVyblRyYW5zZm9ybS5hbmlt
VmFsLm51bWJlck9mSXRlbXMiLCAiMSIpOworICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBhdHRlcm5U
cmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLnR5cGUiLCAiU1ZHVHJhbnNmb3JtLlNWR19UUkFO
U0ZPUk1fU0NBTEUiKTsKICAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJwYXR0ZXJuLnBhdHRlcm5U
cmFuc2Zvcm0uYW5pbVZhbC5nZXRJdGVtKDApLm1hdHJpeC5hIiwgIjIiKTsKLSAgICBzaG91bGRC
ZUNsb3NlRW5vdWdoKCJwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDAp
Lm1hdHJpeC5hIiwgIjIiKTsKKworICAgIHNob3VsZEJlKCJwYXR0ZXJuLnBhdHRlcm5UcmFuc2Zv
cm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjAiKTsKIH0KIAogZnVuY3Rpb24gZXhlY3V0ZVRl
c3QoKSB7CiAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCiAgICAgICAgIC8vIFthbmltYXRp
b25JZCwgdGltZSwgc2FtcGxlQ2FsbGJhY2tdCiAgICAgICAgIFsiYW5pbWF0aW9uIiwgMC4wLCAg
IHNhbXBsZTFdLAotICAgICAgICBbImFuaW1hdGlvbiIsIDIuMCwgICBzYW1wbGUyXSwKLSAgICAg
ICAgWyJhbmltYXRpb24iLCAzLjk5OSwgc2FtcGxlM10sCi0gICAgICAgIFsiYW5pbWF0aW9uIiwg
NC4wMDEsIHNhbXBsZTFdCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMC4wMDEsIHNhbXBsZTJdLAor
ICAgICAgICBbImFuaW1hdGlvbiIsIDIuMCwgICBzYW1wbGUzXSwKKyAgICAgICAgWyJhbmltYXRp
b24iLCAzLjk5OSwgc2FtcGxlNF0sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgNC4wLCAgIHNhbXBs
ZTFdCiAgICAgXTsKIAogICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwo=
</data>
<flag name="review"
          id="135528"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>