<?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>49796</bug_id>
          
          <creation_ts>2010-11-19 05:14:08 -0800</creation_ts>
          <short_desc>Remove old style SVG DOM JS bindings and DeprecatedSVGAnimated* files</short_desc>
          <delta_ts>2010-11-19 05:58:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>47905</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>mdelaney7</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311372</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-19 05:14:08 -0800</bug_when>
    <thetext>Remove old style SVG DOM JS bindings and DeprecatedSVGAnimated* files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311378</commentid>
    <comment_count>1</comment_count>
      <attachid>74369</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-19 05:22:08 -0800</bug_when>
    <thetext>Created attachment 74369
Patch

Uploading to get EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311396</commentid>
    <comment_count>2</comment_count>
      <attachid>74369</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-19 05:53:22 -0800</bug_when>
    <thetext>Comment on attachment 74369
Patch

Awesome! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311397</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-19 05:58:27 -0800</bug_when>
    <thetext>Landed in r72387.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74369</attachid>
            <date>2010-11-19 05:22:08 -0800</date>
            <delta_ts>2010-11-19 05:53:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>CleanupPatch.diff</filename>
            <type>text/plain</type>
            <size>100226</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjM4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIG9sZCBzdHlsZSBTVkcgRE9NIEpTIGJpbmRpbmdzIGFuZCBEZXByZWNhdGVk
U1ZHQW5pbWF0ZWQqIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00OTc5NgorCisgICAgICAgIEp1c3QgcmVtb3ZlIHRoZSBvbGQgc3R5bGUgU1ZH
IERPTSBKUyBiaW5kaW5ncywgbm93IHRoYXQgZXZlcnl0aGluZyBoYXMgYmVlbiBjb252ZXJ0ZWQg
dG8gdGhlIG5ldyBjb25jZXB0LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSBT
VkdMaXN0L1NWR0xpc3RUcmFpdHMvSlNTVkdQT0RMaXN0Q3VzdG9tL0pTU1ZHUE9EVHlwZVdyYXBw
ZXIvSlNTVkdDb250ZXh0Q2FjaGUgYW5kIFY4U1ZHUE9EVHlwZVdyYXBwZXIgZmlsZXMuCisgICAg
ICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICog
YmluZGluZ3MvanMvSlNTVkdDb250ZXh0Q2FjaGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1NWR1BPRExpc3RDdXN0b20uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhQcm94eS5jcHA6IFJlbW92ZSBTVkcgc3BlY2lmaWMgY29udGV4dCBjYWNoZSBjb2RlLCB3
aGljaCBpcyBubyBsb25nZXIgbmVlZGVkLiAKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5
Lmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4U1ZHUE9EVHlwZVdyYXBwZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxh
dGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOiBSZW1vdmUgRGVwcmVj
YXRlZFNWR0FuaW1hdGVkKiBpbmNsdWRlLCB3aGljaCBwdWxsZWQgaW4gU1ZHTmFtZXMuaCBmb3Ig
ZXZlcnkgZmlsZS4KKyAgICAgICAgKiBzdmcvU1ZHTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAq
IHN2Zy9TVkdMaXN0VHJhaXRzLmg6IFJlbW92ZWQuCisKIDIwMTAtMTEtMTkgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBG
aXggUXQgYnVpbGQuCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDcyMzgxKQorKysgV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNzk0LDEyICs3OTQsOSBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmggXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NWR0NvbnRleHRDYWNoZS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVu
dEluc3RhbmNlQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1
c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcCBc
Ci0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRExpc3RDdXN0b20uaCBcCi0JV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoQ3VzdG9tLmNw
cCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAgXApAQCAtMzAz
Myw5ICszMDMwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9zdmcvQ29sb3JEaXN0YW5jZS5jcHAgXAog
CVdlYkNvcmUvc3ZnL0NvbG9yRGlzdGFuY2UuaCBcCi0JV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHkuaCBcCi0JV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHMuaCBcCi0JV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVt
cGxhdGUuaCBcCiAJV2ViQ29yZS9zdmcvRWxlbWVudFRpbWVDb250cm9sLmggXAogCVdlYkNvcmUv
c3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuY3BwIFwKQEAgLTMyMjMsOCArMzIxNyw2IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmggXAogCVdlYkNvcmUv
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcCBcCiAJV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaCBc
Ci0JV2ViQ29yZS9zdmcvU1ZHTGlzdC5oIFwKLQlXZWJDb3JlL3N2Zy9TVkdMaXN0VHJhaXRzLmgg
XAogCVdlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR0xvY2F0
YWJsZS5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBcCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gNzIzODEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
Njc0LDEzICs2NzQsMTAgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAnLAot
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU1ZHQ29udGV4dENhY2hlLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1NWR1BhdGhTZWdMaXN0Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNTVkdQT0RMaXN0Q3VzdG9tLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU1ZH
UE9EVHlwZVdyYXBwZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcCcsCkBAIC05NDYsNyAr
OTQzLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24u
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhQcm94eS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhTVkdQ
T0RUeXBlV3JhcHBlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAnLApAQCAtMzk4
Niw5ICszOTgyLDYgQEAKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9Db2xvckRpc3RhbmNlLmNw
cCcsCiAgICAgICAgICAgICAnc3ZnL0NvbG9yRGlzdGFuY2UuaCcsCi0gICAgICAgICAgICAnc3Zn
L0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmgnLAotICAgICAgICAgICAgJ3N2Zy9EZXBy
ZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oJywKLSAgICAgICAgICAgICdzdmcvRGVw
cmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCcsCiAgICAgICAgICAgICAnc3ZnL0VsZW1lbnRU
aW1lQ29udHJvbC5oJywKICAgICAgICAgICAgICdzdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgnLAog
ICAgICAgICAgICAgJ3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCcsCkBAIC00MTQ5LDgg
KzQxNDIsNiBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdMaW5lRWxlbWVudC5oJywKICAgICAgICAg
ICAgICdzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oJywKLSAgICAgICAgICAgICdzdmcvU1ZHTGlzdC5o
JywKLSAgICAgICAgICAgICdzdmcvU1ZHTGlzdFRyYWl0cy5oJywKICAgICAgICAgICAgICdzdmcv
U1ZHTG9jYXRhYmxlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0xvY2F0YWJsZS5oJywKICAg
ICAgICAgICAgICdzdmcvU1ZHTVBhdGhFbGVtZW50LmNwcCcsCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDcyMzg0
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTQzNSw3ICsxNDM1
LDYgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmggXAogICAgICAgICBi
aW5kaW5ncy92OC9WOE5QVXRpbHMuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaCBc
Ci0gICAgICAgIGJpbmRpbmdzL3Y4L1Y4U1ZHUE9EVHlwZVdyYXBwZXIuaCBcCiAgICAgICAgIGJp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmggXAogICAgICAgICBiaW5kaW5ncy92OC9WOFdvcmtlckNv
bnRleHRFdmVudExpc3RlbmVyLmggXAogICAgICAgICBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0
RXhlY3V0aW9uUHJveHkuaCBcCkBAIC0yMzUxLDkgKzIzNTAsNiBAQCBIRUFERVJTICs9IFwKICAg
ICBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmggXAogICAgIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuaCBcCiAgICAgc3ZnL0NvbG9yRGlzdGFuY2UuaCBcCi0gICAgc3ZnL0RlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5LmggXAotICAgIHN2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0cy5oIFwKLSAgICBzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCBc
CiAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oIFwKICAgICBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggXAogICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
cmV2aXNpb24gNzIzODEpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02MDI4NiwxMCArNjAyODYsNiBAQAogCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTU1ZHQ29udGV4dENhY2hlLmgiDQotCQkJCQk+DQotCQkJCTwvRmls
ZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNTVkdF
bGVtZW50SW5zdGFuY2VDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQpAQCAtNjA0OTgsMTQgKzYwNDk0LDYgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU1NWR1BPRExpc3RDdXN0b20uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8
RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1NWR1BPRFR5cGVXcmFw
cGVyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNUZXh0Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KQEAgLTYyMzk5LDE0ICs2MjM4Nyw2IEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdMaXN0LmgiDQot
CQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdc
U1ZHTGlzdFRyYWl0cy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0xvY2F0YWJsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA3MjM4MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw5ICs4Myw2IEBACiAJCTA4MThBRUUyMEVEQjg2QkMwMDY0N0I2
NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODE4QUVFMDBFREI4NkJDMDA2NDdCNjYgLyogV01MRXZl
bnRIYW5kbGluZ0VsZW1lbnQuY3BwICovOyB9OwogCQkwODE4QUVFMzBFREI4NkJDMDA2NDdCNjYg
LyogV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4MThBRUUxMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhh
bmRsaW5nRWxlbWVudC5oICovOyB9OwogCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyogU1ZH
RWxlbWVudFJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmgg
Ki87IH07Ci0JCTA4MUNERkI4MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDgxQ0RGQjUxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MDgxQ0RGQjkxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5
VHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODFDREZCNjEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlU
cmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQkwODFDREZCQTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUNE
RkI3MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4MUNERkJG
MTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFDREZCRTEyNkVD
RkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4MUQ4MTMxMEVFMEU3
NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRDgxMkYwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRp
bWVyRWxlbWVudC5jcHAgKi87IH07CiAJCTA4MUQ4MTMyMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxU
aW1lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4MUQ4MTMwMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuaCAqLzsgfTsK
QEAgLTk4LDcgKzk1LDYgQEAKIAkJMDgyM0QxNTkxMjdBRDZBQzAwMEVCQzk1IC8qIFNWR0FuaW1h
dGVkSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDgyM0QxNTgxMjdBRDZBQzAwMEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50ZWdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4MjUwOTM5MTI4
QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MjUwOTM4MTI4QkQ0RDgwMEUyRUQ4
RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODJERTQyRDEyOTI2MjE2MDBEOTIzREYgLyogU1ZH
UGF0aFNlZ1dpdGhDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODJERTQyQzEyOTI2MjE2MDBEOTIzREYgLyogU1ZHUGF0aFNlZ1dpdGhDb250
ZXh0LmggKi87IH07Ci0JCTA4MkZDQUM0MTEwOTI3Q0UwMENDNDgyMSAvKiBKU1NWR0NvbnRleHRD
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgy
RkNBQzMxMTA5MjdDRTAwQ0M0ODIxIC8qIEpTU1ZHQ29udGV4dENhY2hlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDgzMTkyQUExMTJCNDMwNTAw
ODNDM0I5IC8qIFJlbmRlclNWR1Jlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODMxOTJBNzExMkI0MzA1MDA4M0MzQjkgLyogUmVuZGVyU1ZH
UmVzb3VyY2UuaCAqLzsgfTsKIAkJMDgzMTkyQUIxMTJCNDMwNTAwODNDM0I5IC8qIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MzE5MkE4MTEyQjQzMDUwMDgzQzNCOSAvKiBSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAgKi87IH07CiAJCTA4MzE5MkFDMTEyQjQzMDUwMDgzQzNCOSAvKiBSZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDgzMTkyQTkxMTJCNDMwNTAwODNDM0I5IC8qIFJlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmggKi87IH07CkBAIC0xNjksNyArMTY1LDYgQEAKIAkJMDg3NDRCQUEwRURCN0Q4NjAwNEM5RTYz
IC8qIFdNTE9uRXZlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4NzQ0QkE5MEVEQjdEODYwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxl
bWVudC5jcHAgKi87IH07CiAJCTA4NzQ0QkFFMEVEQjdEOTIwMDRDOUU2MyAvKiBXTUxPbkV2ZW50
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg3NDRCQUQwRURCN0Q5MjAwNEM5RTYzIC8qIFdNTE9uRXZlbnRFbGVtZW50LmggKi87IH07CiAJ
CTA4N0I4NDk2MTI3MkNFQzgwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODdCODQ5NTEyNzJDRUM3MDBB
MTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTA4N0Q5N0JGMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BP
RExpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4N0Q5N0JFMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BPRExpc3RDdXN0b20uaCAqLzsg
fTsKIAkJMDg3RkZBMEYwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODdG
RkEwRDBFRkYzRUQzMDA5REJEODggLyogV01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcCAqLzsg
fTsKIAkJMDg3RkZBMTAwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3RkZB
MEUwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5oICovOyB9Owog
CQkwODgwN0I3NjBFRDcwOUFCMDAzRjY5NzUgLyogV01MR29FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODA3QjZBMEVENzA5QUIwMDNG
Njk3NSAvKiBXTUxHb0VsZW1lbnQuY3BwICovOyB9OwpAQCAtMzk2Niw3ICszOTYxLDYgQEAKIAkJ
QjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovOyB9OwogCQlCMjAxMTEwNzBBQjc3NDA1
MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjAxMTEwNTBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxl
bWVudC5jcHAgKi87IH07CiAJCUIyMDExMTA4MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjAx
MTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oICovOyB9OwotCQlCMjExMjdB
NjBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUz
IC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCAqLzsgfTsKIAkJQjIyMjc5NjIwRDAwQkYyMjAwNzFC
NzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc3Q0IwRDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2Uu
Y3BwICovOyB9OwogCQlCMjIyNzk2MzBEMDBCRjIyMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3Q0Mw
RDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuaCAqLzsgfTsKIAkJQjIyMjc5NjQwRDAw
QkYyMjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3Q0QwRDAwQkYxRjAwNzFCNzgyIC8qIEdy
YWRpZW50QXR0cmlidXRlcy5oICovOyB9OwpAQCAtNDA5NCw4ICs0MDg4LDYgQEAKIAkJQjIyMjdB
MzkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTMwRDAwQkYyMDAw
NzFCNzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oICovOyB9OwogCQlCMjIyN0EzQjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTUwRDAwQkYyMDAwNzFCNzgyIC8qIFNW
R0xpbmVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBM0MwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0xpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjIyNzhBNjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGluZUVsZW1lbnQuaCAqLzsgfTsK
LQkJQjIyMjdBM0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEE4MEQwMEJGMjAwMDcxQjc4MiAv
KiBTVkdMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQjIyMjdBM0YwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpc3RUcmFpdHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEE5MEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdMaXN0VHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjdBNDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0
YWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzhBQTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTG9jYXRhYmxlLmNwcCAqLzsgfTsKIAkJQjIy
MjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QUIwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR0xvY2F0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUIyMjI3QTQzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXJrZXJFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEFE
MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdNYXJrZXJFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTYxMjIs
OSArNjExNCw2IEBACiAJCTA4MThBRUUwMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRs
aW5nRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxF
dmVudEhhbmRsaW5nRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
MThBRUUxMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyog
U1ZHRWxlbWVudFJhcmVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0VsZW1lbnRSYXJlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODFDREZC
NTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDgxQ0RGQjYxMjZFQ0ZEQjAwRDIx
NUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4MUNERkI3MTI2RUNGREIwMEQyMTVD
QSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODFDREZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4MUQ4MTJGMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MVGltZXJFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRDgxMzAwRUUwRTc0RDAwRDczNjg5
IC8qIFdNTFRpbWVyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
TUxUaW1lckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMzcsNyAr
NjEyNiw2IEBACiAJCTA4MjNEMTU4MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRJbnRlZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MjUwOTM4MTI4QkQ0RDgwMEUyRUQ4
RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4MkRFNDJDMTI5MjYyMTYwMEQ5MjNERiAvKiBTVkdQYXRoU2VnV2l0aENvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ1dpdGhDb250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4MkZDQUMzMTEwOTI3Q0UwMEND
NDgyMSAvKiBKU1NWR0NvbnRleHRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0NvbnRleHRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODMxOTJBNzExMkI0MzA1MDA4M0MzQjkgLyogUmVuZGVyU1ZHUmVzb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDgzMTkyQTgxMTJCNDMwNTAwODNDM0I5IC8qIFJlbmRlclNWR1Jl
c291cmNlTWFza2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDgzMTkyQTkxMTJCNDMwNTAwODNDM0I5IC8qIFJlbmRlclNWR1Jlc291cmNlTWFza2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNlTWFza2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA2LDcgKzYxOTQsNiBAQAogCQkwODc0
NEJBOTBFREI3RDg2MDA0QzlFNjMgLyogV01MT25FdmVudEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MT25FdmVudEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODc0NEJBRDBFREI3RDkyMDA0QzlFNjMgLyogV01MT25F
dmVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MT25FdmVu
dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3Qjg0OTUxMjcyQ0VD
NzAwQTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRBbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwODdEOTdCRTEwRkI4RDc3MDBDMDA4NzQgLyogSlNTVkdQT0RMaXN0Q3VzdG9tLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHUE9ETGlzdEN1c3RvbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODdGRkEwRDBFRkYzRUQzMDA5REJEODggLyogV01MSW5z
ZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4N0ZGQTBFMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2VuZEVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MSW5zZXJ0ZWRMZWdlbmRF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODA3QjZBMEVENzA5QUIw
MDNGNjk3NSAvKiBXTUxHb0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV01MR29FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTk4MTcsNyArOTgwNCw2IEBACiAJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJl
c2l6ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VSZXNp
emVyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMDExMTA1MEFCNzc0
MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NWR0FFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlw
ZVdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHUE9EVHlw
ZVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3Q0IwRDAwQkYx
RjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbG9yRGlzdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjIyNzdDQzBEMDBCRjFGMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JEaXN0YW5jZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjIyNzdDRDBEMDBCRjFGMDA3MUI3ODIgLyogR3JhZGllbnRBdHRy
aWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFkaWVudEF0dHJp
YnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDE3LDggKzEwMDAzLDYg
QEAKIAkJQjIyMjc4QTUwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMaW5lRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEE2MEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdMaW5lRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGlu
ZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4QTcwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U1ZHTGluZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzhB
ODBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzhB
OTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGlzdFRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHTGlzdFRyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjIyNzhBQTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTG9jYXRhYmxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMb2NhdGFibGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhBQjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTG9j
YXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMb2NhdGFibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4QUMwRDAwQkYyMDAwNzFCNzgy
IC8qIFNWR0xvY2F0YWJsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0xvY2F0YWJs
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjA2OSw5ICsxNjA1Myw2IEBA
CiAJCQkJMDgxQ0RGQkQxMjZFQ0ZFODAwRDIxNUNBIC8qIHByb3BlcnRpZXMgKi8sCiAJCQkJQjIy
Mjc3Q0IwRDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovLAogCQkJCUIyMjI3
N0NDMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmggKi8sCi0JCQkJMDgxQ0RGQjUx
MjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmggKi8sCi0J
CQkJMDgxQ0RGQjYxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzLmggKi8sCi0JCQkJMDgxQ0RGQjcxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0
ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmggKi8sCiAJCQkJRTQxNUYxODMwRDlBMUE4MzAwMzNDRTk3
IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovLAogCQkJCUU0MTVGMTBDMEQ5QTA1ODcwMDMzQ0U5
NyAvKiBFbGVtZW50VGltZUNvbnRyb2wuaWRsICovLAogCQkJCUIyMjI3N0NEMEQwMEJGMUYwMDcx
Qjc4MiAvKiBHcmFkaWVudEF0dHJpYnV0ZXMuaCAqLywKQEAgLTE2MzEwLDggKzE2MjkxLDYgQEAK
IAkJCQlCMjIyNzhBNTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGluZUVsZW1lbnQuY3BwICovLAog
CQkJCUIyMjI3OEE2MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oICovLAogCQkJ
CUIyMjI3OEE3MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5pZGwgKi8sCi0JCQkJ
QjIyMjc4QTgwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpc3QuaCAqLywKLQkJCQlCMjIyNzhBOTBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHTGlzdFRyYWl0cy5oICovLAogCQkJCUIyMjI3OEFBMEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdMb2NhdGFibGUuY3BwICovLAogCQkJCUIyMjI3OEFCMEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdMb2NhdGFibGUuaCAqLywKIAkJCQlCMjIyNzhBQzBEMDBCRjIwMDA3MUI3
ODIgLyogU1ZHTG9jYXRhYmxlLmlkbCAqLywKQEAgLTE2OTIxLDcgKzE2OTAwLDYgQEAKIAkJCQk5
M0I3MEQ0RjA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCAq
LywKIAkJCQk5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmggKi8sCiAJCQkJMTRDRDhEODExMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hhcmVkV29ya2Vy
Q3VzdG9tLmNwcCAqLywKLQkJCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RU
eXBlV3JhcHBlci5oICovLAogCQkJCUUxQzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckNvbnRleHRCYXNlLmNwcCAqLywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNX
b3JrZXJDb250ZXh0QmFzZS5oICovLAogCQkJCUYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBK
U1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICovLApAQCAtMTcxMDksMTEgKzE3MDg3LDkg
QEAKIAkJCQk1MUQwQzUxNTBEQUE5MEI3MDAzQjM4MzEgLyogSlNTdG9yYWdlQ3VzdG9tLmNwcCAq
LywKIAkJCQlCQzk4QTI3QzBDMEM5OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0Q3VzdG9tLmNw
cCAqLywKIAkJCQlBODRFQkQ3NzBDQjhDODkyMDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAgKi8sCi0JCQkJMDgyRkNBQzMxMTA5MjdDRTAwQ0M0ODIxIC8qIEpTU1ZHQ29udGV4
dENhY2hlLmggKi8sCiAJCQkJMDhBNDhBNkQwRTg2Q0Y2RDAwRTIyNUREIC8qIEpTU1ZHRWxlbWVu
dEluc3RhbmNlQ3VzdG9tLmNwcCAqLywKIAkJCQkwOEU0RkU0NTBFMkJENDE0MDBGNENBRTAgLyog
SlNTVkdMZW5ndGhDdXN0b20uY3BwICovLAogCQkJCUIyQzk2RDhDMEIzQUYyQjcwMDVFODBFQyAv
KiBKU1NWR1BhdGhTZWdDdXN0b20uY3BwICovLAotCQkJCTA4N0Q5N0JFMTBGQjhENzcwMEMwMDg3
NCAvKiBKU1NWR1BPRExpc3RDdXN0b20uaCAqLywKIAkJCQkxQTJDNDBBQTBERUI1NUFBMDA1QUYx
OUUgLyogSlNUZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQk1MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkg
LyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlG
QUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgKi8sCkBAIC0xODcyMiw5ICsxODY5OCw2IEBA
CiAJCQkJOTMzMDlERTEwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTgyMDgyNDVFNTkwMDFFOUFCQyAvKiBEZXByZWNh
dGVkUHRyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5NkQwODI0NUU1OTAwMUU5QUJD
IC8qIERlcHJlY2F0ZWRQdHJMaXN0SW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDgxQ0RGQjgx
MjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwODFDREZCOTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4MUNERkJBMTI2RUNG
REIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzFGQjFBNTcxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzFGQjFBNTkxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1v
dGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRkIxQTVCMTIwQTVEMDYwMERD
MDJBMCAvKiBEZXZpY2VNb3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTIwMjAwLDcgKzIw
MTczLDYgQEAKIAkJCQlCMkZBM0Q1QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDbGlwUGF0aEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVEMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR0NvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1RjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMDgyRkNBQzQxMTA5MjdDRTAwQ0M0ODIxIC8qIEpTU1ZHQ29udGV4dENhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDdXJzb3JF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MzBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENjUwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHRGVzY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjAyODMsOCAr
MjAyNTUsNiBAQAogCQkJCUIyRkEzREREMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdN
b3ZldG9BYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRERGMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1BhdGhTZWdNb3ZldG9SZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUxMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdHRlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwODdEOTdCRjEwRkI4RDc3MDBDMDA4NzQgLyogSlNTVkdQT0RMaXN0Q3VzdG9tLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCMjExMjdBNjBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTUwQUU1Qzk0MTAwREY1OERGIC8qIEpT
U1ZHUG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUzMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNERTYwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUG9seWdvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjA5Njks
MTAgKzIwOTM5LDggQEAKIAkJCQlCMjIyN0EzNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGVuZ3Ro
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMzkwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBM0MwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjIy
N0EzRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgx
MDc2NDQxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDg4QTBFMDkxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYu
aCBpbiBIZWFkZXJzICovLAotCQkJCUIyMjI3QTNGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaXN0
VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0MTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODM4NUZGNjEwRjAxODYwMDBCRkUw
N0IgLyogU1ZHTWFya2VyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNDQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NWR0NvbnRleHRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTVkdDb250ZXh0Q2FjaGUuaAkocmV2aXNpb24gNzIzODApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHQ29udGV4dENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsOTcgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIEpTU1ZH
Q29udGV4dENhY2hlX2gKLSNkZWZpbmUgSlNTVkdDb250ZXh0Q2FjaGVfaAotCi0jaWYgRU5BQkxF
KFNWRykKLSNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTU9iamVjdDsKLQotY2xhc3Mg
SlNTVkdDb250ZXh0Q2FjaGUgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHVibGljOgotICAgIHR5
cGVkZWYgSGFzaE1hcDxET01PYmplY3QqLCBTVkdFbGVtZW50Kj4gV3JhcHBlck1hcDsKLQotICAg
IHN0YXRpYyBXcmFwcGVyTWFwJiB3cmFwcGVyTWFwKCkKLSAgICB7Ci0gICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoV3JhcHBlck1hcCwgc193cmFwcGVyTWFwLCAoKSk7Ci0gICAgICAgIHJldHVy
biBzX3dyYXBwZXJNYXA7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYWRkV3JhcHBlcihET01P
YmplY3QqIHdyYXBwZXIsIFNWR0VsZW1lbnQqIGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NF
UlQod3JhcHBlcik7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgICAgICBwYWlyPFdy
YXBwZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSB3cmFwcGVyTWFwKCkuYWRkKHdyYXBw
ZXIsIGNvbnRleHQpOwotICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICAgICAg
V3JhcHBlck1hcDo6aXRlcmF0b3ImIGl0ID0gcmVzdWx0LmZpcnN0OwotICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChpdCwgaXQtPnNlY29uZCA9PSBjb250ZXh0KTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIGZvcmdldFdyYXBwZXIoRE9NT2JqZWN0KiB3cmFwcGVyKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKHdyYXBwZXIpOwotCi0gICAgICAgIFdyYXBwZXJNYXAmIG1hcCA9
IHdyYXBwZXJNYXAoKTsKLSAgICAgICAgV3JhcHBlck1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmlu
ZCh3cmFwcGVyKTsKLSAgICAgICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBtYXAucmVtb3ZlKGl0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCBwcm9wYWdhdGVTVkdET01DaGFuZ2UoRE9NT2JqZWN0KiB3cmFwcGVyLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgV3JhcHBlck1hcCYgbWFwID0g
d3JhcHBlck1hcCgpOwotICAgICAgICBXcmFwcGVyTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5k
KHdyYXBwZXIpOwotICAgICAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHQgPSBpdC0+c2Vjb25kOwotICAgICAg
ICBBU1NFUlQoY29udGV4dCk7Ci0KLSAgICAgICAgY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdl
ZChhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU1ZHRWxlbWVudCogc3ZnQ29u
dGV4dEZvckRPTU9iamVjdChET01PYmplY3QqIHdyYXBwZXIpCi0gICAgewotICAgICAgICBBU1NF
UlQod3JhcHBlcik7Ci0KLSAgICAgICAgV3JhcHBlck1hcCYgbWFwID0gd3JhcHBlck1hcCgpOwot
ICAgICAgICBXcmFwcGVyTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKHdyYXBwZXIpOwotICAg
ICAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAg
ICAgU1ZHRWxlbWVudCogY29udGV4dCA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIEFTU0VSVChjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAgfQotCi19OwotCi19Ci0KLSNlbmRp
ZgotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHUE9ETGlzdEN1c3RvbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RMaXN0Q3VzdG9tLmgJ
KHJldmlzaW9uIDcyMzgwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRExpc3RDdXN0
b20uaAkod29ya2luZyBjb3B5KQpAQCAtMSwxOTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgSlNTVkdQT0RMaXN0Q3VzdG9tX2gKLSNkZWZpbmUgSlNTVkdQT0RM
aXN0Q3VzdG9tX2gKLQotI2luY2x1ZGUgIkpTU1ZHQ29udGV4dENhY2hlLmgiCi0jaW5jbHVkZSAi
SlNTVkdQT0RUeXBlV3JhcHBlci5oIgotI2luY2x1ZGUgIlNWR0xpc3QuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgSlNTVkdQT0RMaXN0Q3VzdG9tIHsKLQotLy8gSGVscGVy
IHN0cnVjdHVyZSBvbmx5IGNvbnRhaW5pbmcgcHVibGljIHR5cGVkZWZzLCBhcyBDKysgZG9lcyBu
b3QgYWxsb3cgdGVtcGxhdGl6ZWQgdHlwZWRlZnMKLXRlbXBsYXRlPHR5cGVuYW1lIFBPRFR5cGU+
Ci1zdHJ1Y3QgSlNTVkdQT0RMaXN0VHJhaXRzIHsgCi0gICAgdHlwZWRlZiBTVkdQT0RMaXN0SXRl
bTxQT0RUeXBlPiBQT0RMaXN0SXRlbTsKLSAgICB0eXBlZGVmIFNWR0xpc3Q8UmVmUHRyPFBPRExp
c3RJdGVtPiA+IFBPRExpc3Q7Ci0gICAgdHlwZWRlZiBQT0RUeXBlICgqQ29udmVyc2lvbkNhbGxi
YWNrKShKU0M6OkpTVmFsdWUpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNQT0RMaXN0VHlw
ZSwgdHlwZW5hbWUgUE9EVHlwZT4KLXN0YXRpYyBKU0M6OkpTVmFsdWUgZmluaXNoR2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb25Db2RlJiBlYywgSlNQT0RMaXN0VHlwZSogd3Jh
cHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8dHlwZW5h
bWUgSlNTVkdQT0RMaXN0VHJhaXRzPFBPRFR5cGU+OjpQT0RMaXN0SXRlbT4gaXRlbSkKLXsKLSAg
ICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAg
cmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKLSAgICB9Ci0gICAgCi0gICAgdHlwZW5hbWUgSlNT
VkdQT0RMaXN0VHJhaXRzPFBPRFR5cGU+OjpQT0RMaXN0KiBsaXN0SW1wID0gd3JhcHBlci0+aW1w
bCgpOwotCi0gICAgU1ZHRWxlbWVudCogY29udGV4dCA9IEpTU1ZHQ29udGV4dENhY2hlOjpzdmdD
b250ZXh0Rm9yRE9NT2JqZWN0KHdyYXBwZXIpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHdyYXBw
ZXItPmdsb2JhbE9iamVjdCgpLAotICAgICAgICAgICAgICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJD
cmVhdG9yRm9yTGlzdDxQT0RUeXBlPjo6Y3JlYXRlKGl0ZW0uZ2V0KCksIGxpc3RJbXAtPmFzc29j
aWF0ZWRBdHRyaWJ1dGVOYW1lKCkpLmdldCgpLCBjb250ZXh0KTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgSlNQT0RMaXN0VHlwZSwgdHlwZW5hbWUgUE9EVHlwZT4KLXN0YXRpYyBKU0M6OkpTVmFs
dWUgZmluaXNoU2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb25Db2RlJiBlYywg
SlNQT0RMaXN0VHlwZSogd3JhcHBlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBKU1NW
R1BPRExpc3RUcmFpdHM8UE9EVHlwZT46OlBPRExpc3RJdGVtPiBpdGVtKQotewotICAgIGlmIChl
YykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICByZXR1cm4g
SlNDOjpqc1VuZGVmaW5lZCgpOwotICAgIH0KLQotICAgIHR5cGVuYW1lIEpTU1ZHUE9ETGlzdFRy
YWl0czxQT0RUeXBlPjo6UE9ETGlzdCogbGlzdEltcCA9IHdyYXBwZXItPmltcGwoKTsKLQotICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUgPSBsaXN0SW1wLT5hc3NvY2lhdGVk
QXR0cmlidXRlTmFtZSgpOwotICAgIEpTU1ZHQ29udGV4dENhY2hlOjpwcm9wYWdhdGVTVkdET01D
aGFuZ2Uod3JhcHBlciwgYXR0cmlidXRlTmFtZSk7Ci0KLSAgICBTVkdFbGVtZW50KiBjb250ZXh0
ID0gSlNTVkdDb250ZXh0Q2FjaGU6OnN2Z0NvbnRleHRGb3JET01PYmplY3Qod3JhcHBlcik7Ci0g
ICAgcmV0dXJuIHRvSlMoZXhlYywgd3JhcHBlci0+Z2xvYmFsT2JqZWN0KCksCi0gICAgICAgICAg
ICAgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PFBPRFR5cGU+OjpjcmVhdGUo
aXRlbS5nZXQoKSwgYXR0cmlidXRlTmFtZSkuZ2V0KCksIGNvbnRleHQpOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBKU1BPRExpc3RUeXBlLCB0eXBlbmFtZSBQT0RUeXBlPgotc3RhdGljIEpTQzo6
SlNWYWx1ZSBmaW5pc2hTZXR0ZXJSZWFkT25seVJlc3VsdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
RXhjZXB0aW9uQ29kZSYgZWMsIEpTUE9ETGlzdFR5cGUqIHdyYXBwZXIsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBKU1NWR1BPRExpc3RUcmFpdHM8UE9EVHlwZT46
OlBPRExpc3RJdGVtPiBpdGVtKQotewotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwotICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotICAg
IH0KLQotICAgIHR5cGVuYW1lIEpTU1ZHUE9ETGlzdFRyYWl0czxQT0RUeXBlPjo6UE9ETGlzdCog
bGlzdEltcCA9IHdyYXBwZXItPmltcGwoKTsKLSAgICBKU1NWR0NvbnRleHRDYWNoZTo6cHJvcGFn
YXRlU1ZHRE9NQ2hhbmdlKHdyYXBwZXIsIGxpc3RJbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1l
KCkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHdyYXBwZXItPmdsb2JhbE9iamVjdCgpLAotICAg
ICAgICAgICAgICAgIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT46OmNyZWF0ZSgq
aXRlbSkuZ2V0KCksIDAgIC8qIG5vIGNvbnRleHQgb24gcHVycG9zZSAqLyk7Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIEpTUE9ETGlzdFR5cGUsIHR5cGVuYW1lIFBPRFR5cGU+Ci1zdGF0aWMgSlND
OjpKU1ZhbHVlIGNsZWFyKEpTUE9ETGlzdFR5cGUqIHdyYXBwZXIsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBKU1NWR1BPRExpc3RUcmFp
dHM8UE9EVHlwZT46OkNvbnZlcnNpb25DYWxsYmFjaykKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICB0eXBlbmFtZSBKU1NWR1BPRExpc3RUcmFpdHM8UE9EVHlwZT46OlBPRExpc3Qq
IGxpc3RJbXAgPSB3cmFwcGVyLT5pbXBsKCk7Ci0gICAgbGlzdEltcC0+Y2xlYXIoZWMpOwotCi0g
ICAgaWYgKGVjKQotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIGVsc2UK
LSAgICAgICAgSlNTVkdDb250ZXh0Q2FjaGU6OnByb3BhZ2F0ZVNWR0RPTUNoYW5nZSh3cmFwcGVy
LCBsaXN0SW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsKLQotICAgIHJldHVybiBKU0M6
OmpzVW5kZWZpbmVkKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTUE9ETGlzdFR5cGUsIHR5
cGVuYW1lIFBPRFR5cGU+Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIGluaXRpYWxpemUoSlNQT0RMaXN0
VHlwZSogd3JhcHBlciwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZW5hbWUgSlNTVkdQT0RMaXN0VHJhaXRzPFBPRFR5cGU+OjpDb252ZXJz
aW9uQ2FsbGJhY2sgY29udmVyc2lvbikKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICB0eXBlbmFtZSBKU1NWR1BPRExpc3RUcmFpdHM8UE9EVHlwZT46OlBPRExpc3QqIGxpc3RJbXAg
PSB3cmFwcGVyLT5pbXBsKCk7Ci0gICAgcmV0dXJuIGZpbmlzaFNldHRlcjxKU1BPRExpc3RUeXBl
LCBQT0RUeXBlPihleGVjLCBlYywgd3JhcHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpc3RJbXAtPmluaXRpYWxpemUoSlNTVkdQT0RMaXN0VHJh
aXRzPFBPRFR5cGU+OjpQT0RMaXN0SXRlbTo6Y29weShjb252ZXJzaW9uKGV4ZWMtPmFyZ3VtZW50
KDApKSksIGVjKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTUE9ETGlzdFR5cGUsIHR5cGVu
YW1lIFBPRFR5cGU+Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIGdldEl0ZW0oSlNQT0RMaXN0VHlwZSog
d3JhcHBlciwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZW5hbWUgSlNTVkdQT0RMaXN0VHJhaXRzPFBPRFR5cGU+OjpDb252ZXJzaW9uQ2FsbGJh
Y2spCi17Ci0gICAgYm9vbCBpbmRleE9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBm
aW5pdGVJbnQzMlZhbHVlKGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLCBpbmRleE9rKTsKLSAgICBp
ZiAoIWluZGV4T2spIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFU
Q0hfRVJSKTsKLSAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB0eXBlbmFtZSBKU1NWR1BPRExpc3RUcmFpdHM8
UE9EVHlwZT46OlBPRExpc3QqIGxpc3RJbXAgPSB3cmFwcGVyLT5pbXBsKCk7Ci0gICAgcmV0dXJu
IGZpbmlzaEdldHRlcjxKU1BPRExpc3RUeXBlLCBQT0RUeXBlPihleGVjLCBlYywgd3JhcHBlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJbXAt
PmdldEl0ZW0oaW5kZXgsIGVjKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTUE9ETGlzdFR5
cGUsIHR5cGVuYW1lIFBPRFR5cGU+Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIGluc2VydEl0ZW1CZWZv
cmUoSlNQT0RMaXN0VHlwZSogd3JhcHBlciwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgSlNTVkdQT0RMaXN0VHJhaXRz
PFBPRFR5cGU+OjpDb252ZXJzaW9uQ2FsbGJhY2sgY29udmVyc2lvbikKLXsKLSAgICBib29sIGlu
ZGV4T2sgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IGZpbml0ZUludDMyVmFsdWUoZXhl
Yy0+YXJndW1lbnQoMSksIGV4ZWMsIGluZGV4T2spOwotICAgIGlmICghaW5kZXhPaykgewotICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgICAgICBy
ZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIHR5cGVuYW1lIEpTU1ZHUE9ETGlzdFRyYWl0czxQT0RUeXBlPjo6UE9ETGlzdCog
bGlzdEltcCA9IHdyYXBwZXItPmltcGwoKTsKLSAgICByZXR1cm4gZmluaXNoU2V0dGVyPEpTUE9E
TGlzdFR5cGUsIFBPRFR5cGU+KGV4ZWMsIGVjLCB3cmFwcGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEltcC0+aW5zZXJ0SXRlbUJlZm9yZShK
U1NWR1BPRExpc3RUcmFpdHM8UE9EVHlwZT46OlBPRExpc3RJdGVtOjpjb3B5KGNvbnZlcnNpb24o
ZXhlYy0+YXJndW1lbnQoMCkpKSwgaW5kZXgsIGVjKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEpTUE9ETGlzdFR5cGUsIHR5cGVuYW1lIFBPRFR5cGU+Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIHJl
cGxhY2VJdGVtKEpTUE9ETGlzdFR5cGUqIHdyYXBwZXIsIEpTQzo6RXhlY1N0YXRlKiBleGVjLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBKU1NWR1BPRExpc3RUcmFp
dHM8UE9EVHlwZT46OkNvbnZlcnNpb25DYWxsYmFjayBjb252ZXJzaW9uKQotewotICAgIGJvb2wg
aW5kZXhPayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGluZGV4ID0gZmluaXRlSW50MzJWYWx1ZShl
eGVjLT5hcmd1bWVudCgxKSwgZXhlYywgaW5kZXhPayk7Ci0gICAgaWYgKCFpbmRleE9rKSB7Ci0g
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0gICAgICAg
IHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgdHlwZW5hbWUgSlNTVkdQT0RMaXN0VHJhaXRzPFBPRFR5cGU+OjpQT0RMaXN0
KiBsaXN0SW1wID0gd3JhcHBlci0+aW1wbCgpOwotICAgIHJldHVybiBmaW5pc2hTZXR0ZXI8SlNQ
T0RMaXN0VHlwZSwgUE9EVHlwZT4oZXhlYywgZWMsIHdyYXBwZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SW1wLT5yZXBsYWNlSXRlbShKU1NW
R1BPRExpc3RUcmFpdHM8UE9EVHlwZT46OlBPRExpc3RJdGVtOjpjb3B5KGNvbnZlcnNpb24oZXhl
Yy0+YXJndW1lbnQoMCkpKSwgaW5kZXgsIGVjKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpT
UE9ETGlzdFR5cGUsIHR5cGVuYW1lIFBPRFR5cGU+Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIHJlbW92
ZUl0ZW0oSlNQT0RMaXN0VHlwZSogd3JhcHBlciwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgSlNTVkdQT0RMaXN0VHJhaXRzPFBP
RFR5cGU+OjpDb252ZXJzaW9uQ2FsbGJhY2spCi17Ci0gICAgYm9vbCBpbmRleE9rID0gZmFsc2U7
Ci0gICAgdW5zaWduZWQgaW5kZXggPSBmaW5pdGVJbnQzMlZhbHVlKGV4ZWMtPmFyZ3VtZW50KDAp
LCBleGVjLCBpbmRleE9rKTsKLSAgICBpZiAoIWluZGV4T2spIHsKLSAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICAgICAgcmV0dXJuIEpTQzo6anNV
bmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB0eXBl
bmFtZSBKU1NWR1BPRExpc3RUcmFpdHM8UE9EVHlwZT46OlBPRExpc3QqIGxpc3RJbXAgPSB3cmFw
cGVyLT5pbXBsKCk7Ci0gICAgcmV0dXJuIGZpbmlzaFNldHRlclJlYWRPbmx5UmVzdWx0PEpTUE9E
TGlzdFR5cGUsIFBPRFR5cGU+KGV4ZWMsIGVjLCB3cmFwcGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SW1wLT5yZW1v
dmVJdGVtKGluZGV4LCBlYykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU1BPRExpc3RUeXBl
LCB0eXBlbmFtZSBQT0RUeXBlPgotc3RhdGljIEpTQzo6SlNWYWx1ZSBhcHBlbmRJdGVtKEpTUE9E
TGlzdFR5cGUqIHdyYXBwZXIsIEpTQzo6RXhlY1N0YXRlKiBleGVjLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGVuYW1lIEpTU1ZHUE9ETGlzdFRyYWl0czxQT0RUeXBlPjo6Q29u
dmVyc2lvbkNhbGxiYWNrIGNvbnZlcnNpb24pCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgdHlwZW5hbWUgSlNTVkdQT0RMaXN0VHJhaXRzPFBPRFR5cGU+OjpQT0RMaXN0KiBsaXN0
SW1wID0gd3JhcHBlci0+aW1wbCgpOwotICAgIHJldHVybiBmaW5pc2hTZXR0ZXI8SlNQT0RMaXN0
VHlwZSwgUE9EVHlwZT4oZXhlYywgZWMsIHdyYXBwZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SW1wLT5hcHBlbmRJdGVtKEpTU1ZHUE9ETGlz
dFRyYWl0czxQT0RUeXBlPjo6UE9ETGlzdEl0ZW06OmNvcHkoY29udmVyc2lvbihleGVjLT5hcmd1
bWVudCgwKSkpLCBlYykpOwotfQotCi19Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAkocmV2aXNpb24gNzIzODApCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw0MTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSlNTVkdQT0RUeXBl
V3JhcHBlcl9oCi0jZGVmaW5lIEpTU1ZHUE9EVHlwZVdyYXBwZXJfaAotCi0jaWYgRU5BQkxFKFNW
RykKLSNpbmNsdWRlICJKU1NWR0NvbnRleHRDYWNoZS5oIgotI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgRE9NT2JqZWN0OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgotY2xhc3Mg
SlNTVkdQT0RUeXBlV3JhcHBlciA6IHB1YmxpYyBSZWZDb3VudGVkPEpTU1ZHUE9EVHlwZVdyYXBw
ZXI8UE9EVHlwZT4gPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SlNTVkdQT0RUeXBlV3JhcHBl
cigpIHsgfQotCi0gICAgdmlydHVhbCBvcGVyYXRvciBQT0RUeXBlKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjb21taXRDaGFuZ2UoUE9EVHlwZSwgRE9NT2JqZWN0KikgPSAwOwotfTsKLQotLy8g
VGhpcyBmaWxlIGNvbnRhaW5zIEpTIHdyYXBwZXIgb2JqZWN0cyBmb3IgU1ZHIGRhdGF0eXBlcywg
dGhhdCBhcmUgcGFzc2VkIGFyb3VuZCBieSB2YWx1ZQotLy8gaW4gV2ViQ29yZS9zdmcgKGFrYS4g
J1BPRCB0eXBlcycpLiBGb3IgaW5zdGFuY2UgU1ZHTWF0cml4IGlzIG1hcHBlZCB0byBBZmZpbmVU
cmFuc2Zvcm0sIGFuZAotLy8gcGFzc2VkIGFyb3VuZCBhcyBjb25zdCByZWZlcmVuY2UuIFNWRyBE
T00gZGVtYW5kcyB0aGVzZSBvYmplY3RzIHRvIGJlICJsaXZlIiwgY2hhbmdlcyB0byBhbnkKLS8v
IG9mIHRoZSB3cml0YWJsZSBhdHRyaWJ1dGVzIG9mIFNWR01hdHJpeCBuZWVkIHRvIGJlIHJlZmxl
Y3RlZCBpbiB0aGUgb2JqZWN0IHdoaWNoIGV4cG9zZWQgdGhlCi0vLyBTVkdNYXRyaXggb2JqZWN0
IChpLmUuICdzb21lRWxlbWVudC50cmFuc2Zvcm0ubWF0cml4LmEgPSA1MC4wJywgaW4gdGhhdCBj
YXNlICdTVkdUcmFuc2Zvcm0nKS4KLS8vIFRoZSBTVkdUcmFuc2Zvcm0gY2xhc3Mgc3RvcmVzIGl0
cyAiQWZmaW5lVHJhbnNmb3JtIG1fbWF0cml4IiBvYmplY3Qgb24gdGhlIHN0YWNrLiBJZiBpdCB3
b3VsZAotLy8gYmUgc3RvcmVkIGFzIHBvaW50ZXIgd2UgY291bGQganVzdCBidWlsZCBhbiBhdXRv
LWdlbmVyYXRlZCBKU1NWRyogd3JhcHBlciBvYmplY3QgYXJvdW5kIGl0Ci0vLyBhbmQgYWxsIGNo
YW5nZXMgdG8gdGhhdCBvYmplY3Qgd291bGQgYXV0b21hdGljYWxseSBhZmZlY3QgdGhlIEFmZmlu
ZVRyYW5zZm9ybSogb2JqZWN0IHN0b3JlZAotLy8gaW4gdGhlIFNWR1RyYW5zZm9ybSBvYmplY3Qu
IEZvciB0aGUgc2FrZSBvZiBlZmZpY2llbmN5IGFuZCBtZW1vcnkgd2UgZG9uJ3QgcGFzcyBhcm91
bmQgYW55Ci0vLyBwcmltaXRpdmUgdmFsdWVzIGFzIHBvaW50ZXJzLCBzbyBhIGN1c3RvbSBKUyB3
cmFwcGVyIG9iamVjdCBpcyBuZWVkZWQgZm9yIGFsbCBTVkcgdHlwZXMsIHRoYXQKLS8vIGFyZSBp
bnRlcm5hbGx5IHJlcHJlc2VudGVkIGJ5IFBPRCB0eXBlcyAoU1ZHUmVjdCA8LT4gRmxvYXRSZWN0
LCBTVkdQb2ludCA8LT4gRmxvYXRQb2ludCwgLi4uKS4KLS8vIFRob3NlIGN1c3RvbSB3cmFwcGVy
cyBhcmUgY2FsbGVkIEpTU1ZHUE9EVHlwZVdyYXBwZXIgYW5kIGFyZSBjYXBhYmxlIG9mIHVwZGF0
aW5nIHRoZSBQT0QgdHlwZXMKLS8vIGJ5IHRha2luZyBmdW5jdGlvbiBwb2ludGVycyB0byB0aGUg
Z2V0dGVyICYgc2V0dGVyIGZ1bmN0aW9ucyBvZiB0aGUgImNyZWF0b3Igb2JqZWN0IiwgdGhlIG9i
amVjdAotLy8gd2hpY2ggZXhwb3NlZCBhIFNWRyBQT0QgdHlwZS4gRm9yIGV4YW1wbGUsIHRoZSBK
U1NWR1BPRFR5cGVXcmFwcGVyIG9iamVjdCB3cmFwcGluZyBhIFNWR01hdHJpeAotLy8gb2JqZWN0
IHRha2VzIChTVkdUcmFuc2Zvcm0qLCAmU1ZHVHJhbnNmb3JtOjptYXRyaXgsICZTVkdUcmFuc2Zv
cm06OnNldE1hdHJpeCkuIEEgSlMgY2FsbCBsaWtlCi0vLyAic29tZUVsZW1lbnQudHJhbnNmb3Jt
Lm1hdHJpeC5hID0gNTAuMCcgY2F1c2VzIHRoZSBKU1NWR01hdHJpeCBvYmplY3QgdG8gY2FsbCBT
VkdUcmFuc2Zvcm06OnNldE1hdHJpeCwKLS8vIG1ldGhvZCwgd2hpY2ggaW4gdHVybiBub3RpZmll
cyAnc29tZUVsZW1lbnQnIHRoYXQgdGhlICdTVkdOYW1lczo6dHJhbnNmb3JtQXR0cicgaGFzIGNo
YW5nZWQuCi0vLyBUaGF0J3MgYSBzaG9ydCBza2V0Y2ggb2Ygb3VyIFNWRyBET00gaW1wbGVtZW50
YXRpb24uCi0KLS8vIFJlcHJlc2VudHMgYSBKUyB3cmFwcGVyIG9iamVjdCBmb3IgU1ZHQW5pbWF0
ZWQqIGNsYXNzZXMsIGV4cG9zaW5nIFNWRyBQT0QgdHlwZXMgdGhhdCBjb250YWluIHdyaXRhYmxl
IHByb3BlcnRpZXMKLS8vIChUd28gY2FzZXM6IFNWR0FuaW1hdGVkTGVuZ3RoIGV4cG9zaW5nIFNW
R0xlbmd0aCwgU1ZHQW5pbWF0ZWRSZWN0IGV4cG9zaW5nIFNWR1JlY3QpCi0KLSNpZiBDT01QSUxF
UihNU1ZDKQotLy8gR2V0dGVyTWV0aG9kIGFuZCBTZXR0ZXJNZXRob2QgYXJlIGVhY2ggMTIgYnl0
ZXMuIFdlIGhhdmUgdG8gcGFjayB0byBhIHNpemUKLS8vIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0
byB0aGF0IHRvIGF2b2lkIGFuIGFsaWdubWVudCB3YXJuaW5nIChDNDEyMSkuIDE2IGlzCi0vLyB0
aGUgbmV4dC1sYXJnZXN0IHNpemUgYWxsb3dlZCBmb3IgcGFja2luZywgc28gd2UgdXNlIHRoYXQu
Ci0jcHJhZ21hIHBhY2socHVzaCwgMTYpCi0jZW5kaWYKLXRlbXBsYXRlPHR5cGVuYW1lIFBPRFR5
cGUsIHR5cGVuYW1lIFBPRFR5cGVDcmVhdG9yPgotY2xhc3MgSlNTVkdEeW5hbWljUE9EVHlwZVdy
YXBwZXIgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPiB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBQT0RUeXBlIChQT0RUeXBlQ3JlYXRvcjo6KkdldHRlck1ldGhvZCkoKSBjb25z
dDsgCi0gICAgdHlwZWRlZiB2b2lkIChQT0RUeXBlQ3JlYXRvcjo6KlNldHRlck1ldGhvZCkoY29u
c3QgUE9EVHlwZSYpOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNTVkdEeW5hbWljUE9EVHlw
ZVdyYXBwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFBPRFR5cGVDcmVhdG9yPiBjcmVhdG9yLCBHZXR0
ZXJNZXRob2QgZ2V0dGVyLCBTZXR0ZXJNZXRob2Qgc2V0dGVyKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBKU1NWR0R5bmFtaWNQT0RUeXBlV3JhcHBlcihjcmVhdG9yLCBnZXR0
ZXIsIHNldHRlcikpOwotICAgIH0KLQotICAgIHZpcnR1YWwgb3BlcmF0b3IgUE9EVHlwZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gKG1fY3JlYXRvci5nZXQoKS0+Km1fZ2V0dGVyKSgpOwotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoUE9EVHlwZSB0eXBlLCBET01PYmpl
Y3QqIHdyYXBwZXIpCi0gICAgewotICAgICAgICAobV9jcmVhdG9yLmdldCgpLT4qbV9zZXR0ZXIp
KHR5cGUpOwotICAgICAgICBKU1NWR0NvbnRleHRDYWNoZTo6cHJvcGFnYXRlU1ZHRE9NQ2hhbmdl
KHdyYXBwZXIsIG1fY3JlYXRvci0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEpTU1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyKFBhc3NSZWZQdHI8UE9E
VHlwZUNyZWF0b3I+IGNyZWF0b3IsIEdldHRlck1ldGhvZCBnZXR0ZXIsIFNldHRlck1ldGhvZCBz
ZXR0ZXIpCi0gICAgICAgIDogbV9jcmVhdG9yKGNyZWF0b3IpCi0gICAgICAgICwgbV9nZXR0ZXIo
Z2V0dGVyKQotICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX2NyZWF0b3IpOwotICAgICAgICBBU1NFUlQobV9nZXR0ZXIpOwotICAgICAgICBBU1NFUlQo
bV9zZXR0ZXIpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkpTU1ZHRHluYW1pY1BPRFR5cGVXcmFw
cGVyKCk7Ci0KLSAgICAvLyBVcGRhdGUgY2FsbGJhY2tzCi0gICAgUmVmUHRyPFBPRFR5cGVDcmVh
dG9yPiBtX2NyZWF0b3I7Ci0gICAgR2V0dGVyTWV0aG9kIG1fZ2V0dGVyOwotICAgIFNldHRlck1l
dGhvZCBtX3NldHRlcjsKLX07Ci0jaWYgQ09NUElMRVIoTVNWQykKLSNwcmFnbWEgcGFjayhwb3Ap
Ci0jZW5kaWYKLQotLy8gUmVwcmVzZW50cyBhIEpTIHdyYXBwZXIgb2JqZWN0IGZvciBTVkcgUE9E
IHR5cGVzIChub3QgZm9yIFNWR0FuaW1hdGVkKiBjbGFzc2VzKS4gQW55IG1vZGlmaWNhdGlvbiB0
byB0aGUgU1ZHIFBPRAotLy8gdHlwZXMgZG9uJ3QgY2F1c2UgYW55IHVwZGF0ZXMgdW5saWtlIEpT
U1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyLiBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIHJldHVybiB2
YWx1ZXMgKGllLiBnZXRCQm94KCkpCi0vLyBhbmQgZm9yIHByb3BlcnRpZXMgd2hlcmUgU1ZHIHNw
ZWNpZmljYXRpb24gZXhwbGljaXRseSBzdGF0ZXMsIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBQ
T0QgdHlwZSBhcmUgaW1tdXRhYmxlLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgotY2xh
c3MgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlciA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVy
PFBPRFR5cGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU1NWR1N0YXRpY1BP
RFR5cGVXcmFwcGVyPiBjcmVhdGUoUE9EVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyKHR5cGUpKTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
cG9kVHlwZTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKFBPRFR5cGUg
dHlwZSwgRE9NT2JqZWN0KikKLSAgICB7Ci0gICAgICAgIG1fcG9kVHlwZSA9IHR5cGU7Ci0gICAg
fQotCi1wcm90ZWN0ZWQ6Ci0gICAgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcihQT0RUeXBlIHR5
cGUpCi0gICAgICAgIDogbV9wb2RUeXBlKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIFBPRFR5
cGUgbV9wb2RUeXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUg
UGFyZW50VHlwZUFyZz4KLWNsYXNzIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXJXaXRoUE9EVHlw
ZVBhcmVudCA6IHB1YmxpYyBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+IHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIEpTU1ZHUE9EVHlwZVdyYXBwZXI8UGFyZW50VHlwZUFyZz4gUGFy
ZW50VHlwZTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBw
ZXJXaXRoUE9EVHlwZVBhcmVudD4gY3JlYXRlKFBPRFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxQYXJl
bnRUeXBlPiBwYXJlbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTU1ZH
U3RhdGljUE9EVHlwZVdyYXBwZXJXaXRoUE9EVHlwZVBhcmVudCh0eXBlLCBwYXJlbnQpKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKFBPRFR5cGUgdHlwZSwgRE9NT2Jq
ZWN0KiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxQ
T0RUeXBlPjo6Y29tbWl0Q2hhbmdlKHR5cGUsIHdyYXBwZXIpOwotICAgICAgICBtX3BhcmVudFR5
cGUtPmNvbW1pdENoYW5nZShQYXJlbnRUeXBlQXJnKHR5cGUpLCB3cmFwcGVyKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldpdGhQT0RUeXBlUGFyZW50
KFBPRFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxQYXJlbnRUeXBlPiBwYXJlbnQpCi0gICAgICAgIDog
SlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPih0eXBlKQotICAgICAgICAsIG1fcGFy
ZW50VHlwZShwYXJlbnQpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxQYXJlbnRUeXBlPiBt
X3BhcmVudFR5cGU7Ci19OwotCi0jaWYgQ09NUElMRVIoTVNWQykKLS8vIEdldHRlck1ldGhvZCBh
bmQgU2V0dGVyTWV0aG9kIGFyZSBlYWNoIDEyIGJ5dGVzLiBXZSBoYXZlIHRvIHBhY2sgdG8gYSBz
aXplCi0vLyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhhdCB0byBhdm9pZCBhbiBhbGlnbm1l
bnQgd2FybmluZyAoQzQxMjEpLiAxNiBpcwotLy8gdGhlIG5leHQtbGFyZ2VzdCBzaXplIGFsbG93
ZWQgZm9yIHBhY2tpbmcsIHNvIHdlIHVzZSB0aGF0LgotI3ByYWdtYSBwYWNrKHB1c2gsIDE2KQot
I2VuZGlmCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFtZSBQYXJlbnRUeXBlPgot
Y2xhc3MgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldpdGhQYXJlbnQgOiBwdWJsaWMgSlNTVkdQ
T0RUeXBlV3JhcHBlcjxQT0RUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBQT0RUeXBlIChQ
YXJlbnRUeXBlOjoqR2V0dGVyTWV0aG9kKSgpIGNvbnN0OwotICAgIHR5cGVkZWYgdm9pZCAoUGFy
ZW50VHlwZTo6KlNldHRlck1ldGhvZCkoY29uc3QgUE9EVHlwZSYpOwotCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldpdGhQYXJlbnQ+IGNyZWF0ZShQYXNz
UmVmUHRyPFBhcmVudFR5cGU+IHBhcmVudCwgR2V0dGVyTWV0aG9kIGdldHRlciwgU2V0dGVyTWV0
aG9kIHNldHRlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNTVkdTdGF0
aWNQT0RUeXBlV3JhcHBlcldpdGhQYXJlbnQocGFyZW50LCBnZXR0ZXIsIHNldHRlcikpOwotICAg
IH0KLQotICAgIHZpcnR1YWwgb3BlcmF0b3IgUE9EVHlwZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gKG1fcGFyZW50LmdldCgpLT4qbV9nZXR0ZXIpKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIGNvbW1pdENoYW5nZShQT0RUeXBlIHR5cGUsIERPTU9iamVjdCopCi0gICAgewotICAgICAg
ICAobV9wYXJlbnQuZ2V0KCktPiptX3NldHRlcikodHlwZSk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXJXaXRoUGFyZW50KFBhc3NSZWZQdHI8UGFyZW50
VHlwZT4gcGFyZW50LCBHZXR0ZXJNZXRob2QgZ2V0dGVyLCBTZXR0ZXJNZXRob2Qgc2V0dGVyKQot
ICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBtX2dldHRlcihnZXR0ZXIpCi0g
ICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcGFyZW50
KTsKLSAgICAgICAgQVNTRVJUKG1fZ2V0dGVyKTsKLSAgICAgICAgQVNTRVJUKG1fc2V0dGVyKTsK
LSAgICB9Ci0KLSAgICAvLyBVcGRhdGUgY2FsbGJhY2tzCi0gICAgUmVmUHRyPFBhcmVudFR5cGU+
IG1fcGFyZW50OwotICAgIEdldHRlck1ldGhvZCBtX2dldHRlcjsKLSAgICBTZXR0ZXJNZXRob2Qg
bV9zZXR0ZXI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgotY2xhc3MgU1ZHUE9E
TGlzdEl0ZW07Ci0KLS8vIEp1c3QgbGlrZSBKU1NWR0R5bmFtaWNQT0RUeXBlV3JhcHBlciwgYnV0
IG9ubHkgdXNlZCBmb3IgU1ZHTGlzdCogb2JqZWN0cyB3cmFwcGluZyBhcm91bmQgUE9EIHZhbHVl
cy4KLQotdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZT4KLWNsYXNzIEpTU1ZHUE9EVHlwZVdyYXBw
ZXJDcmVhdG9yRm9yTGlzdCA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+IHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+IFBPRExpc3RJdGVt
UHRyVHlwZTsKLQotICAgIHR5cGVkZWYgUE9EVHlwZSAoU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT46
OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IAotICAgIHR5cGVkZWYgdm9pZCAoU1ZHUE9ETGlzdEl0
ZW08UE9EVHlwZT46OipTZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKLQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdD4gY3JlYXRlKFBh
c3NSZWZQdHI8UE9ETGlzdEl0ZW1QdHJUeXBlPiBjcmVhdG9yLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU1NW
R1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3QoY3JlYXRvciwgYXR0cmlidXRlTmFtZSkpOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgb3BlcmF0b3IgUE9EVHlwZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gKG1fY3JlYXRvci5nZXQoKS0+Km1fZ2V0dGVyKSgpOwotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBjb21taXRDaGFuZ2UoUE9EVHlwZSB0eXBlLCBET01PYmplY3QqIHdyYXBwZXIpCi0g
ICAgewotICAgICAgICBpZiAoIW1fc2V0dGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIChtX2NyZWF0b3IuZ2V0KCktPiptX3NldHRlcikodHlwZSk7Ci0gICAgICAgIEpTU1ZHQ29u
dGV4dENhY2hlOjpwcm9wYWdhdGVTVkdET01DaGFuZ2Uod3JhcHBlciwgbV9hc3NvY2lhdGVkQXR0
cmlidXRlTmFtZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJD
cmVhdG9yRm9yTGlzdChQYXNzUmVmUHRyPFBPRExpc3RJdGVtUHRyVHlwZT4gY3JlYXRvciwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICAgICAgOiBtX2NyZWF0b3IoY3Jl
YXRvcikKLSAgICAgICAgLCBtX2dldHRlcigmUE9ETGlzdEl0ZW1QdHJUeXBlOjp2YWx1ZSkKLSAg
ICAgICAgLCBtX3NldHRlcigmUE9ETGlzdEl0ZW1QdHJUeXBlOjpzZXRWYWx1ZSkKLSAgICAgICAg
LCBtX2Fzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAg
ICBBU1NFUlQobV9jcmVhdG9yKTsKLSAgICAgICAgQVNTRVJUKG1fZ2V0dGVyKTsKLSAgICAgICAg
QVNTRVJUKG1fc2V0dGVyKTsKLSAgICB9Ci0KLSAgICAvLyBVcGRhdGUgY2FsbGJhY2tzCi0gICAg
UmVmUHRyPFBPRExpc3RJdGVtUHRyVHlwZT4gbV9jcmVhdG9yOwotICAgIEdldHRlck1ldGhvZCBt
X2dldHRlcjsKLSAgICBTZXR0ZXJNZXRob2QgbV9zZXR0ZXI7Ci0gICAgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbV9hc3NvY2lhdGVkQXR0cmlidXRlTmFtZTsKLX07Ci0KLS8vIENhY2hpbmcgZmFjaWxp
dGllcwotdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+
Ci1zdHJ1Y3QgUE9EVHlwZVdyYXBwZXJDYWNoZUluZm8gewotICAgIHR5cGVkZWYgUE9EVHlwZSAo
UE9EVHlwZUNyZWF0b3I6OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IAotICAgIHR5cGVkZWYgdm9p
ZCAoUE9EVHlwZUNyZWF0b3I6OipTZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKLQotICAg
IC8vIEVtcHR5IHZhbHVlCi0gICAgUE9EVHlwZVdyYXBwZXJDYWNoZUluZm8oKQotICAgICAgICA6
IGNyZWF0b3IoMCkKLSAgICAgICAgLCBnZXR0ZXIoMCkKLSAgICAgICAgLCBzZXR0ZXIoMCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgLy8gRGVsZXRlZCB2YWx1ZQotICAgIFBPRFR5cGVXcmFwcGVyQ2Fj
aGVJbmZvKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBjcmVhdG9y
KHJlaW50ZXJwcmV0X2Nhc3Q8UE9EVHlwZUNyZWF0b3IqPigtMSkpCi0gICAgICAgICwgZ2V0dGVy
KDApCi0gICAgICAgICwgc2V0dGVyKDApCi0gICAgewotICAgIH0KLSAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdG9yID09
IHJlaW50ZXJwcmV0X2Nhc3Q8UE9EVHlwZUNyZWF0b3IqPigtMSk7Ci0gICAgfQotCi0gICAgUE9E
VHlwZVdyYXBwZXJDYWNoZUluZm8oUE9EVHlwZUNyZWF0b3IqIF9jcmVhdG9yLCBHZXR0ZXJNZXRo
b2QgX2dldHRlciwgU2V0dGVyTWV0aG9kIF9zZXR0ZXIpCi0gICAgICAgIDogY3JlYXRvcihfY3Jl
YXRvcikKLSAgICAgICAgLCBnZXR0ZXIoX2dldHRlcikKLSAgICAgICAgLCBzZXR0ZXIoX3NldHRl
cikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjcmVhdG9yKTsKLSAgICAgICAgQVNTRVJUKGdldHRl
cik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBPRFR5cGVXcmFwcGVyQ2Fj
aGVJbmZvJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdG9yID09IG90
aGVyLmNyZWF0b3IgJiYgZ2V0dGVyID09IG90aGVyLmdldHRlciAmJiBzZXR0ZXIgPT0gb3RoZXIu
c2V0dGVyOwotICAgIH0KLQotICAgIFBPRFR5cGVDcmVhdG9yKiBjcmVhdG9yOwotICAgIEdldHRl
ck1ldGhvZCBnZXR0ZXI7Ci0gICAgU2V0dGVyTWV0aG9kIHNldHRlcjsKLX07Ci0jaWYgQ09NUElM
RVIoTVNWQykKLSNwcmFnbWEgcGFjayhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUg
UE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+Ci1zdHJ1Y3QgUE9EVHlwZVdyYXBwZXJD
YWNoZUluZm9IYXNoIHsKLSAgICB0eXBlZGVmIFBPRFR5cGVXcmFwcGVyQ2FjaGVJbmZvPFBPRFR5
cGUsIFBPRFR5cGVDcmVhdG9yPiBDYWNoZUluZm87Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBDYWNoZUluZm8mIGluZm8pCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpTdHJp
bmdIYXNoZXI6OmNyZWF0ZUJsb2JIYXNoPHNpemVvZihDYWNoZUluZm8pPigmaW5mbyk7Ci0gICAg
fQotCi0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2FjaGVJbmZvJiBhLCBjb25zdCBDYWNo
ZUluZm8mIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgIH0KLQotICAgIHN0
YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBPRFR5cGUsIHR5cGVuYW1lIFBPRFR5cGVDcmVhdG9yPgot
c3RydWN0IFBPRFR5cGVXcmFwcGVyQ2FjaGVJbmZvVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRy
YWl0czxQT0RUeXBlV3JhcHBlckNhY2hlSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4gPiB7
Ci0gICAgdHlwZWRlZiBQT0RUeXBlV3JhcHBlckNhY2hlSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3Jl
YXRvcj4gQ2FjaGVJbmZvOwotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVy
byA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNl
OwotCi0gICAgc3RhdGljIGNvbnN0IENhY2hlSW5mbyYgZW1wdHlWYWx1ZSgpCi0gICAgewotICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENhY2hlSW5mbywga2V5LCAoKSk7Ci0gICAgICAgIHJl
dHVybiBrZXk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KENhY2hlSW5mbyYgc2xvdCkKLSAgICB7Ci0gICAgICAgIG5ldyAoJnNsb3QpIENhY2hlSW5mbyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNE
ZWxldGVkVmFsdWUoY29uc3QgQ2FjaGVJbmZvJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwotICAgIH0KLX07Ci0KLS8vIFVzZWQg
Zm9yIGR5bmFtaWMgcmVhZC13cml0ZSBhdHRyaWJ1dGVzCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RU
eXBlLCB0eXBlbmFtZSBQT0RUeXBlQ3JlYXRvcj4KLWNsYXNzIEpTU1ZHRHluYW1pY1BPRFR5cGVX
cmFwcGVyQ2FjaGUgewotcHVibGljOgotICAgIHR5cGVkZWYgUE9EVHlwZSAoUE9EVHlwZUNyZWF0
b3I6OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IAotICAgIHR5cGVkZWYgdm9pZCAoUE9EVHlwZUNy
ZWF0b3I6OipTZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKLQotICAgIHR5cGVkZWYgUE9E
VHlwZVdyYXBwZXJDYWNoZUluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+IENhY2hlSW5mbzsK
LSAgICB0eXBlZGVmIFBPRFR5cGVXcmFwcGVyQ2FjaGVJbmZvSGFzaDxQT0RUeXBlLCBQT0RUeXBl
Q3JlYXRvcj4gQ2FjaGVJbmZvSGFzaDsKLSAgICB0eXBlZGVmIFBPRFR5cGVXcmFwcGVyQ2FjaGVJ
bmZvVHJhaXRzPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiBDYWNoZUluZm9UcmFpdHM7Ci0KLSAg
ICB0eXBlZGVmIEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT4gV3JhcHBlckJhc2U7Ci0gICAg
dHlwZWRlZiBKU1NWR0R5bmFtaWNQT0RUeXBlV3JhcHBlcjxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRv
cj4gV3JhcHBlcjsKLSAgICB0eXBlZGVmIEhhc2hNYXA8Q2FjaGVJbmZvLCBXcmFwcGVyKiwgQ2Fj
aGVJbmZvSGFzaCwgQ2FjaGVJbmZvVHJhaXRzPiBXcmFwcGVyTWFwOwotCi0gICAgc3RhdGljIFdy
YXBwZXJNYXAmIHdyYXBwZXJNYXAoKQotICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChXcmFwcGVyTWFwLCBzX3dyYXBwZXJNYXAsICgpKTsKLSAgICAgICAgcmV0dXJuIHNfd3JhcHBl
ck1hcDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXcmFwcGVyQmFzZT4gbG9va3Vw
T3JDcmVhdGVXcmFwcGVyKFBPRFR5cGVDcmVhdG9yKiBjcmVhdG9yLCBHZXR0ZXJNZXRob2QgZ2V0
dGVyLCBTZXR0ZXJNZXRob2Qgc2V0dGVyKQotICAgIHsKLSAgICAgICAgQ2FjaGVJbmZvIGluZm8o
Y3JlYXRvciwgZ2V0dGVyLCBzZXR0ZXIpOwotICAgICAgICBwYWlyPHR5cGVuYW1lIFdyYXBwZXJN
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSB3cmFwcGVyTWFwKCkuYWRkKGluZm8sIDApOwot
ICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIC8vIHByZS1leGlzdGluZyBlbnRyeQotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOwotCi0gICAgICAgIFJlZlB0cjxXcmFw
cGVyPiB3cmFwcGVyID0gV3JhcHBlcjo6Y3JlYXRlKGNyZWF0b3IsIGdldHRlciwgc2V0dGVyKTsK
LSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB3cmFwcGVyLmdldCgpOwotICAgICAgICBy
ZXR1cm4gd3JhcHBlci5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgZm9yZ2V0
V3JhcHBlcihQT0RUeXBlQ3JlYXRvciogY3JlYXRvciwgR2V0dGVyTWV0aG9kIGdldHRlciwgU2V0
dGVyTWV0aG9kIHNldHRlcikKLSAgICB7Ci0gICAgICAgIENhY2hlSW5mbyBpbmZvKGNyZWF0b3Is
IGdldHRlciwgc2V0dGVyKTsKLSAgICAgICAgd3JhcHBlck1hcCgpLnJlbW92ZShpbmZvKTsKLSAg
ICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFtZSBQT0RUeXBlQ3Jl
YXRvcj4KLUpTU1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9y
Pjo6fkpTU1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyKCkKLXsKLSAgICBKU1NWR0R5bmFtaWNQT0RU
eXBlV3JhcHBlckNhY2hlPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPjo6Zm9yZ2V0V3JhcHBlciht
X2NyZWF0b3IuZ2V0KCksIG1fZ2V0dGVyLCBtX3NldHRlcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0jZW5kaWYgLy8gSlNTVkdQT0RUeXBl
V3JhcHBlcl9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDcyMzgwKQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC0xMjMsNDIgKzEyMiw2IEBAIHZvaWQgYmF0Y2hDb25m
aWd1cmVDb25zdGFudHModjg6OkhhbmRsZTwKIAogdHlwZWRlZiBIYXNoTWFwPE5vZGUqLCB2ODo6
T2JqZWN0Kj4gRE9NTm9kZU1hcDsKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgdjg6Ok9iamVjdCo+
IERPTU9iamVjdE1hcDsKLQotI2lmIEVOQUJMRShTVkcpCi0vLyBNYXAgb2YgU1ZHIG9iamVjdHMg
d2l0aCBjb250ZXh0cyB0byB0aGVpciBjb250ZXh0cwotc3RhdGljIEhhc2hNYXA8dm9pZCosIFNW
R0VsZW1lbnQqPiYgc3ZnT2JqZWN0VG9Db250ZXh0TWFwKCkKLXsKLSAgICB0eXBlZGVmIEhhc2hN
YXA8dm9pZCosIFNWR0VsZW1lbnQqPiBTdmdPYmplY3RUb0NvbnRleHRNYXA7Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdmdPYmplY3RUb0NvbnRleHRNYXAsIHN0YXRpY1N2Z09iamVjdFRvQ29u
dGV4dE1hcCwgKCkpOwotICAgIHJldHVybiBzdGF0aWNTdmdPYmplY3RUb0NvbnRleHRNYXA7Ci19
Ci0KLXZvaWQgVjhQcm94eTo6c2V0U1ZHQ29udGV4dCh2b2lkKiBvYmplY3QsIFNWR0VsZW1lbnQq
IGNvbnRleHQpCi17Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNW
R0VsZW1lbnQqIG9sZENvbnRleHQgPSBzdmdPYmplY3RUb0NvbnRleHRNYXAoKS5nZXQob2JqZWN0
KTsKLQotICAgIGlmIChvbGRDb250ZXh0ID09IGNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChvbGRDb250ZXh0KQotICAgICAgICBvbGRDb250ZXh0LT5kZXJlZigpOwotCi0gICAg
aWYgKGNvbnRleHQpCi0gICAgICAgIGNvbnRleHQtPnJlZigpOwotCi0gICAgc3ZnT2JqZWN0VG9D
b250ZXh0TWFwKCkuc2V0KG9iamVjdCwgY29udGV4dCk7Ci19Ci0KLVNWR0VsZW1lbnQqIFY4UHJv
eHk6OnN2Z0NvbnRleHQodm9pZCogb2JqZWN0KQotewotICAgIHJldHVybiBzdmdPYmplY3RUb0Nv
bnRleHRNYXAoKS5nZXQob2JqZWN0KTsKLX0KLQotI2VuZGlmCi0KIHR5cGVkZWYgSGFzaE1hcDxp
bnQsIHY4OjpGdW5jdGlvblRlbXBsYXRlKj4gRnVuY3Rpb25UZW1wbGF0ZU1hcDsKIAogYm9vbCBB
bGxvd0FsbG9jYXRpb246Om1fY3VycmVudCA9IGZhbHNlOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5
LmgJKHJldmlzaW9uIDcyMzgwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBOb2RlOwotICAgIGNs
YXNzIFNWR0VsZW1lbnQ7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBj
bGFzcyBWOEV2ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgVjhJc29sYXRlZENvbnRleHQ7CkBAIC0x
NTksNDAgKzE1OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gYW5kIGNsZWFy
cyBhbGwgdGltZW91dHMgb24gdGhlIERPTSB3aW5kb3cuCiAgICAgICAgIHZvaWQgZGlzY29ubmVj
dEZyYW1lKCk7CiAKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICBzdGF0aWMgdm9pZCBzZXRTVkdD
b250ZXh0KHZvaWQqLCBTVkdFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBTVkdFbGVtZW50KiBz
dmdDb250ZXh0KHZvaWQqKTsKLQotICAgICAgICAvLyBUaGVzZSBoZWxwZXIgZnVuY3Rpb25zIGFy
ZSByZXF1aXJlZCBpbiBjYXNlIHdlIGFyZSBnaXZlbiBhIFBhc3NSZWZQdHIKLSAgICAgICAgLy8g
dG8gYSAocG9zc2libHkpIG5ld2x5IGNyZWF0ZWQgb2JqZWN0IGFuZCBtdXN0IHByZXZlbnQgaXRz
IHJlZmVyZW5jZQotICAgICAgICAvLyBjb3VudCBmcm9tIGRyb3BwaW5nIHRvIHplcm8gYXMgd291
bGQgaGFwcGVuIGluIGNvZGUgbGlrZQotICAgICAgICAvLwotICAgICAgICAvLyAgIFY4UHJveHk6
OnNldFNWR0NvbnRleHQoaW1wLT5nZXROZXdseUNyZWF0ZWRPYmplY3QoKS5nZXQoKSwgY29udGV4
dCk7Ci0gICAgICAgIC8vICAgZm9vKGltcC0+Z2V0TmV3bHlDcmVhdGVkT2JqZWN0KCkuZ2V0KCkp
OwotICAgICAgICAvLwotICAgICAgICAvLyBJbiB0aGUgYWJvdmUgdHdvIGxpbmVzIGVhY2ggdGlt
ZSBnZXROZXdseUNyZWF0ZWRPYmplY3QoKSBpcyBjYWxsZWQgaXQKLSAgICAgICAgLy8gY3JlYXRl
cyBhIG5ldyBvYmplY3QgYmVjYXVzZSB3ZSBkb24ndCByZWYoKSBpdC4gKFNvIG91ciBhdHRlbXRz
IHRvCi0gICAgICAgIC8vIGFzc29jaWF0ZSBhIGNvbnRleHQgd2l0aCBpdCBmYWlsLikgU3VjaCBj
b2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gdG8KLSAgICAgICAgLy8KLSAgICAgICAgLy8gICBmb28o
VjhQcm94eTo6d2l0aFNWR0NvbnRleHQoaW1wLT5nZXROZXdseUNyZWF0ZWRPYmplY3QoKSwgY29u
dGV4dCkuZ2V0KCkpOwotICAgICAgICAvLwotICAgICAgICAvLyB3aGVyZSBQYXNzUmVmUHRyOjp+
UGFzc1JlZlB0cigpIGlzIGludm9rZWQgb25seSBhZnRlciBmb28oKSBpcwotICAgICAgICAvLyBj
YWxsZWQuCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUPiB3aXRoU1ZHQ29udGV4dChQYXNzUmVmUHRyPFQ+IG9iamVjdCwgU1ZHRWxlbWVu
dCogY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgc2V0U1ZHQ29udGV4dChvYmplY3Qu
Z2V0KCksIGNvbnRleHQpOwotICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgVCogd2l0aFNW
R0NvbnRleHQoVCogb2JqZWN0LCBTVkdFbGVtZW50KiBjb250ZXh0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzZXRTVkdDb250ZXh0KG9iamVjdCwgY29udGV4dCk7Ci0gICAgICAgICAgICByZXR1
cm4gb2JqZWN0OwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAgICB2b2lkIGZpbmlzaGVkV2l0
aEV2ZW50KEV2ZW50KikgeyB9CiAKICAgICAgICAgLy8gRXZhbHVhdGUgSmF2YVNjcmlwdCBpbiBh
IG5ldyBpc29sYXRlZCB3b3JsZC4gVGhlIHNjcmlwdCBnZXRzIGl0cyBvd24KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhTVkdQT0RUeXBlV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhTVkdQT0RUeXBlV3JhcHBlci5oCShyZXZpc2lvbiA3MjM4MCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhTVkdQT0RUeXBlV3JhcHBlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQxNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBHb29nbGUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBWOFNWR1BP
RFR5cGVXcmFwcGVyX2gKLSNkZWZpbmUgVjhTVkdQT0RUeXBlV3JhcHBlcl9oCi0KLSNpZiBFTkFC
TEUoU1ZHKQotCi0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIK
LSNpbmNsdWRlICJTVkdMaXN0LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgUE9EVHlwZT4KLWNsYXNzIFY4U1ZHUE9EVHlwZVdyYXBwZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxWOFNWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+ID4gewotcHVibGljOgotICAgIFY4
U1ZHUE9EVHlwZVdyYXBwZXIoKSB7IH0KLSAgICB2aXJ0dWFsIH5WOFNWR1BPRFR5cGVXcmFwcGVy
KCkgeyB9Ci0gICAgdmlydHVhbCBvcGVyYXRvciBQT0RUeXBlKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjb21taXRDaGFuZ2UoUE9EVHlwZSwgU1ZHRWxlbWVudCopID0gMDsKLQotICAgIHN0YXRp
YyBWOFNWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFY4
U1ZHUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT4qPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJu
YWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFBPRFR5cGU+Ci1jbGFzcyBWOFNWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxp
c3QgOiBwdWJsaWMgVjhTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPiB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPiBQT0RMaXN0SXRlbVB0clR5cGU7Ci0KLSAg
ICB0eXBlZGVmIFBPRFR5cGUgKFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+OjoqR2V0dGVyTWV0aG9k
KSgpIGNvbnN0OwotICAgIHR5cGVkZWYgdm9pZCAoU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT46OipT
ZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4
U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdD4gY3JlYXRlKFBhc3NSZWZQdHI8UE9ETGlz
dEl0ZW1QdHJUeXBlPiBjcmVhdG9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOFNWR1BPRFR5cGVXcmFwcGVy
Q3JlYXRvckZvckxpc3QoY3JlYXRvciwgYXR0cmlidXRlTmFtZSkpOwotICAgIH0KLQotICAgIHZp
cnR1YWwgflY4U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdCgpIHsgfQotCi0gICAgLy8g
R2V0dGVyIHdyYXBwZXIKLSAgICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKSB7IHJldHVybiAo
bV9jcmVhdG9yLmdldCgpLT4qbV9nZXR0ZXIpKCk7IH0KLQotICAgIC8vIFNldHRlciB3cmFwcGVy
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShQT0RUeXBlIHR5cGUsIFNWR0VsZW1lbnQq
IGNvbnRleHQpCi0gICAgewotICAgICAgICBpZiAoIW1fc2V0dGVyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIChtX2NyZWF0b3IuZ2V0KCktPiptX3NldHRlcikodHlwZSk7Ci0KLSAg
ICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBjb250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFu
Z2VkKG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBW
OFNWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3QoUGFzc1JlZlB0cjxQT0RMaXN0SXRlbVB0
clR5cGU+IGNyZWF0b3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAg
ICAgIDogbV9jcmVhdG9yKGNyZWF0b3IpCi0gICAgICAgICwgbV9nZXR0ZXIoJlNWR1BPRExpc3RJ
dGVtPFBPRFR5cGU+Ojp2YWx1ZSkKLSAgICAgICAgLCBtX3NldHRlcigmU1ZHUE9ETGlzdEl0ZW08
UE9EVHlwZT46OnNldFZhbHVlKQotICAgICAgICAsIG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUo
YXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NyZWF0b3IpOwotICAgICAg
ICBBU1NFUlQobV9nZXR0ZXIpOwotICAgICAgICBBU1NFUlQobV9zZXR0ZXIpOwotICAgIH0KLQot
ICAgIC8vIFVwZGF0ZSBjYWxsYmFja3MKLSAgICBSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08UE9EVHlw
ZT4gPiBtX2NyZWF0b3I7Ci0gICAgR2V0dGVyTWV0aG9kIG1fZ2V0dGVyOwotICAgIFNldHRlck1l
dGhvZCBtX3NldHRlcjsKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2Fzc29jaWF0ZWRBdHRy
aWJ1dGVOYW1lOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZT4KLWNsYXNzIFY4U1ZH
U3RhdGljUE9EVHlwZVdyYXBwZXIgOiBwdWJsaWMgVjhTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBl
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VjhTVkdTdGF0aWNQT0RUeXBlV3Jh
cHBlcj4gY3JlYXRlKFBPRFR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcih0eXBlKSk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+VjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcigpIHsgfQotCi0gICAgLy8gR2V0dGVyIHdy
YXBwZXIKLSAgICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKSB7IHJldHVybiBtX3BvZFR5cGU7
IH0KLQotICAgIC8vIFNldHRlciB3cmFwcGVyCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5n
ZShQT0RUeXBlIHR5cGUsIFNWR0VsZW1lbnQqKQotICAgIHsKLSAgICAgICAgbV9wb2RUeXBlID0g
dHlwZTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBWOFNWR1N0YXRpY1BPRFR5cGVXcmFwcGVy
KFBPRFR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3BvZFR5cGUodHlwZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgUE9EVHlwZSBtX3BvZFR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBl
LCB0eXBlbmFtZSBQYXJlbnRUeXBlQXJnPgotY2xhc3MgVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBl
cldpdGhQT0RUeXBlUGFyZW50IDogcHVibGljIFY4U1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8UE9E
VHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgVjhTVkdQT0RUeXBlV3JhcHBlcjxQYXJlbnRU
eXBlQXJnPiBQYXJlbnRUeXBlOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8VjhTVkdTdGF0aWNQ
T0RUeXBlV3JhcHBlcldpdGhQT0RUeXBlUGFyZW50PiBjcmVhdGUoUE9EVHlwZSB0eXBlLCBQYXNz
UmVmUHRyPFBhcmVudFR5cGU+IHBhcmVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldpdGhQT0RUeXBlUGFyZW50KHR5cGUsIHBh
cmVudCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoUE9EVHlwZSB0
eXBlLCBTVkdFbGVtZW50KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgVjhTVkdTdGF0aWNQT0RU
eXBlV3JhcHBlcjxQT0RUeXBlPjo6Y29tbWl0Q2hhbmdlKHR5cGUsIGNvbnRleHQpOwotICAgICAg
ICBtX3BhcmVudFR5cGUtPmNvbW1pdENoYW5nZShQYXJlbnRUeXBlQXJnKHR5cGUpLCBjb250ZXh0
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldpdGhQ
T0RUeXBlUGFyZW50KFBPRFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxQYXJlbnRUeXBlPiBwYXJlbnQp
Ci0gICAgICAgIDogVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPih0eXBlKQotICAg
ICAgICAsIG1fcGFyZW50VHlwZShwYXJlbnQpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxQ
YXJlbnRUeXBlPiBtX3BhcmVudFR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBl
LCB0eXBlbmFtZSBQYXJlbnRUeXBlPgotY2xhc3MgVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldp
dGhQYXJlbnQgOiBwdWJsaWMgVjhTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPiB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBQT0RUeXBlIChQYXJlbnRUeXBlOjoqR2V0dGVyTWV0aG9kKSgpIGNvbnN0
OwotICAgIHR5cGVkZWYgdm9pZCAoUGFyZW50VHlwZTo6KlNldHRlck1ldGhvZCkoY29uc3QgUE9E
VHlwZSYpOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8VjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBl
cldpdGhQYXJlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFBhcmVudFR5cGU+IHBhcmVudCwgR2V0dGVy
TWV0aG9kIGdldHRlciwgU2V0dGVyTWV0aG9kIHNldHRlcikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldpdGhQYXJlbnQocGFyZW50
LCBnZXR0ZXIsIHNldHRlcikpOwotICAgIH0KLQotICAgIHZpcnR1YWwgb3BlcmF0b3IgUE9EVHlw
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gKG1fcGFyZW50LmdldCgpLT4qbV9nZXR0ZXIpKCk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShQT0RUeXBlIHR5cGUsIFNW
R0VsZW1lbnQqIGNvbnRleHQpCi0gICAgewotICAgICAgICAobV9wYXJlbnQuZ2V0KCktPiptX3Nl
dHRlcikodHlwZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFY4U1ZHU3RhdGljUE9EVHlwZVdy
YXBwZXJXaXRoUGFyZW50KFBhc3NSZWZQdHI8UGFyZW50VHlwZT4gcGFyZW50LCBHZXR0ZXJNZXRo
b2QgZ2V0dGVyLCBTZXR0ZXJNZXRob2Qgc2V0dGVyKQotICAgICAgICA6IG1fcGFyZW50KHBhcmVu
dCkKLSAgICAgICAgLCBtX2dldHRlcihnZXR0ZXIpCi0gICAgICAgICwgbV9zZXR0ZXIoc2V0dGVy
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcGFyZW50KTsKLSAgICAgICAgQVNTRVJUKG1fZ2V0
dGVyKTsKLSAgICAgICAgQVNTRVJUKG1fc2V0dGVyKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8UGFy
ZW50VHlwZT4gbV9wYXJlbnQ7Ci0gICAgR2V0dGVyTWV0aG9kIG1fZ2V0dGVyOwotICAgIFNldHRl
ck1ldGhvZCBtX3NldHRlcjsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBPRFR5cGUsIHR5cGVu
YW1lIFBPRFR5cGVDcmVhdG9yPgotY2xhc3MgVjhTVkdEeW5hbWljUE9EVHlwZVdyYXBwZXIgOiBw
dWJsaWMgVjhTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBQT0RUeXBlIChQT0RUeXBlQ3JlYXRvcjo6KkdldHRlck1ldGhvZCkoKSBjb25zdDsKLSAgICB0
eXBlZGVmIHZvaWQgKFBPRFR5cGVDcmVhdG9yOjoqU2V0dGVyTWV0aG9kKShjb25zdCBQT0RUeXBl
Jik7Ci0gICAgdHlwZWRlZiB2b2lkICgqQ2FjaGVSZW1vdmFsQ2FsbGJhY2spKFY4U1ZHUE9EVHlw
ZVdyYXBwZXI8UE9EVHlwZT4qKTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4U1ZHRHluYW1p
Y1BPRFR5cGVXcmFwcGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxQT0RUeXBlQ3JlYXRvcj4gY3JlYXRv
ciwgR2V0dGVyTWV0aG9kIGdldHRlciwgU2V0dGVyTWV0aG9kIHNldHRlciwgQ2FjaGVSZW1vdmFs
Q2FsbGJhY2sgY2FjaGVSZW1vdmFsQ2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFY4U1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyKGNyZWF0b3IsIGdldHRlciwgc2V0
dGVyLCBjYWNoZVJlbW92YWxDYWxsYmFjaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgflY4U1ZH
RHluYW1pY1BPRFR5cGVXcmFwcGVyKCkgewotICAgICAgICBBU1NFUlQobV9jYWNoZVJlbW92YWxD
YWxsYmFjayk7Ci0KLSAgICAgICAgKCptX2NhY2hlUmVtb3ZhbENhbGxiYWNrKSh0aGlzKTsKLSAg
ICB9Ci0KLSAgICAvLyBHZXR0ZXIgd3JhcHBlcgotICAgIHZpcnR1YWwgb3BlcmF0b3IgUE9EVHlw
ZSgpIHsgcmV0dXJuIChtX2NyZWF0b3IuZ2V0KCktPiptX2dldHRlcikoKTsgfQotCi0gICAgLy8g
U2V0dGVyIHdyYXBwZXIKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKFBPRFR5cGUgdHlw
ZSwgU1ZHRWxlbWVudCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIChtX2NyZWF0b3IuZ2V0KCkt
PiptX3NldHRlcikodHlwZSk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBj
b250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKG1fY3JlYXRvci0+YXNzb2NpYXRlZEF0dHJpYnV0
ZU5hbWUoKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFY4U1ZHRHluYW1pY1BPRFR5cGVXcmFw
cGVyKFBhc3NSZWZQdHI8UE9EVHlwZUNyZWF0b3I+IGNyZWF0b3IsIEdldHRlck1ldGhvZCBnZXR0
ZXIsIFNldHRlck1ldGhvZCBzZXR0ZXIsIENhY2hlUmVtb3ZhbENhbGxiYWNrIGNhY2hlUmVtb3Zh
bENhbGxiYWNrKQotICAgICAgICA6IG1fY3JlYXRvcihjcmVhdG9yKQotICAgICAgICAsIG1fZ2V0
dGVyKGdldHRlcikKLSAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCi0gICAgICAgICwgbV9jYWNo
ZVJlbW92YWxDYWxsYmFjayhjYWNoZVJlbW92YWxDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2NyZWF0b3IpOyAgLy8gfGNyZWF0b3J8J3MgcG9pbnRlciB3YXMgdGFrZW4gYnkgbV9j
cmVhdG9yLgotICAgICAgICBBU1NFUlQoZ2V0dGVyKTsKLSAgICAgICAgQVNTRVJUKHNldHRlcik7
Ci0gICAgICAgIEFTU0VSVChjYWNoZVJlbW92YWxDYWxsYmFjayk7Ci0gICAgfQotCi0gICAgLy8g
VXBkYXRlIGNhbGxiYWNrcwotICAgIFJlZlB0cjxQT0RUeXBlQ3JlYXRvcj4gbV9jcmVhdG9yOwot
ICAgIEdldHRlck1ldGhvZCBtX2dldHRlcjsKLSAgICBTZXR0ZXJNZXRob2QgbV9zZXR0ZXI7Ci0g
ICAgQ2FjaGVSZW1vdmFsQ2FsbGJhY2sgbV9jYWNoZVJlbW92YWxDYWxsYmFjazsKLX07Ci0KLS8v
IENhY2hpbmcgZmFjaWxpdGllcwotdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUg
UE9EVHlwZUNyZWF0b3I+Ci1zdHJ1Y3QgUE9EVHlwZVdyYXBwZXJDYWNoZUluZm8gewotICAgIHR5
cGVkZWYgUE9EVHlwZSAoUE9EVHlwZUNyZWF0b3I6OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7Ci0g
ICAgdHlwZWRlZiB2b2lkIChQT0RUeXBlQ3JlYXRvcjo6KlNldHRlck1ldGhvZCkoY29uc3QgUE9E
VHlwZSYpOwotCi0gICAgLy8gRW1wdHkgdmFsdWUKLSAgICBQT0RUeXBlV3JhcHBlckNhY2hlSW5m
bygpCi0gICAgICAgIDogY3JlYXRvcigwKQotICAgICAgICAsIGdldHRlcigwKQotICAgICAgICAs
IHNldHRlcigwKQotICAgICAgICAsIGZpZWxkSGFzaCgwKQotICAgIHsgfQotCi0gICAgLy8gRGVs
ZXRlZCB2YWx1ZQotICAgIGV4cGxpY2l0IFBPRFR5cGVXcmFwcGVyQ2FjaGVJbmZvKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBjcmVhdG9yKHJlaW50ZXJwcmV0X2Nh
c3Q8UE9EVHlwZUNyZWF0b3IqPigtMSkpCi0gICAgICAgICwgZ2V0dGVyKDApCi0gICAgICAgICwg
c2V0dGVyKDApCi0gICAgICAgICwgZmllbGRIYXNoKDApCi0gICAgewotICAgIH0KLQotICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGNyZWF0b3IgPT0gcmVpbnRlcnByZXRfY2FzdDxQT0RUeXBlQ3JlYXRvcio+KC0xKTsKLSAgICB9
Ci0KLSAgICBQT0RUeXBlV3JhcHBlckNhY2hlSW5mbyhQT0RUeXBlQ3JlYXRvciogX2NyZWF0b3Is
IEdldHRlck1ldGhvZCBfZ2V0dGVyLCBTZXR0ZXJNZXRob2QgX3NldHRlciwgdW5zaWduZWQgX2Zp
ZWxkSGFzaCkKLSAgICAgICAgOiBjcmVhdG9yKF9jcmVhdG9yKQotICAgICAgICAsIGdldHRlcihf
Z2V0dGVyKQotICAgICAgICAsIHNldHRlcihfc2V0dGVyKQotICAgICAgICAsIGZpZWxkSGFzaChf
ZmllbGRIYXNoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNyZWF0b3IpOwotICAgICAgICBBU1NF
UlQoZ2V0dGVyKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUE9EVHlwZVdy
YXBwZXJDYWNoZUluZm8mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0
b3IgPT0gb3RoZXIuY3JlYXRvciAmJiBmaWVsZEhhc2ggPT0gb3RoZXIuZmllbGRIYXNoICYmIGdl
dHRlciA9PSBvdGhlci5nZXR0ZXIgJiYgc2V0dGVyID09IG90aGVyLnNldHRlcjsKLSAgICB9Ci0K
LSAgICBQT0RUeXBlQ3JlYXRvciogY3JlYXRvcjsKLSAgICBHZXR0ZXJNZXRob2QgZ2V0dGVyOwot
ICAgIFNldHRlck1ldGhvZCBzZXR0ZXI7Ci0gICAgdW5zaWduZWQgZmllbGRIYXNoOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+Ci1zdHJ1
Y3QgUE9EVHlwZVdyYXBwZXJDYWNoZUluZm9IYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBQT0RUeXBlV3JhcHBlckNhY2hlSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4m
IGluZm8pCi0gICAgewotICAgICAgICAvLyBXZSBjYW4ndCBoYXNoIG1lbWJlciBmdW5jdGlvbiBw
b2ludGVycywgYnV0IHdlIGhhdmUgZW5vdWdoIG1hdGVyaWFsCi0gICAgICAgIC8vIHRvIGhhc2gg
dGhlIHBvaW50ZXIgYW5kIGZpZWxkIGlkZW50aWZpZXIsIGFuZCBvbiBhIGNvbGxpc2lvbgotICAg
ICAgICAvLyBvcGVyYXRvcj09IHdpbGwgc3RpbGwgZGlmZmVyZW50aWF0ZSB0aGUgbWVtYmVyIGZ1
bmN0aW9uIHBvaW50ZXJzLgotICAgICAgICByZXR1cm4gV1RGOjpQYWlySGFzaDx2b2lkKiwgdW5z
aWduZWQ+OjpoYXNoKHN0ZDo6cGFpcjx2b2lkKiwgdW5zaWduZWQ+KGluZm8uY3JlYXRvciwgaW5m
by5maWVsZEhhc2gpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBQT0RU
eXBlV3JhcHBlckNhY2hlSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4mIGEsIGNvbnN0IFBP
RFR5cGVXcmFwcGVyQ2FjaGVJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiYgYikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wg
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+Ci1zdHJ1Y3QgUE9EVHlwZVdy
YXBwZXJDYWNoZUluZm9UcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPFBPRFR5cGVXcmFw
cGVyQ2FjaGVJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiA+IHsKLSAgICB0eXBlZGVmIFBP
RFR5cGVXcmFwcGVyQ2FjaGVJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiBDYWNoZUluZm87
Ci0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMg
Y29uc3QgQ2FjaGVJbmZvJiBlbXB0eVZhbHVlKCkKLSAgICB7Ci0gICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ2FjaGVJbmZvLCBrZXksICgpKTsKLSAgICAgICAgcmV0dXJuIGtleTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoQ2FjaGVJbmZvJiBzbG90
KQotICAgIHsKLSAgICAgICAgbmV3ICgmc2xvdCkgQ2FjaGVJbmZvKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBDYWNoZUluZm8mIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlw
ZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+Ci1jbGFzcyBWOFNWR0R5bmFtaWNQT0RUeXBlV3Jh
cHBlckNhY2hlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFBPRFR5cGUgKFBPRFR5cGVDcmVhdG9y
OjoqR2V0dGVyTWV0aG9kKSgpIGNvbnN0OwotICAgIHR5cGVkZWYgdm9pZCAoUE9EVHlwZUNyZWF0
b3I6OipTZXR0ZXJNZXRob2QpKGNvbnN0IFBPRFR5cGUmKTsKLQotICAgIHR5cGVkZWYgUE9EVHlw
ZVdyYXBwZXJDYWNoZUluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+IENhY2hlSW5mbzsKLSAg
ICB0eXBlZGVmIFBPRFR5cGVXcmFwcGVyQ2FjaGVJbmZvSGFzaDxQT0RUeXBlLCBQT0RUeXBlQ3Jl
YXRvcj4gQ2FjaGVJbmZvSGFzaDsKLSAgICB0eXBlZGVmIFBPRFR5cGVXcmFwcGVyQ2FjaGVJbmZv
VHJhaXRzPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiBDYWNoZUluZm9UcmFpdHM7Ci0KLSAgICB0
eXBlZGVmIFY4U1ZHUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT4gV3JhcHBlckJhc2U7Ci0gICAgdHlw
ZWRlZiBWOFNWR0R5bmFtaWNQT0RUeXBlV3JhcHBlcjxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4g
RHluYW1pY1dyYXBwZXI7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8Q2FjaGVJbmZvLCBEeW5hbWlj
V3JhcHBlciosIENhY2hlSW5mb0hhc2gsIENhY2hlSW5mb1RyYWl0cz4gRHluYW1pY1dyYXBwZXJI
YXNoTWFwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRHluYW1pY1dyYXBwZXJIYXNoTWFwOjpjb25z
dF9pdGVyYXRvciBEeW5hbWljV3JhcHBlckhhc2hNYXBJdGVyYXRvcjsKLQotICAgIHN0YXRpYyBE
eW5hbWljV3JhcHBlckhhc2hNYXAmIGR5bmFtaWNXcmFwcGVySGFzaE1hcCgpCi0gICAgewotICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKER5bmFtaWNXcmFwcGVySGFzaE1hcCwgZHluYW1pY1dy
YXBwZXJIYXNoTWFwLCAoKSk7Ci0gICAgICAgIHJldHVybiBkeW5hbWljV3JhcHBlckhhc2hNYXA7
Ci0gICAgfQotCi0gICAgLy8gVXNlZCBmb3IgcmVhZHdyaXRlIGF0dHJpYnV0ZXMgb25seQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdyYXBwZXJCYXNlPiBsb29rdXBPckNyZWF0ZVdyYXBwZXIoUE9E
VHlwZUNyZWF0b3IqIGNyZWF0b3IsIEdldHRlck1ldGhvZCBnZXR0ZXIsIFNldHRlck1ldGhvZCBz
ZXR0ZXIsIHVuc2lnbmVkIGZpZWxkSGFzaCkKLSAgICB7Ci0gICAgICAgIER5bmFtaWNXcmFwcGVy
SGFzaE1hcCYgbWFwKGR5bmFtaWNXcmFwcGVySGFzaE1hcCgpKTsKLSAgICAgICAgQ2FjaGVJbmZv
IGluZm8oY3JlYXRvciwgZ2V0dGVyLCBzZXR0ZXIsIGZpZWxkSGFzaCk7Ci0KLSAgICAgICAgaWYg
KG1hcC5jb250YWlucyhpbmZvKSkKLSAgICAgICAgICAgIHJldHVybiBtYXAuZ2V0KGluZm8pOwot
Ci0gICAgICAgIFJlZlB0cjxEeW5hbWljV3JhcHBlcj4gd3JhcHBlciA9IFY4U1ZHRHluYW1pY1BP
RFR5cGVXcmFwcGVyPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPjo6Y3JlYXRlKGNyZWF0b3IsIGdl
dHRlciwgc2V0dGVyLCBmb3JnZXRXcmFwcGVyKTsKLSAgICAgICAgbWFwLnNldChpbmZvLCB3cmFw
cGVyLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIucmVsZWFzZSgpOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIGZvcmdldFdyYXBwZXIoVjhTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBl
Piogd3JhcHBlcikKLSAgICB7Ci0gICAgICAgIER5bmFtaWNXcmFwcGVySGFzaE1hcCYgbWFwKGR5
bmFtaWNXcmFwcGVySGFzaE1hcCgpKTsKLQotICAgICAgICBEeW5hbWljV3JhcHBlckhhc2hNYXBJ
dGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOwotICAgICAgICBEeW5hbWljV3JhcHBlckhhc2hNYXBJ
dGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0KLSAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQgIT0gd3JhcHBlcikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgLy8gSXQncyBndWFyYW50ZWVkIHRoYXQgdGhl
cmUncyBqdXN0IG9uZSBvYmplY3Qgd2UgbmVlZCB0byB0YWtlIGNhcmUgb2YuCi0gICAgICAgICAg
ICBtYXAucmVtb3ZlKGl0LT5maXJzdCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLX07Ci0KLWNsYXNzIFY4U1ZHUE9EVHlwZVV0aWwgewotcHVibGljOgotICAgIHRlbXBs
YXRlIDxjbGFzcyBQPgotICAgIHN0YXRpYyBQIHRvU1ZHUE9EVHlwZShXcmFwcGVyVHlwZUluZm8q
IGluZm8sIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmplY3QsIGJvb2wmIG9rKTsKLX07Ci0KLXRl
bXBsYXRlIDxjbGFzcyBQPgotUCBWOFNWR1BPRFR5cGVVdGlsOjp0b1NWR1BPRFR5cGUoV3JhcHBl
clR5cGVJbmZvKiBpbmZvLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JqZWN0LCBib29sJiBvaykK
LXsKLSAgICBpZiAoIVY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKG9iamVjdCwgaW5mbykp
IHsKLSAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIFAoKTsKLSAgICB9Ci0gICAg
b2sgPSB0cnVlOwotICAgIHJldHVybiAqVjhTVkdQT0RUeXBlV3JhcHBlcjxQPjo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChvYmplY3QpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKLSNlbmRpZiAvLyBWOFNWR1BPRFR5
cGVXcmFwcGVyX2gKSW5kZXg6IFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJv
cGVydHkuaAkocmV2aXNpb24gNzIzODApCisrKyBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5p
bWF0ZWRQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxNyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHlfaAotI2RlZmluZSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eV9oCi0KLSNpZiBFTkFC
TEUoU1ZHKQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCIKLSNp
bmNsdWRlICJEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1ZGUg
IkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgotY2xhc3MgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZT4KLWNsYXNz
IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxBbmltYXRlZFR5cGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHR5cGVuYW1lIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlw
ZT46OlBhc3NUeXBlIFBhc3NUeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBSZXR1cm5U
eXBlOwotCi0gICAgdHlwZWRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8
QW5pbWF0ZWRUeXBlPiBTZWxmOwotICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJv
cGVydHk8QW5pbWF0ZWRUeXBlPiBDcmVhdG9yOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vs
Zj4gY3JlYXRlKENyZWF0b3ImIGNyZWF0b3IsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGNyZWF0b3IsIGNvbnRleHRF
bGVtZW50KSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldEJhc2VWYWwoUGFzc1R5cGUg
dHlwZSkKLSAgICB7Ci0gICAgICAgIG1fY3JlYXRvci5zZXRCYXNlVmFsdWUodHlwZSk7Ci0gICAg
ICAgIG1fY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoUGFzc1R5cGUgdHlwZSkKLSAgICB7Ci0gICAg
ICAgIG1fY3JlYXRvci5zZXRWYWx1ZSh0eXBlKTsKLSAgICAgICAgbV9jb250ZXh0RWxlbWVudC0+
aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIFJldHVyblR5
cGUgYmFzZVZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRvci5iYXNlVmFsdWUoKTsgfQotICAg
IHZpcnR1YWwgUmV0dXJuVHlwZSBhbmltVmFsKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdG9yLnZh
bHVlKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRy
aWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdG9yLmFzc29jaWF0ZWRBdHRyaWJ1dGVO
YW1lKCk7IH0KLQotcHJpdmF0ZToKLSAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmYoQ3JlYXRvciYgY3JlYXRvciwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCi0gICAg
ICAgIDogbV9jcmVhdG9yKGNyZWF0b3IpCi0gICAgICAgICwgbV9jb250ZXh0RWxlbWVudChjb250
ZXh0RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIG1fY3JlYXRvci5zZXRTaG91bGRTeW5jaHJvbml6
ZSh0cnVlKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmYoKQotICAgIHsKLSAgICAgICAgbV9jcmVhdG9yLnNldFNob3VsZFN5bmNocm9u
aXplKGZhbHNlKTsKLSAgICB9Ci0KLSAgICBDcmVhdG9yJiBtX2NyZWF0b3I7Ci0gICAgUmVmUHRy
PFNWR0VsZW1lbnQ+IG1fY29udGV4dEVsZW1lbnQ7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBB
bmltYXRlZFR5cGU+Ci1jbGFzcyBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkoKSB7IH0KLQot
ICAgIHR5cGVkZWYgdHlwZW5hbWUgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8
QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5U
eXBlIFJldHVyblR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpTdG9yZWRUeXBlIFN0b3JlZFR5cGU7Ci0K
LSAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpCi0gICAgICAgIDogbV92YWx1ZShE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpudWxsKCkp
Ci0gICAgICAgICwgbV9zaG91bGRTeW5jaHJvbml6ZShmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmU+Ci0gICAgRGVwcmVj
YXRlZFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZh
bHVlMSkKLSAgICAgICAgOiBtX3ZhbHVlKHZhbHVlMSkKLSAgICAgICAgLCBtX3Nob3VsZFN5bmNo
cm9uaXplKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25z
dHJ1Y3RvclBhcmFtZXRlck9uZSwgdHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28+Ci0g
ICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0
ZXJPbmUmIHZhbHVlMSwgY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28mIHZhbHVlMikKLSAg
ICAgICAgOiBtX3ZhbHVlKHZhbHVlMSwgdmFsdWUyKQotICAgICAgICAsIG1fc2hvdWxkU3luY2hy
b25pemUoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIFJldHVyblR5cGUgdmFsdWUoKSBjb25z
dCB7IHJldHVybiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5
cGU+Ojp0b1JldHVyblR5cGUobV92YWx1ZSk7IH0KLSAgICBSZXR1cm5UeXBlIGJhc2VWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1h
dGVkVHlwZT46OnRvUmV0dXJuVHlwZShtX3ZhbHVlKTsgfQotCi0gICAgdm9pZCBzZXRWYWx1ZShQ
YXNzVHlwZSB0eXBlKSB7IG1fdmFsdWUgPSB0eXBlOyB9Ci0gICAgdm9pZCBzZXRCYXNlVmFsdWUo
UGFzc1R5cGUgdHlwZSkgeyBtX3ZhbHVlID0gdHlwZTsgfQotCi0gICAgYm9vbCBzaG91bGRTeW5j
aHJvbml6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3luY2hyb25pemU7IH0KLSAgICB2b2lk
IHNldFNob3VsZFN5bmNocm9uaXplKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRTeW5jaHJvbml6ZSA9
IHZhbHVlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRB
dHRyaWJ1dGVOYW1lKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgU3RvcmVkVHlwZSBt
X3ZhbHVlOwotICAgIGJvb2wgbV9zaG91bGRTeW5jaHJvbml6ZTsKLX07Ci0KLX07Ci0KLS8vIEhl
bHBlciBtYWNybyB1c2VkIHdpdGhpbiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZIGJlbG93Ci0j
ZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
QW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5KSBcCi1jbGFzcyBEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eSA6IHB1YmxpYyBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTxBbmltYXRlZFR5cGU+IHsgXAotcHVibGljOiBcCi0gICAgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkoKSBcCi0gICAgICAgIDogRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPigpIFwKLSAgICB7IFwKLSAgICB9IFwKLSAg
ICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmU+IFwKLSAg
ICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eShjb25zdCBDb25z
dHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxKSBcCi0gICAgICAgIDogRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2YWx1ZTEpIFwKLSAgICB7IFwKLSAgICB9IFwK
LSAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUsIHR5
cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyVHdvPiBcCi0gICAgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUm
IHZhbHVlMSwgY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28mIHZhbHVlMikgXAotICAgICAg
ICA6IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4odmFsdWUxLCB2
YWx1ZTIpIFwKLSAgICB7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgdm9pZCBzeW5jaHJvbml6ZShT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQobV9z
aG91bGRTeW5jaHJvbml6ZSk7IFwKLSAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKERlcHJlY2F0
ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OnRvU3RyaW5nKGJhc2VW
YWx1ZSgpKSk7IFwKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxJc0Rl
cml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXplKGNvbnRl
eHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIHZhbHVlKTsgXAotICAgIH0gXAotICAgIFwKLSAgICB2
aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29u
c3QgXAotICAgIHsgXAotICAgICAgICByZXR1cm4gRE9NQXR0cmlidXRlOyBcCi0gICAgfSBcCi19
Ci0KLS8vIEhlbHBlciBtYWNybyBzaGFyZWQgYnkgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWSAv
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMKLSNkZWZpbmUgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWV9TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNW
R0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSkgXAotcHJpdmF0ZTogXAotICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHlUZWFyT2ZmPEFuaW1hdGVkVHlwZT4gRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJv
cGVydHlUZWFyT2ZmIyNVcHBlclByb3BlcnR5OyBcCi0gICAgREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHkp
OyBcCi0gICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkgbV8j
I0xvd2VyUHJvcGVydHk7IFwKLSAgICBcCi1wdWJsaWM6IFwKLSAgICBEZXByZWNhdGVkU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIExvd2VyUHJvcGVy
dHkoKSBjb25zdCBcCi0gICAgeyBcCi0gICAgICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52
YWx1ZSgpOyBcCi0gICAgfSBcCi0gICAgXAotICAgIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgTG93ZXJQcm9wZXJ0eSMjQmFzZVZh
bHVlKCkgY29uc3QgXAotICAgIHsgXAotICAgICAgICByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHku
YmFzZVZhbHVlKCk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVy
dHkoRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFz
c1R5cGUgdHlwZSkgXAotICAgIHsgXAotICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRWYWx1
ZSh0eXBlKTsgXAotICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVy
RWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5
cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAotICAgICAgICBjb250ZXh0RWxlbWVu
dC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsgXAotICAgIH0gXAotICAgIFwKLSAgICB2b2lk
IHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIHR5cGUpIFwKLSAgICB7IFwKLSAgICAg
ICAgbV8jI0xvd2VyUHJvcGVydHkuc2V0QmFzZVZhbHVlKHR5cGUpOyBcCi0gICAgICAgIFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUs
IElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50
KHRoaXMpOyBcCi0gICAgICAgIGNvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRl
cygpOyBcCi0gICAgfSBcCi0gICAgXAotICAgIHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVy
dHkoKSBcCi0gICAgeyBcCi0gICAgICAgIGlmICghbV8jI0xvd2VyUHJvcGVydHkuc2hvdWxkU3lu
Y2hyb25pemUoKSkgXAotICAgICAgICAgICAgcmV0dXJuOyBcCi0gICAgICAgIFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVy
aXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMp
OyBcCi0gICAgICAgIG1fIyNMb3dlclByb3BlcnR5LnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50
KTsgXAotICAgIH0gXAotICAgIFwKLSAgICBQYXNzUmVmUHRyPERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQo
KSBcCi0gICAgeyBcCi0gICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3du
ZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVy
VHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgICAgIHJldHVybiBsb29r
dXBPckNyZWF0ZVdyYXBwZXI8QW5pbWF0ZWRUeXBlLCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmYjI1VwcGVyUHJvcGVydHk+KGNvbnRleHRFbGVtZW50LCBtXyMjTG93ZXJQcm9w
ZXJ0eSwgRE9NQXR0cmlidXRlKTsgXAotICAgIH0KLQotLy8gVXNlZCBmb3IgU1ZHIERPTSBwcm9w
ZXJ0aWVzIHRoYXQgbWFwIGV4YWN0bHkgdG8gb25lIFhNTCBET00gYXR0cmlidXRlCi0jZGVmaW5l
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIEFuaW1h
dGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWV9TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5s
b2NhbE5hbWUoKSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQot
Ci0vLyBVc2VkIGZvciB0aGUgcmFyZSBjYXNlIG11bHRpcGxlIFNWRyBET00gcHJvcGVydGllcyB0
aGF0IG1hcCB0byB0aGUgc2FtZSBYTUwgZG9tIGF0dHJpYnV0ZQotI2RlZmluZSBERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlwZSwgRE9NQXR0cmlidXRl
LCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpIFwKLURFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfU0hBUkVEKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBBbmltYXRlZFR5
cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0KLSNlbmRpZgotI2VuZGlmCkluZGV4
OiBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
LmgJKHJldmlzaW9uIDcyMzgwKQorKysgV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIERlcHJlY2F0
ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzX2gKLSNkZWZpbmUgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHlUcmFpdHNfaAotCi0jaWYgRU5BQkxFKFNWRykKLQotLy8gRklYTUU6IFJlbW92
ZSB0aGlzIGZpbGUhCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+Ci1zdHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMgOiBwdWJsaWMg
Tm9uY29weWFibGUgeyB9OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2
Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmgJKHJldmlzaW9uIDcyMzgwKQorKysg
V2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVm
IERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlX2gKLSNkZWZpbmUgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkVGVtcGxhdGVfaAotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLS8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBmaWxlIQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgCi0gICAg
Y2xhc3MgU1ZHRWxlbWVudDsKLQotICAgIHN0cnVjdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBl
V3JhcHBlcktleSB7ICAgICAgICAgICAgCi0gICAgICAgIC8vIEVtcHR5IHZhbHVlCi0gICAgICAg
IERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KCkKLSAgICAgICAgICAgIDogZWxl
bWVudCgwKQotICAgICAgICAgICAgLCBhdHRyaWJ1dGVOYW1lKDApCi0gICAgICAgIHsgfQotCi0g
ICAgICAgIC8vIERlbGV0ZWQgdmFsdWUKLSAgICAgICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlw
ZVdyYXBwZXJLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICAgICAg
OiBlbGVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHRWxlbWVudCo+KC0xKSkKLSAgICAgICAgewot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09IHJlaW50ZXJwcmV0X2Nh
c3Q8U1ZHRWxlbWVudCo+KC0xKTsKLSAgICAgICAgfQotCi0gICAgICAgIERlcHJlY2F0ZWRTVkdB
bmltYXRlZFR5cGVXcmFwcGVyS2V5KGNvbnN0IFNWR0VsZW1lbnQqIF9lbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIF9hdHRyaWJ1dGVOYW1lKQotICAgICAgICAgICAgOiBlbGVtZW50KF9lbGVt
ZW50KQotICAgICAgICAgICAgLCBhdHRyaWJ1dGVOYW1lKF9hdHRyaWJ1dGVOYW1lLmltcGwoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgICAgICAgICAgQVNT
RVJUKGF0dHJpYnV0ZU5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBvdGhlcikgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT0gb3RoZXIuZWxlbWVudCAm
JiBhdHRyaWJ1dGVOYW1lID09IG90aGVyLmF0dHJpYnV0ZU5hbWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50OwotICAgICAgICBBdG9taWNTdHJpbmdJbXBs
KiBhdHRyaWJ1dGVOYW1lOwotICAgIH07Ci0gICAgCi0gICAgc3RydWN0IERlcHJlY2F0ZWRTVkdB
bmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBrZXkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBXVEY6OlN0cmluZ0hhc2hlcjo6Y3JlYXRlQmxvYkhhc2g8
c2l6ZW9mKERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KT4oJmtleSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBEZXByZWNhdGVkU1ZHQW5p
bWF0ZWRUeXBlV3JhcHBlcktleSYgYSwgY29uc3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdy
YXBwZXJLZXkmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID09IGI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5PiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgc2xv
dCkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3ICgmc2xvdCkgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkVHlwZVdyYXBwZXJLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRGVwcmVjYXRlZFNW
R0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKLSAgICAgICAgfQotICAgIH07
Ci0gCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgotICAgIGNsYXNzIERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVwcmVjYXRlZFNW
R0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiA+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5p
bWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJu
VHlwZSBSZXR1cm5UeXBlOwotCi0gICAgICAgIHZpcnR1YWwgfkRlcHJlY2F0ZWRTVkdBbmltYXRl
ZFRlbXBsYXRlKCkgeyBmb3JnZXRXcmFwcGVyKHRoaXMpOyB9Ci0KLSAgICAgICAgdmlydHVhbCBS
ZXR1cm5UeXBlIGJhc2VWYWwoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRC
YXNlVmFsKFBhc3NUeXBlKSA9IDA7Ci0KLSAgICAgICAgdmlydHVhbCBSZXR1cm5UeXBlIGFuaW1W
YWwoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltVmFsKFBhc3NUeXBl
KSA9IDA7Ci0KLSAgICAgICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVk
QXR0cmlidXRlTmFtZSgpIGNvbnN0ID0gMDsKLQotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8RGVw
cmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXksIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRl
bXBsYXRlPEFuaW1hdGVkVHlwZT4qLCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktl
eUhhc2gsIERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaFRyYWl0cyA+IEVs
ZW1lbnRUb1dyYXBwZXJNYXA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRWxlbWVudFRvV3Jh
cHBlck1hcDo6Y29uc3RfaXRlcmF0b3IgRWxlbWVudFRvV3JhcHBlck1hcEl0ZXJhdG9yOwotCi0g
ICAgICAgIHN0YXRpYyBFbGVtZW50VG9XcmFwcGVyTWFwKiB3cmFwcGVyQ2FjaGUoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCogc193cmFwcGVyQ2Fj
aGUgPSBuZXcgRWxlbWVudFRvV3JhcHBlck1hcDsgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICByZXR1cm4gc193cmFwcGVyQ2FjaGU7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9p
ZCBmb3JnZXRXcmFwcGVyKERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlw
ZT4qIHdyYXBwZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXAq
IGNhY2hlID0gd3JhcHBlckNhY2hlKCk7Ci0gICAgICAgICAgICBFbGVtZW50VG9XcmFwcGVyTWFw
SXRlcmF0b3IgaXRyID0gY2FjaGUtPmJlZ2luKCk7Ci0gICAgICAgICAgICBFbGVtZW50VG9XcmFw
cGVyTWFwSXRlcmF0b3IgZW5kID0gY2FjaGUtPmVuZCgpOwotICAgICAgICAgICAgZm9yICg7IGl0
ciAhPSBlbmQ7ICsraXRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ci0+c2Vjb25kID09IHdy
YXBwZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FjaGUtPnJlbW92ZShpdHItPmZpcnN0KTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVk
VHlwZT4KLSAgICBjbGFzcyBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRUZWFyT2ZmPgot
ICAgIFBhc3NSZWZQdHI8QW5pbWF0ZWRUZWFyT2ZmPiBsb29rdXBPckNyZWF0ZVdyYXBwZXIoU1ZH
RWxlbWVudCogZWxlbWVudCwgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRU
eXBlPiYgY3JlYXRvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi0gICAgewotICAg
ICAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSBrZXkoZWxlbWVudCwgYXR0
ck5hbWUubG9jYWxOYW1lKCkpOwotICAgICAgICBSZWZQdHI8QW5pbWF0ZWRUZWFyT2ZmPiB3cmFw
cGVyID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRUZWFyT2ZmKj4oQW5pbWF0ZWRUZWFyT2ZmOjp3cmFw
cGVyQ2FjaGUoKS0+Z2V0KGtleSkpOwotCi0gICAgICAgIGlmICghd3JhcHBlcikgewotICAgICAg
ICAgICAgd3JhcHBlciA9IEFuaW1hdGVkVGVhck9mZjo6Y3JlYXRlKGNyZWF0b3IsIGVsZW1lbnQp
OwotICAgICAgICAgICAgQW5pbWF0ZWRUZWFyT2ZmOjp3cmFwcGVyQ2FjaGUoKS0+c2V0KGtleSwg
d3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gd3JhcHBlci5yZWxl
YXNlKCk7Ci0gICAgfQotCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZp
c2lvbiA3MjM4MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTEwLDggKzExMCw1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfQogCi0vLyBUaGlzIGZp
bGUgbmVlZHMgdG8gYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIFNWR0VsZW1lbnQgZGVjbGFyYXRpb24K
LSNpbmNsdWRlICJEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIiAvLyBOT0xJTlQKLQog
I2VuZGlmCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdMaXN0LmgJKHJldmlzaW9uIDcyMzgwKQorKysgV2ViQ29yZS9zdmcv
U1ZHTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI4MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgU1ZHTGlzdF9oCi0jZGVmaW5lIFNWR0xpc3RfaAotCi0jaWYgRU5B
QkxFKFNWRykKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiU1ZHTGlzdFRy
YWl0cy5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0gICAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0
ZW0+Ci0gICAgc3RydWN0IFNWR0xpc3RUeXBlT3BlcmF0aW9ucyB7Ci0gICAgICAgIHN0YXRpYyBJ
dGVtIG51bGxJdGVtKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFNWR0xpc3RUcmFp
dHM8VXNlc0RlZmF1bHRJbml0aWFsaXplcjxJdGVtPjo6dmFsdWUsIEl0ZW0+OjpudWxsSXRlbSgp
OwotICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzTnVsbChjb25zdCBJdGVtJiBpdCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFNWR0xpc3RUcmFpdHM8VXNlc0RlZmF1bHRJ
bml0aWFsaXplcjxJdGVtPjo6dmFsdWUsIEl0ZW0+Ojppc051bGwoaXQpOwotICAgICAgICB9Ci0g
ICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci0gICAgY2xhc3MgU1ZHTGlzdCA6
IHB1YmxpYyBSZWZDb3VudGVkPFNWR0xpc3Q8SXRlbT4gPiB7Ci0gICAgcHJpdmF0ZToKLSAgICAg
ICAgdHlwZWRlZiBTVkdMaXN0VHlwZU9wZXJhdGlvbnM8SXRlbT4gVHlwZU9wZXJhdGlvbnM7Ci0K
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgflNWR0xpc3QoKSB7IH0KLQotICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWU7IH0KLQotICAgICAgICB1bnNpZ25lZCBpbnQg
bnVtYmVyT2ZJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQotICAgICAg
ICB2b2lkIGNsZWFyKEV4Y2VwdGlvbkNvZGUgJikgeyBtX3ZlY3Rvci5jbGVhcigpOyB9Ci0KLSAg
ICAgICAgSXRlbSBpbml0aWFsaXplKEl0ZW0gbmV3SXRlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChUeXBlT3BlcmF0aW9uczo6aXNOdWxsKG5ld0l0ZW0p
KSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gVHlwZU9wZXJhdGlvbnM6Om51bGxJdGVtKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjbGVhcihlYyk7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kSXRlbShuZXdJ
dGVtLCBlYyk7Ci0gICAgICAgIH0KLQotICAgICAgICBJdGVtIGdldEZpcnN0KCkgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0SXRlbSgwLCBlYyk7Ci0gICAgICAgIH0KLQotICAgICAgICBJdGVtIGdldExhc3Qo
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgICAgIHJldHVybiBnZXRJdGVtKG1fdmVjdG9yLnNpemUoKSAtIDEsIGVjKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIEl0ZW0gZ2V0SXRlbSh1bnNpZ25lZCBpbnQgaW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gbV92ZWN0b3Iu
c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVHlwZU9wZXJhdGlvbnM6Om51bGxJdGVtKCk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHJldHVybiBtX3ZlY3Rvci5hdChpbmRleCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjb25zdCBJdGVtIGdldEl0ZW0odW5zaWduZWQgaW50IGluZGV4LCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGluZGV4ID49IG1fdmVj
dG9yLnNpemUoKSkgewotICAgICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFR5cGVPcGVyYXRpb25zOjpudWxsSXRlbSgpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICByZXR1cm4gbV92ZWN0b3JbaW5kZXhdOwotICAgICAgICB9Ci0K
LSAgICAgICAgSXRlbSBpbnNlcnRJdGVtQmVmb3JlKEl0ZW0gbmV3SXRlbSwgdW5zaWduZWQgaW50
IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKFR5
cGVPcGVyYXRpb25zOjppc051bGwobmV3SXRlbSkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICAgICAgICAgIHJldHVybiBUeXBlT3BlcmF0aW9uczo6
bnVsbEl0ZW0oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGluZGV4IDwgbV92
ZWN0b3Iuc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV92ZWN0b3IuaW5zZXJ0KGluZGV4LCBu
ZXdJdGVtKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV92ZWN0b3Iu
YXBwZW5kKG5ld0l0ZW0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG5ld0l0
ZW07Ci0gICAgICAgIH0KLQotICAgICAgICBJdGVtIHJlcGxhY2VJdGVtKEl0ZW0gbmV3SXRlbSwg
dW5zaWduZWQgaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGluZGV4ID49IG1fdmVjdG9yLnNpemUoKSkgewotICAgICAgICAgICAgICAgIGVj
ID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFR5cGVPcGVyYXRpb25z
OjpudWxsSXRlbSgpOwotICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgaWYgKFR5cGVP
cGVyYXRpb25zOjppc051bGwobmV3SXRlbSkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOwotICAgICAgICAgICAgICAgIHJldHVybiBUeXBlT3BlcmF0aW9uczo6bnVs
bEl0ZW0oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV92ZWN0b3JbaW5kZXhdID0g
bmV3SXRlbTsKLSAgICAgICAgICAgIHJldHVybiBuZXdJdGVtOwotICAgICAgICB9Ci0KLSAgICAg
ICAgSXRlbSByZW1vdmVJdGVtKHVuc2lnbmVkIGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBtX3ZlY3Rvci5zaXplKCkpIHsK
LSAgICAgICAgICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICAgICAgICAgIHJl
dHVybiBUeXBlT3BlcmF0aW9uczo6bnVsbEl0ZW0oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgSXRlbSBpdGVtID0gbV92ZWN0b3JbaW5kZXhdOwotICAgICAgICAgICAgbV92ZWN0b3Iu
cmVtb3ZlKGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBpdGVtOwotICAgICAgICB9Ci0KLSAg
ICAgICAgSXRlbSBhcHBlbmRJdGVtKEl0ZW0gbmV3SXRlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChUeXBlT3BlcmF0aW9uczo6aXNOdWxsKG5ld0l0ZW0p
KSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gVHlwZU9wZXJhdGlvbnM6Om51bGxJdGVtKCk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIG1fdmVjdG9yLmFwcGVuZChuZXdJdGVtKTsKLSAgICAgICAgICAgIHJldHVy
biBuZXdJdGVtOwotICAgICAgICB9Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNWR0xpc3Qo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgCi0gICAgICAgICAgICA6IG1fYXNz
b2NpYXRlZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBWZWN0b3I8SXRlbT4gbV92ZWN0b3I7Ci0gICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWU7Ci0gICAgfTsK
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci0gICAgY2xhc3MgU1ZHUE9ETGlzdEl0ZW0g
OiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQT0RMaXN0SXRlbTxJdGVtPiA+IHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BPRExpc3RJdGVtPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU1ZHUE9ETGlzdEl0ZW0pOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNWR1BPRExpc3RJdGVtPiBjb3B5KGNvbnN0IEl0ZW0mIGl0ZW0pIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTVkdQT0RMaXN0SXRlbShpdGVtKSk7IH0KLQotICAgICAgICBvcGVyYXRvciBJ
dGVtJigpIHsgcmV0dXJuIG1faXRlbTsgfQotICAgICAgICBvcGVyYXRvciBjb25zdCBJdGVtJigp
IGNvbnN0IHsgcmV0dXJuIG1faXRlbTsgfQotCi0gICAgICAgIC8vIFVwZGF0aW5nIGZhY2lsaXRp
ZXMsIHVzZWQgYnkgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0Ci0gICAgICAgIEl0
ZW0gdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2l0ZW07IH0KLSAgICAgICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBJdGVtJiBuZXdJdGVtKSB7IG1faXRlbSA9IG5ld0l0ZW07IH0KLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIFNWR1BPRExpc3RJdGVtKCkgOiBtX2l0ZW0oKSB7IH0KLSAgICAgICAgU1ZH
UE9ETGlzdEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkgOiBSZWZDb3VudGVkPFNWR1BPRExpc3RJdGVt
PEl0ZW0+ID4oKSwgbV9pdGVtKGl0ZW0pIHsgfQotICAgICAgICAKLSAgICAgICAgSXRlbSBtX2l0
ZW07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci0gICAgY2xhc3MgU1ZH
UE9ETGlzdCA6IHB1YmxpYyBTVkdMaXN0PFJlZlB0cjxTVkdQT0RMaXN0SXRlbTxJdGVtPiA+ID4g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgSXRlbSBpbml0aWFsaXplKEl0ZW0gbmV3SXRlbSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNWR1BPRExpc3RJdGVtPEl0
ZW0+KiBwdHIoU1ZHTGlzdDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08SXRlbT4gPiA+Ojppbml0aWFs
aXplKFNWR1BPRExpc3RJdGVtPEl0ZW0+Ojpjb3B5KG5ld0l0ZW0pLCBlYykuZ2V0KCkpOwotICAg
ICAgICAgICAgaWYgKCFwdHIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEl0ZW0oKTsKLQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEl0ZW0mPigqcHRyKTsgCi0gICAgICAg
IH0KLQotICAgICAgICBJdGVtIGdldEZpcnN0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgU1ZHUE9ETGlzdEl0ZW08SXRlbT4qIHB0cihTVkdMaXN0PFJlZlB0cjxTVkdQT0RMaXN0SXRl
bTxJdGVtPiA+ID46OmdldEZpcnN0KCkuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKCFwdHIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEl0ZW0oKTsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEl0ZW0mPigqcHRyKTsKLSAgICAgICAgfQotCi0gICAgICAgIEl0ZW0gZ2V0
TGFzdCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFNWR1BPRExpc3RJdGVtPEl0ZW0+
KiBwdHIoU1ZHTGlzdDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08SXRlbT4gPiA+OjpnZXRMYXN0KCku
Z2V0KCkpOwotICAgICAgICAgICAgaWYgKCFwdHIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEl0
ZW0oKTsKLQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEl0ZW0mPigqcHRy
KTsgCi0gICAgICAgIH0KLQotICAgICAgICBJdGVtIGdldEl0ZW0odW5zaWduZWQgaW50IGluZGV4
LCBFeGNlcHRpb25Db2RlJiBlYykKLSAgICAgICAgewotICAgICAgICAgICAgU1ZHUE9ETGlzdEl0
ZW08SXRlbT4qIHB0cihTVkdMaXN0PFJlZlB0cjxTVkdQT0RMaXN0SXRlbTxJdGVtPiA+ID46Omdl
dEl0ZW0oaW5kZXgsIGVjKS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoIXB0cikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gSXRlbSgpOwotCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSXRlbSY+KCpwdHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgSXRlbSBnZXRJ
dGVtKHVuc2lnbmVkIGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIFNWR1BPRExpc3RJdGVtPEl0ZW0+KiBwdHIoU1ZHTGlzdDxSZWZQdHI8
U1ZHUE9ETGlzdEl0ZW08SXRlbT4gPiA+OjpnZXRJdGVtKGluZGV4LCBlYykuZ2V0KCkpOwotICAg
ICAgICAgICAgIGlmICghcHRyKQotICAgICAgICAgICAgICAgIHJldHVybiBJdGVtKCk7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJdGVtJj4oKnB0cik7Ci0gICAgICAg
IH0KLQotICAgICAgICBJdGVtIGluc2VydEl0ZW1CZWZvcmUoSXRlbSBuZXdJdGVtLCB1bnNpZ25l
ZCBpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgICAgICB7Ci0gICAgICAgICAgICBT
VkdQT0RMaXN0SXRlbTxJdGVtPiogcHRyKFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEl0
ZW0+ID4gPjo6aW5zZXJ0SXRlbUJlZm9yZShTVkdQT0RMaXN0SXRlbTxJdGVtPjo6Y29weShuZXdJ
dGVtKSwgaW5kZXgsIGVjKS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoIXB0cikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gSXRlbSgpOwotCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSXRlbSY+KCpwdHIpOyAKLSAgICAgICAgfQotCi0gICAgICAgIEl0ZW0gcmVwbGFjZUl0
ZW0oSXRlbSBuZXdJdGVtLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBTVkdQT0RMaXN0SXRlbTxJdGVtPiogcHRyKFNWR0xpc3Q8
UmVmUHRyPFNWR1BPRExpc3RJdGVtPEl0ZW0+ID4gPjo6cmVwbGFjZUl0ZW0oU1ZHUE9ETGlzdEl0
ZW08SXRlbT46OmNvcHkobmV3SXRlbSksIGluZGV4LCBlYykuZ2V0KCkpOwotICAgICAgICAgICAg
aWYgKCFwdHIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEl0ZW0oKTsKLQotICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEl0ZW0mPigqcHRyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEl0ZW0gcmVtb3ZlSXRlbSh1bnNpZ25lZCBpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVj
KQotICAgICAgICB7Ci0gICAgICAgICAgICBTVkdQT0RMaXN0SXRlbTxJdGVtPiogcHRyKFNWR0xp
c3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEl0ZW0+ID4gPjo6cmVtb3ZlSXRlbShpbmRleCwgZWMp
LmdldCgpKTsKLSAgICAgICAgICAgIGlmICghcHRyKQotICAgICAgICAgICAgICAgIHJldHVybiBJ
dGVtKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJdGVtJj4oKnB0
cik7IAotICAgICAgICB9Ci0KLSAgICAgICAgSXRlbSBhcHBlbmRJdGVtKEl0ZW0gbmV3SXRlbSwg
RXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNWR1BPRExpc3RJdGVt
PEl0ZW0+KiBwdHIoU1ZHTGlzdDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08SXRlbT4gPiA+OjphcHBl
bmRJdGVtKFNWR1BPRExpc3RJdGVtPEl0ZW0+Ojpjb3B5KG5ld0l0ZW0pLCBlYykuZ2V0KCkpOwot
ICAgICAgICAgICAgaWYgKCFwdHIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEl0ZW0oKTsKLQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEl0ZW0mPigqcHRyKTsgCi0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBTVkdQT0RMaXN0KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIAotICAgICAgICAgICAgOiBTVkdMaXN0PFJl
ZlB0cjxTVkdQT0RMaXN0SXRlbTxJdGVtPiA+ID4oYXR0cmlidXRlTmFtZSkgeyB9Ci0gICAgfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKLSNlbmRp
ZiAvLyBTVkdMaXN0X2gKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpc3RUcmFpdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaXN0VHJhaXRzLmgJKHJldmlzaW9uIDcyMzgwKQorKysg
V2ViQ29yZS9zdmcvU1ZHTGlzdFRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jaWZuZGVmIFNWR0xpc3RUcmFpdHNfaAotI2RlZmluZSBTVkdMaXN0VHJhaXRz
X2gKLQotI2lmIEVOQUJMRShTVkcpCi0KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+IHN0cnVjdCBVc2Vz
RGVmYXVsdEluaXRpYWxpemVyIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owot
ICAgIHRlbXBsYXRlPD4gc3RydWN0IFVzZXNEZWZhdWx0SW5pdGlhbGl6ZXI8ZG91YmxlPiAgICAg
IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBVc2VzRGVmYXVsdEluaXRpYWxpemVyPGZsb2F0PiAgICAgICB7IHN0YXRpYyBjb25zdCBi
b29sIHZhbHVlID0gZmFsc2U7IH07Ci0KLSAgICB0ZW1wbGF0ZTxib29sIHVzZXNEZWZhdWx0SW5p
dGlhbGl6ZXIsIHR5cGVuYW1lIEl0ZW0+Ci0gICAgc3RydWN0IFNWR0xpc3RUcmFpdHMgeyB9Owot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlbVB0cj4KLSAgICBzdHJ1Y3QgU1ZHTGlzdFRyYWl0
czx0cnVlLCBJdGVtUHRyKj4gewotICAgICAgICBzdGF0aWMgSXRlbVB0ciogbnVsbEl0ZW0oKSB7
IHJldHVybiAwOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzTnVsbChJdGVtUHRyKiBpdCkgeyBy
ZXR1cm4gIWl0OyB9Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtUHRy
PgotICAgIHN0cnVjdCBTVkdMaXN0VHJhaXRzPHRydWUsIFJlZlB0cjxJdGVtUHRyPiA+IHsKLSAg
ICAgICAgc3RhdGljIFJlZlB0cjxJdGVtUHRyPiBudWxsSXRlbSgpIHsgcmV0dXJuIDA7IH0KLSAg
ICAgICAgc3RhdGljIGJvb2wgaXNOdWxsKGNvbnN0IFJlZlB0cjxJdGVtUHRyPiYgaXQpIHsgcmV0
dXJuICFpdDsgfQotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLSAg
ICBzdHJ1Y3QgU1ZHTGlzdFRyYWl0czx0cnVlLCBJdGVtPiB7Ci0gICAgICAgIHN0YXRpYyBJdGVt
IG51bGxJdGVtKCkgeyByZXR1cm4gSXRlbSgpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzTnVs
bChJdGVtIGl0KSB7IHJldHVybiAhaXQ7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAg
IHN0cnVjdCBTVkdMaXN0VHJhaXRzPGZhbHNlLCBkb3VibGU+IHsKLSAgICAgICAgc3RhdGljIGRv
dWJsZSBudWxsSXRlbSgpIHsgcmV0dXJuIDAuMDsgfQotICAgICAgICBzdGF0aWMgYm9vbCBpc051
bGwoZG91YmxlKSB7IHJldHVybiBmYWxzZTsgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+Ci0g
ICAgc3RydWN0IFNWR0xpc3RUcmFpdHM8ZmFsc2UsIGZsb2F0PiB7Ci0gICAgICAgIHN0YXRpYyBm
bG9hdCBudWxsSXRlbSgpIHsgcmV0dXJuIDA7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNOdWxs
KGZsb2F0KSB7IHJldHVybiBmYWxzZTsgfQotICAgIH07Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZiAvLyBTVkdMaXN0VHJhaXRzX2gK
LQotLy8gdmltOnRzPTQ6bm9ldAo=
</data>
<flag name="review"
          id="64951"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>