<?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>219246</bug_id>
          
          <creation_ts>2020-11-22 18:10:04 -0800</creation_ts>
          <short_desc>Add C and ObjC tests to APIBench</short_desc>
          <delta_ts>2020-11-30 16:47:01 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1709855</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-11-22 18:10:04 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709858</commentid>
    <comment_count>1</comment_count>
      <attachid>414794</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-11-22 18:56:55 -0800</bug_when>
    <thetext>Created attachment 414794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710518</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-29 18:11:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/71790609&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710704</commentid>
    <comment_count>3</comment_count>
      <attachid>414794</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-30 12:01:30 -0800</bug_when>
    <thetext>Comment on attachment 414794
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710859</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-30 16:47:00 -0800</bug_when>
    <thetext>Committed r270277: &lt;https://trac.webkit.org/changeset/270277&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414794.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414794</attachid>
            <date>2020-11-22 18:56:55 -0800</date>
            <delta_ts>2020-11-30 16:47:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219246-20201122185652.patch</filename>
            <type>text/plain</type>
            <size>851576</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlDL1JpY2hhcmRzTW9zdGx5Qy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50
QVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NmMwOTI1NjBlNDA4MDM0ODk5ZTFkOTIzNzEwNjc1NjNmZTdjZTUx
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJ
L1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMCwwICsxLDMwNCBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0g
MTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDUwOworCW9iamVjdHMgPSB7
CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTE0MEFBQzM3MjQ5OUJEN0Ew
MDAxRjExRSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQwQUFDMzYyNDk5QkQ2QzAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzICov
OyB9OworCQkxNEYzQjBDNjI1NkFDRjVCMDBBQzg0MjEgLyogcmljaGFyZHMuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNCMEM1MjU2QUNGNUEwMEFD
ODQyMSAvKiByaWNoYXJkcy5jICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQy
MDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9ICIi
OworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJMTQwQUFDMzcy
NDk5QkQ3QTAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLywKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVy
ZW5jZSBzZWN0aW9uICovCisJCTE0MEFBQzM2MjQ5OUJENkMwMDAxRjExRSAvKiByaWNoYXJkcy5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHJpY2hhcmRzLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyog
UmljaGFyZHNNb3N0bHlDICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSBSaWNoYXJkc01vc3RseUM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTE0RjNCMEM1MjU2QUNGNUEwMEFDODQyMSAvKiByaWNoYXJkcy5jICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmM7IHBhdGggPSByaWNoYXJkcy5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJF
NCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQg
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBz
ZWN0aW9uICovCisJCTE0MTVBRDE5MjQ5OUJDNUIwMDVCQjJFNCA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFEMjQyNDk5QkM1QzAwNUJCMkU0IC8qIFJp
Y2hhcmRzTW9zdGx5QyAqLywKKwkJCQkxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVj
dHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQxNUFE
MjMyNDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFy
ZHNNb3N0bHlDICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJk
c01vc3RseUMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTE0RjNCMEM1MjU2QUNGNUEwMEFDODQyMSAvKiByaWNoYXJkcy5jICovLAorCQkJCTE0MEFBQzM2
MjQ5OUJENkMwMDAxRjExRSAvKiByaWNoYXJkcy5qcyAqLywKKwkJCSk7CisJCQlwYXRoID0gUmlj
aGFyZHNNb3N0bHlDOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQ
QlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseUMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQx
NUFEMjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJSaWNoYXJkc01vc3RseUMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJ
CQkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMUYy
NDk5QkM1QzAwNUJCMkU0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMTQxNUFEMjAyNDk5QkM1QzAw
NUJCMkU0IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsK
KwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUmljaGFyZHNNb3N0bHlDOwor
CQkJcHJvZHVjdE5hbWUgPSBSaWNoYXJkc01vc3RseVN3aWZ0OworCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IDE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseUMgKi87CisJCQlw
cm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OworLyogRW5k
IFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlv
biAqLworCQkxNDE1QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7
CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0U3dpZnRV
cGRhdGVDaGVjayA9IDEyMDA7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDEyMDA7CisJCQkJVGFy
Z2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0ID0geworCQkJ
CQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gMTIuMDsKKwkJCQkJCUxhc3RTd2lmdE1pZ3JhdGlv
biA9IDEyMDA7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNNb3N0bHlDIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlW
ZXJzaW9uID0gIlhjb2RlIDkuMyI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IGVuOworCQkJaGFz
U2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJ
CQkJQmFzZSwKKwkJCSk7CisJCQltYWluR3JvdXAgPSAxNDE1QUQxOTI0OTlCQzVCMDA1QkIyRTQ7
CisJCQlwcm9kdWN0UmVmR3JvdXAgPSAxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVj
dHMgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJ
CXRhcmdldHMgPSAoCisJCQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9z
dGx5QyAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMUUyNDk5QkM1
QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkx
NEYzQjBDNjI1NkFDRjVCMDBBQzg0MjEgLyogcmljaGFyZHMuYyBpbiBTb3VyY2VzICovLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyog
RW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENv
bmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkxNDE1QUQyNzI0OTlCQzVDMDA1QkIyRTQgLyogRGVi
dWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQU5B
TFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNUX0NP
TlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRB
UkQgPSAiZ251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlD
TEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZ
RVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JM
T0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09O
VkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RFUFJFQ0FURURf
T0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19J
U0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NPTU1F
TlRTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JFQ1VS
U0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNf
TElURVJBTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NMQVNT
ID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVXT1JL
X0hFQURFUiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJTEFC
SUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NPREUg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKKwkJ
CQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0g
ZHdhcmY7CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJRU5BQkxF
X1RFU1RBQklMSVRZID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7
CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1Mg
PSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NF
U1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQp
IiwKKwkJCQkpOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJO
X1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9B
VVRPUyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gSU5DTFVE
RV9TT1VSQ0U7CisJCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlPTkxZX0FDVElWRV9BUkNI
ID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQUNUSVZFX0NPTVBJTEFU
SU9OX0NPTkRJVElPTlMgPSBERUJVRzsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVWRUwgPSAi
LU9ub25lIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTE0MTVBRDI4MjQ5OUJD
NUMwMDVCQjJFNCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFla
RVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdf
Q1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZ
ID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdf
RU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5f
RE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVS
U0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9J
TkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9M
T09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FS
Tl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRI
T0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lO
Rk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUVOQUJMRV9OU19BU1NF
UlRJT05TID0gTk87CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJ
R0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NL
UyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9V
TkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVU
T1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7
CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IE5POworCQkJ
CU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlTV0lGVF9D
T01QSUxBVElPTl9NT0RFID0gd2hvbGVtb2R1bGU7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xF
VkVMID0gIi1PIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQxNUFEMkEy
NDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0g
WUVTOworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlMRF9SVU5QQVRIX1NF
QVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJAZXhlY3V0YWJsZV9w
YXRoLy4uL0ZyYW1ld29ya3MiLAorCQkJCQkiQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MiLAor
CQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9P
UFRJTUlaQVRJT05fTEVWRUwgPSAiLU9ub25lIjsKKwkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOwor
CQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxNUFEMkIyNDk5QkM1QzAwNUJCMkU0
IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ09E
RV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0g
KAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIkBleGVjdXRhYmxlX3BhdGgvLi4vRnJhbWV3
b3JrcyIsCisJCQkJCSJAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3JrcyIsCisJCQkJKTsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7
CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24g
Ki8KKwkJMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNNb3N0bHlDIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDI3
MjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLywKKwkJCQkxNDE1QUQyODI0OTlCQzVDMDA1QkIy
RTQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQkx
NDE1QUQyOTI0OTlCQzVDMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzTW9zdGx5QyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDE1QUQyQTI0
OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCisJCQkJMTQxNUFEMkIyNDk5QkM1QzAwNUJCMkU0
IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVu
ZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSAxNDE1
QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlDL1Jp
Y2hhcmRzTW9zdGx5Qy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01v
c3RseUMueGNzY2hlbWUgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmlj
aGFyZHNNb3N0bHlDL1JpY2hhcmRzTW9zdGx5Qy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2No
ZW1lcy9SaWNoYXJkc01vc3RseUMueGNzY2hlbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVmZjc5OWU4OTYyNjY2
MDM0OWYxNGE2NThiN2YyZWFiMzQ3OTUyMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseUMvUmljaGFyZHNNb3N0bHlD
Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5Qy54Y3NjaGVt
ZQpAQCAtMCwwICsxLDgxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgorPFNjaGVtZQorICAgTGFzdFVwZ3JhZGVWZXJzaW9uID0gIjEyMDAiCisgICB2ZXJzaW9uID0g
IjEuNyI+CisgICA8QnVpbGRBY3Rpb24KKyAgICAgIHBhcmFsbGVsaXplQnVpbGRhYmxlcyA9ICJZ
RVMiCisgICAgICBidWlsZEltcGxpY2l0RGVwZW5kZW5jaWVzID0gIllFUyI+CisgICAgICA8QnVp
bGRBY3Rpb25FbnRyaWVzPgorICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKKyAgICAgICAgICAg
IGJ1aWxkRm9yVGVzdGluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcgPSAi
WUVTIgorICAgICAgICAgICAgYnVpbGRGb3JQcm9maWxpbmcgPSAiWUVTIgorICAgICAgICAgICAg
YnVpbGRGb3JBcmNoaXZpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBbmFseXppbmcg
PSAiWUVTIj4KKyAgICAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgICAg
IEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgICAgIEJsdWVwcmlu
dElkZW50aWZpZXIgPSAiMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IgorICAgICAgICAgICAgICAg
QnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc01vc3RseUMiCisgICAgICAgICAgICAgICBCbHVlcHJp
bnROYW1lID0gIlJpY2hhcmRzTW9zdGx5QyIKKyAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250
YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5Qy54Y29kZXByb2oiPgorICAgICAgICAg
ICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICAgICA8L0J1aWxkQWN0aW9uRW50cnk+Cisg
ICAgICA8L0J1aWxkQWN0aW9uRW50cmllcz4KKyAgIDwvQnVpbGRBY3Rpb24+CisgICA8VGVzdEFj
dGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWRE
ZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxM
REIiCisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZv
dW5kYXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NF
bnYgPSAiWUVTIj4KKyAgICAgIDxUZXN0YWJsZXM+CisgICAgICA8L1Rlc3RhYmxlcz4KKyAgIDwv
VGVzdEFjdGlvbj4KKyAgIDxMYXVuY2hBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9
ICJEZWJ1ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVn
Z2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50
aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCisgICAgICBs
YXVuY2hTdHlsZSA9ICIwIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIK
KyAgICAgIGlnbm9yZXNQZXJzaXN0ZW50U3RhdGVPbkxhdW5jaCA9ICJOTyIKKyAgICAgIGRlYnVn
RG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIKKyAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9
ICJpbnRlcm5hbCIKKyAgICAgIGFsbG93TG9jYXRpb25TaW11bGF0aW9uID0gIllFUyI+CisgICAg
ICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01v
ZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWls
ZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlm
aWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5h
bWUgPSAiUmljaGFyZHNNb3N0bHlDIgorICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNo
YXJkc01vc3RseUMiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5l
cjpSaWNoYXJkc01vc3RseUMueGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJl
bmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICA8L0xhdW5jaEFjdGlv
bj4KKyAgIDxQcm9maWxlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFz
ZSIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIgorICAgICAgc2F2
ZWRUb29sSWRlbnRpZmllciA9ICIiCisgICAgICB1c2VDdXN0b21Xb3JraW5nRGlyZWN0b3J5ID0g
Ik5PIgorICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIj4KKyAgICAgIDxCdWls
ZGFibGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIw
Ij4KKyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlk
ZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAi
MTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IgorICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJS
aWNoYXJkc01vc3RseUMiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzTW9z
dGx5QyIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hh
cmRzTW9zdGx5Qy54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+Cisg
ICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgIDwvUHJvZmlsZUFjdGlvbj4KKyAg
IDxBbmFseXplQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciPgorICAg
PC9BbmFseXplQWN0aW9uPgorICAgPEFyY2hpdmVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJh
dGlvbiA9ICJSZWxlYXNlIgorICAgICAgcmV2ZWFsQXJjaGl2ZUluT3JnYW5pemVyID0gIllFUyI+
CisgICA8L0FyY2hpdmVBY3Rpb24+CisgICA8SW5zdGFsbEFjdGlvbgorICAgICAgYnVpbGRDb25m
aWd1cmF0aW9uID0gIlJlbGVhc2UiPgorICAgPC9JbnN0YWxsQWN0aW9uPgorPC9TY2hlbWU+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNN
b3N0bHlDL1JpY2hhcmRzTW9zdGx5Qy9yaWNoYXJkcy5jIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMvcmljaGFyZHMu
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNTIyOTQ3YWE4YTBlNWNiOGM2N2ZhYjgyMjVmMzNiOWEwYmFmZWJlCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1Jp
Y2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMvcmljaGFyZHMuYwpAQCAtMCwwICsxLDQ4OCBA
QAorLyogIEMgdmVyc2lvbiBvZiB0aGUgc3lzdGVtcyBwcm9ncmFtbWluZyBsYW5ndWFnZSBiZW5j
aG1hcmsKKyoqICBBdXRob3I6ICBNLiBKLiBKb3JkYW4gIENhbWJyaWRnZSBDb21wdXRlciBMYWJv
cmF0b3J5LiAKKyoqICAKKyoqICBNb2RpZmllZCBieTogIE0uIFJpY2hhcmRzLCBOb3YgMTk5Ngor
KiogICAgdG8gYmUgQU5TSSBDIGFuZCBydW5uYWJsZSBvbiA2NCBiaXQgbWFjaGluZXMgKyBvdGhl
ciBtaW5vciBjaGFuZ2VzCisqKiAgTW9kaWZpZWQgYnk6ICBNLiBSaWNoYXJkcywgMjAgT2N0IDE5
OTgKKyoqICAgIG1hZGUgbWlub3IgY29ycmVjdGlvbnMgdG8gaW1wcm92ZSBBTlNJIGNvbXBsaWFu
Y2UgKHN1Z2dlc3RlZAorKiogICAgYnkgRGF2aWQgTGV2aW5lKQorKi8KKworI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisKKyNp
ZiAxCisjZGVmaW5lICAgICAgICAgICAgICAgIENvdW50ICAgICAgICAgICAxMDAwCisjZGVmaW5l
ICAgICAgICAgICAgICAgIFFwa3Rjb3VudHZhbCAgICAyMzIyCisjZGVmaW5lICAgICAgICAgICAg
ICAgIEhvbGRjb3VudHZhbCAgICA5MjgKKyNlbmRpZgorCisjZGVmaW5lICAgICAgICAgICAgICAg
IFRSVUUgICAgICAgICAgICAxCisjZGVmaW5lICAgICAgICAgICAgICAgIEZBTFNFICAgICAgICAg
ICAwCisjZGVmaW5lICAgICAgICAgICAgICAgIE1BWElOVCAgICAgICAgICAzMjc2NworCisjZGVm
aW5lICAgICAgICAgICAgICAgIEJVRlNJWkUgICAgICAgICAzCisjZGVmaW5lICAgICAgICAgICAg
ICAgIElfSURMRSAgICAgICAgICAxCisjZGVmaW5lICAgICAgICAgICAgICAgIElfV09SSyAgICAg
ICAgICAyCisjZGVmaW5lICAgICAgICAgICAgICAgIElfSEFORExFUkEgICAgICAzCisjZGVmaW5l
ICAgICAgICAgICAgICAgIElfSEFORExFUkIgICAgICA0CisjZGVmaW5lICAgICAgICAgICAgICAg
IElfREVWQSAgICAgICAgICA1CisjZGVmaW5lICAgICAgICAgICAgICAgIElfREVWQiAgICAgICAg
ICA2CisjZGVmaW5lICAgICAgICAgICAgICAgIFBLVEJJVCAgICAgICAgICAxCisjZGVmaW5lICAg
ICAgICAgICAgICAgIFdBSVRCSVQgICAgICAgICAyCisjZGVmaW5lICAgICAgICAgICAgICAgIEhP
TERCSVQgICAgICAgICA0CisjZGVmaW5lICAgICAgICAgICAgICAgIE5PVFBLVEJJVCAgICAgICAh
MQorI2RlZmluZSAgICAgICAgICAgICAgICBOT1RXQUlUQklUICAgICAgITIKKyNkZWZpbmUgICAg
ICAgICAgICAgICAgTk9USE9MREJJVCAgICAgIDBYRkZGQgorCisjZGVmaW5lICAgICAgICAgICAg
ICAgIFNfUlVOICAgICAgICAgICAwCisjZGVmaW5lICAgICAgICAgICAgICAgIFNfUlVOUEtUICAg
ICAgICAxCisjZGVmaW5lICAgICAgICAgICAgICAgIFNfV0FJVCAgICAgICAgICAyCisjZGVmaW5l
ICAgICAgICAgICAgICAgIFNfV0FJVFBLVCAgICAgICAzCisjZGVmaW5lICAgICAgICAgICAgICAg
IFNfSE9MRCAgICAgICAgICA0CisjZGVmaW5lICAgICAgICAgICAgICAgIFNfSE9MRFBLVCAgICAg
ICA1CisjZGVmaW5lICAgICAgICAgICAgICAgIFNfSE9MRFdBSVQgICAgICA2CisjZGVmaW5lICAg
ICAgICAgICAgICAgIFNfSE9MRFdBSVRQS1QgICA3CisKKyNkZWZpbmUgICAgICAgICAgICAgICAg
S19ERVYgICAgICAgICAgIDEwMDAKKyNkZWZpbmUgICAgICAgICAgICAgICAgS19XT1JLICAgICAg
ICAgIDEwMDEKKworc3RydWN0IHBhY2tldAoreworICAgIHN0cnVjdCBwYWNrZXQgICpwX2xpbms7
CisgICAgaW50ICAgICAgICAgICAgIHBfaWQ7CisgICAgaW50ICAgICAgICAgICAgIHBfa2luZDsK
KyAgICBpbnQgICAgICAgICAgICAgcF9hMTsKKyAgICBjaGFyICAgICAgICAgICAgcF9hMltCVUZT
SVpFKzFdOworfTsKKworc3RydWN0IHRhc2sKK3sKKyAgICBzdHJ1Y3QgdGFzayAgICAqdF9saW5r
OworICAgIGludCAgICAgICAgICAgICB0X2lkOworICAgIGludCAgICAgICAgICAgICB0X3ByaTsK
KyAgICBzdHJ1Y3QgcGFja2V0ICAqdF93a3E7CisgICAgaW50ICAgICAgICAgICAgIHRfc3RhdGU7
CisgICAgc3RydWN0IHRhc2sgICAgKigqdF9mbikoc3RydWN0IHBhY2tldCAqKTsKKyAgICBsb25n
ICAgICAgICAgICAgdF92MTsKKyAgICBsb25nICAgICAgICAgICAgdF92MjsKK307CisKK2NoYXIg
IGFscGhhYmV0WzI4XSA9ICIwQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOworc3RydWN0IHRh
c2sgKnRhc2t0YWJbMTFdICA9ICB7KHN0cnVjdCB0YXNrICopMTAsMCwwLDAsMCwwLDAsMCwwLDAs
MH07CitzdHJ1Y3QgdGFzayAqdGFza2xpc3QgICAgPSAgMDsKK3N0cnVjdCB0YXNrICp0Y2I7Cits
b25nICAgIHRhc2tpZDsKK2xvbmcgICAgdjE7Citsb25nICAgIHYyOworaW50ICAgICBxcGt0Y291
bnQgICAgPSAgMDsKK2ludCAgICAgaG9sZGNvdW50ICAgID0gIDA7CitpbnQgICAgIHRyYWNpbmcg
ICAgICA9ICAwOworaW50ICAgICBsYXlvdXQgICAgICAgPSAgMDsKKwordm9pZCBhcHBlbmQoc3Ry
dWN0IHBhY2tldCAqcGt0LCBzdHJ1Y3QgcGFja2V0ICpwdHIpOworCit2b2lkIGNyZWF0ZXRhc2so
aW50IGlkLAorICAgICAgICAgICAgICAgIGludCBwcmksCisgICAgICAgICAgICAgICAgc3RydWN0
IHBhY2tldCAqd2txLAorICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdGFzayAqKCpmbikoc3RydWN0IHBhY2tldCAqKSwKKyAgICAgICAgICAgICAgICBs
b25nIHYxLAorICAgICAgICAgICAgICAgIGxvbmcgdjIpCit7CisgICAgc3RydWN0IHRhc2sgKnQg
PSAoc3RydWN0IHRhc2sgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCB0YXNrKSk7CisKKyAgICB0YXNr
dGFiW2lkXSA9IHQ7CisgICAgdC0+dF9saW5rICAgPSB0YXNrbGlzdDsKKyAgICB0LT50X2lkICAg
ICA9IGlkOworICAgIHQtPnRfcHJpICAgID0gcHJpOworICAgIHQtPnRfd2txICAgID0gd2txOwor
ICAgIHQtPnRfc3RhdGUgID0gc3RhdGU7CisgICAgdC0+dF9mbiAgICAgPSBmbjsKKyAgICB0LT50
X3YxICAgICA9IHYxOworICAgIHQtPnRfdjIgICAgID0gdjI7CisgICAgdGFza2xpc3QgICAgPSB0
OworfQorCitzdHJ1Y3QgcGFja2V0ICpwa3Qoc3RydWN0IHBhY2tldCAqbGluaywgaW50IGlkLCBp
bnQga2luZCkKK3sKKyAgICBpbnQgaTsKKyAgICBzdHJ1Y3QgcGFja2V0ICpwID0gKHN0cnVjdCBw
YWNrZXQgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBwYWNrZXQpKTsKKworICAgIGZvciAoaT0wOyBp
PD1CVUZTSVpFOyBpKyspCisgICAgICAgIHAtPnBfYTJbaV0gPSAwOworCisgICAgcC0+cF9saW5r
ID0gbGluazsKKyAgICBwLT5wX2lkID0gaWQ7CisgICAgcC0+cF9raW5kID0ga2luZDsKKyAgICBw
LT5wX2ExID0gMDsKKworICAgIHJldHVybiAocCk7Cit9CisKK3ZvaWQgdHJhY2UoY2hhciBhKQor
eworICAgaWYgKCAtLWxheW91dCA8PSAwICkKKyAgIHsKKyAgICAgICAgbGF5b3V0ID0gNTA7Cisg
ICAgfQorCit9CisKK3ZvaWQgc2NoZWR1bGUoKQoreworICAgIHdoaWxlICggdGNiICE9IDAgKQor
ICAgIHsKKyAgICAgICAgc3RydWN0IHBhY2tldCAqcGt0OworICAgICAgICBzdHJ1Y3QgdGFzayAq
bmV3dGNiOworCisgICAgICAgIHBrdD0wOworCisgICAgICAgIHN3aXRjaCAoIHRjYi0+dF9zdGF0
ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgU19XQUlUUEtUOgorICAgICAgICAgICAg
ICAgIHBrdCA9IHRjYi0+dF93a3E7CisgICAgICAgICAgICAgICAgdGNiLT50X3drcSA9IHBrdC0+
cF9saW5rOworICAgICAgICAgICAgICAgIHRjYi0+dF9zdGF0ZSA9IHRjYi0+dF93a3EgPT0gMCA/
IFNfUlVOIDogU19SVU5QS1Q7CisKKyAgICAgICAgICAgIGNhc2UgU19SVU46CisgICAgICAgICAg
ICBjYXNlIFNfUlVOUEtUOgorICAgICAgICAgICAgICAgIHRhc2tpZCA9IHRjYi0+dF9pZDsKKyAg
ICAgICAgICAgICAgICB2MSA9IHRjYi0+dF92MTsKKyAgICAgICAgICAgICAgICB2MiA9IHRjYi0+
dF92MjsKKyAgICAgICAgICAgICAgICBpZiAodHJhY2luZykgeworICAgICAgICAgIHRyYWNlKHRh
c2tpZCsnMCcpOworICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3dGNiID0gKCoodGNiLT50
X2ZuKSkocGt0KTsKKyAgICAgICAgICAgICAgICB0Y2ItPnRfdjEgPSB2MTsKKyAgICAgICAgICAg
ICAgICB0Y2ItPnRfdjIgPSB2MjsKKyAgICAgICAgICAgICAgICB0Y2IgPSBuZXd0Y2I7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgU19XQUlUOgorICAgICAgICAg
ICAgY2FzZSBTX0hPTEQ6CisgICAgICAgICAgICBjYXNlIFNfSE9MRFBLVDoKKyAgICAgICAgICAg
IGNhc2UgU19IT0xEV0FJVDoKKyAgICAgICAgICAgIGNhc2UgU19IT0xEV0FJVFBLVDoKKyAgICAg
ICAgICAgICAgICB0Y2IgPSB0Y2ItPnRfbGluazsKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3N0cnVjdCB0YXNrICp3YWl0Xyh2b2lkKQoreworICAgIHRjYi0+dF9zdGF0
ZSB8PSBXQUlUQklUOworICAgIHJldHVybiAodGNiKTsKK30KKworc3RydWN0IHRhc2sgKmhvbGRz
ZWxmKHZvaWQpCit7CisgICAgKytob2xkY291bnQ7CisgICAgdGNiLT50X3N0YXRlIHw9IEhPTERC
SVQ7CisgICAgcmV0dXJuICh0Y2ItPnRfbGluaykgOworfQorCitzdHJ1Y3QgdGFzayAqZmluZHRj
YihpbnQgaWQpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSAwOworCisgICAgaWYgKDE8PWlkICYm
IGlkPD0obG9uZyl0YXNrdGFiWzBdKQorICAgIHQgPSB0YXNrdGFiW2lkXTsKKyAgICByZXR1cm4o
dCk7Cit9CisKK3N0cnVjdCB0YXNrICpyZWxlYXNlKGludCBpZCkKK3sKKyAgICBzdHJ1Y3QgdGFz
ayAqdDsKKworICAgIHQgPSBmaW5kdGNiKGlkKTsKKyAgICBpZiAoIHQ9PTAgKSByZXR1cm4gKDAp
OworCisgICAgdC0+dF9zdGF0ZSAmPSBOT1RIT0xEQklUOworICAgIGlmICggdC0+dF9wcmkgPiB0
Y2ItPnRfcHJpICkgcmV0dXJuICh0KTsKKworICAgIHJldHVybiAodGNiKSA7Cit9CisKKworc3Ry
dWN0IHRhc2sgKnFwa3Qoc3RydWN0IHBhY2tldCAqcGt0KQoreworICAgIHN0cnVjdCB0YXNrICp0
OworCisgICAgdCA9IGZpbmR0Y2IocGt0LT5wX2lkKTsKKyAgICBpZiAodD09MCkgcmV0dXJuICh0
KTsKKworICAgIHFwa3Rjb3VudCsrOworCisgICAgcGt0LT5wX2xpbmsgPSAwOworICAgIHBrdC0+
cF9pZCA9IChpbnQpdGFza2lkOworCisgICBpZiAodC0+dF93a3E9PTApCisgICAgeworICAgICAg
ICB0LT50X3drcSA9IHBrdDsKKyAgICAgICAgdC0+dF9zdGF0ZSB8PSBQS1RCSVQ7CisgICAgICAg
IGlmICh0LT50X3ByaSA+IHRjYi0+dF9wcmkpIHJldHVybiAodCk7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIGFwcGVuZChwa3QsIChzdHJ1Y3QgcGFja2V0ICopJih0LT50X3drcSkp
OworICAgIH0KKworICAgIHJldHVybiAodGNiKTsKK30KKworc3RydWN0IHRhc2sgKmlkbGVmbihz
dHJ1Y3QgcGFja2V0ICpwa3QpCit7CisgICAgaWYgKCAtLXYyPT0wICkgcmV0dXJuICggaG9sZHNl
bGYoKSApOworCisgICAgaWYgKCAodjEmMSkgPT0gMCApCisgICAgeworICAgICAgICB2MSA9ICgg
djE+PjEpICYgTUFYSU5UOworICAgICAgICByZXR1cm4gKCByZWxlYXNlKElfREVWQSkgKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdjEgPSAoICh2MT4+MSkgJiBNQVhJTlQpIF4g
MFhEMDA4OworICAgICAgICByZXR1cm4gKCByZWxlYXNlKElfREVWQikgKTsKKyAgICB9Cit9CisK
K3N0YXRpYyBKU0dsb2JhbENvbnRleHRSZWYgY3R4Oworc3RhdGljIEpTT2JqZWN0UmVmIGpzV29y
a2ZuOworI2RlZmluZSBDSEVDS19FWENFUFRJT04oZXhjZXB0aW9uKSBcCisgICAgaWYgKGV4Y2Vw
dGlvbikgeyBcCisgICAgICAgIEpTU3RyaW5nUmVmIG1lc3NhZ2UgPSBKU1ZhbHVlVG9TdHJpbmdD
b3B5KGN0eCwgZXhjZXB0aW9uLCBOVUxMKTsgXAorICAgICAgICBzaXplX3QgbGVuZ3RoID0gSlNT
dHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG1lc3NhZ2UpOyBcCisgICAgICAgIGNoYXIq
IGJ1ZmZlciA9IChjaGFyKiltYWxsb2MobGVuZ3RoICsgMSk7IFwKKyAgICAgICAgSlNTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhtZXNzYWdlLCBidWZmZXIsIGxlbmd0aCArIDEpOyBcCisgICAgICAgIGJ1
ZmZlcltsZW5ndGhdID0gMDsgXAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuY2F1Z2h0IGV4
Y2VwdGlvbjogJXNcbiIsIGJ1ZmZlcik7IFwKKyAgICAgICAgZXhpdCgxKTsgXAorICAgIH0gXAor
ICAgIGRvIHsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBDSEVDS0VEKC4uLikgXAorICAgIF9fVkFf
QVJHU19fOyBcCisgICAgQ0hFQ0tfRVhDRVBUSU9OKGV4Y2VwdGlvbik7CisKKyNkZWZpbmUgQ09O
Q0FUXyhBLCBCKSBBICMjIEIKKyNkZWZpbmUgQ09OQ0FUKEEsIEIpIENPTkNBVF8oQSwgQikKKwor
I2RlZmluZSBDSEVDS0VEX0lOVF8odGFyZ2V0LCB0bXAsIC4uLikgXAorICAgIEpTVmFsdWVSZWYg
dG1wID0gQ0hFQ0tFRChfX1ZBX0FSR1NfXyk7IFwKKyAgICB0YXJnZXQgPSBDSEVDS0VEKEpTVmFs
dWVUb051bWJlcihjdHgsIHRtcCwgJmV4Y2VwdGlvbikpCisKKyNkZWZpbmUgQ0hFQ0tFRF9JTlQo
dGFyZ2V0LCAuLi4pIFwKKyAgICBDSEVDS0VEX0lOVF8odGFyZ2V0LCBDT05DQVQodG1wLCBfX0NP
VU5URVJfXyksIF9fVkFfQVJHU19fKQorCitzdHJ1Y3QgdGFzayogdmFsdWVUb1Rhc2soSlNWYWx1
ZVJlZiB2YWx1ZSkKK3sKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IE5VTEw7CisgICAgZG91
YmxlIGQgPSBDSEVDS0VEKEpTVmFsdWVUb051bWJlcihjdHgsIHZhbHVlLCAmZXhjZXB0aW9uKSk7
CisgICAgcmV0dXJuIChzdHJ1Y3QgdGFzayopKGludHB0cl90KWQ7Cit9CisKK0pTVmFsdWVSZWYg
d2FpdFdyYXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc3RydWN0IHRhc2sq
IHRhc2sgPSB3YWl0XygpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIChpbnRw
dHJfdCl0YXNrKTsKK30KKworSlNWYWx1ZVJlZiBxcGt0V3JhcHBlcihKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBzdHJ1Y3QgcGFja2V0KiBwa3QgPSAoc3RydWN0IHBhY2tldCopKGlu
dHB0cl90KUpTVmFsdWVUb051bWJlcihjdHgsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKmV4Y2VwdGlvbik7CisgICAgc3RydWN0IHRhc2sqIHRhc2sgPSBx
cGt0KHBrdCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgKGludHB0cl90KXRh
c2spOworfQorCitKU1N0cmluZ1JlZiByZWFkRmlsZShjb25zdCBjaGFyKiBwYXRoKQoreworICAg
IEZJTEUqIGZpbGUgPSBmb3BlbihwYXRoLCAiciIpOworICAgIGZzZWVrKGZpbGUsIDAsIFNFRUtf
RU5EKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGZ0ZWxsKGZpbGUpOworICAgIGNoYXIqIGJ1ZmZlciA9
IGNhbGxvYyhzaXplLCBzaXplb2YoY2hhcikpOworICAgIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VU
KTsKKyAgICBmcmVhZChidWZmZXIsIHNpemVvZihjaGFyKSwgc2l6ZSwgZmlsZSk7CisgICAgZmNs
b3NlKGZpbGUpOworICAgIEpTU3RyaW5nUmVmIGNvbnRlbnRzID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoYnVmZmVyKTsKKyAgICBmcmVlKGJ1ZmZlcik7CisgICAgcmV0dXJuIGNvbnRl
bnRzOworfQorCitzdHJ1Y3QgdGFzayAqd29ya2ZuKHN0cnVjdCBwYWNrZXQgKnBrdCkKK3sKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57CisgICAgICAgIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZShOVUxMKTsK
KyAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGN0eCk7CisgICAgICAgIAorICAgICAgICBKU1N0cmluZ1JlZiBzb3VyY2UgPSByZWFkRmls
ZSgicmljaGFyZHMuanMiKTsKKyAgICAgICAgSlNTdHJpbmdSZWYgd29ya2ZuU3RyaW5nID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNyZWF0ZVdvcmtmbiIpOworICAgICAgICBKU1N0
cmluZ1JlZiB3YWl0U3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIndhaXQi
KTsKKyAgICAKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNvdXJjZSwgTlVMTCwgTlVM
TCwgMCwgTlVMTCk7CisgICAgICAgIAorICAgICAgICBKU09iamVjdFJlZiBqc0FscGhhYmV0ID0g
SlNPYmplY3RNYWtlQXJyYXkoY3R4LCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDI4OyArK2kpCisgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
QXRJbmRleChjdHgsIGpzQWxwaGFiZXQsIGksIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgYWxwaGFi
ZXRbaV0pLCBOVUxMKTsKKyAgICAgICAgCisgICAgICAgIEpTT2JqZWN0UmVmIGNyZWF0ZVdvcmtm
biA9IEpTVmFsdWVUb09iamVjdChjdHgsIEpTT2JqZWN0R2V0UHJvcGVydHkoY3R4LCBnbG9iYWxP
YmplY3QsIHdvcmtmblN0cmluZywgTlVMTCksIE5VTEwpOworICAgICAgICBKU1ZhbHVlUmVmIGFy
Z3NbNl0gPSB7CisgICAgICAgICAgICBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhj
dHgsIHdhaXRTdHJpbmcsIHdhaXRXcmFwcGVyKSwKKyAgICAgICAgICAgIEpTVmFsdWVNYWtlTnVt
YmVyKGN0eCwgSV9IQU5ETEVSQSksCisgICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjdHgs
IElfSEFORExFUkIpLAorICAgICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBCVUZTSVpF
KSwKKyAgICAgICAgICAgIGpzQWxwaGFiZXQsCisgICAgICAgIH07CisgICAgICAgIEpTVmFsdWVS
ZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjdHgsIGNyZWF0ZVdvcmtmbiwgTlVM
TCwgNSwgYXJncywgTlVMTCk7CisgICAgICAgIGpzV29ya2ZuID0gSlNWYWx1ZVRvT2JqZWN0KGN0
eCwgcmVzdWx0LCBOVUxMKTsKKyAgICAgICAgCisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzb3Vy
Y2UpOworICAgICAgICBKU1N0cmluZ1JlbGVhc2Uod29ya2ZuU3RyaW5nKTsKKyAgICAgICAgSlNT
dHJpbmdSZWxlYXNlKHdhaXRTdHJpbmcpOworICAgIH0pOworICAgIAorICAgIEpTVmFsdWVSZWYg
ZXhjZXB0aW9uID0gTlVMTDsKKyAgICBKU1ZhbHVlUmVmIGFyZ3NbM10gPSB7IEpTVmFsdWVNYWtl
TnVtYmVyKGN0eCwgKGludHB0cl90KXBrdCksIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgdjEpLCBK
U1ZhbHVlTWFrZU51bWJlcihjdHgsIHYxKSB9OworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gQ0hF
Q0tFRChKU09iamVjdENhbGxBc0Z1bmN0aW9uKGN0eCwganNXb3JrZm4sIE5VTEwsIDMsIGFyZ3Ms
ICZleGNlcHRpb24pKTsKKyAgICBKU09iamVjdFJlZiByZXN1bHRPYmplY3QgPSBDSEVDS0VEKEpT
VmFsdWVUb09iamVjdChjdHgsIHJlc3VsdCwgJmV4Y2VwdGlvbikpOworICAgIGlmICghSlNWYWx1
ZUlzQXJyYXkoY3R4LCByZXN1bHQpKQorICAgICAgICByZXR1cm4gdmFsdWVUb1Rhc2socmVzdWx0
KTsKKyAgIAorICAgIENIRUNLRURfSU5UKHYxLCBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChj
dHgsIHJlc3VsdE9iamVjdCwgMCwgJmV4Y2VwdGlvbikpOworICAgIENIRUNLRURfSU5UKHYyLCBK
U09iamVjdEdldFByb3BlcnR5QXRJbmRleChjdHgsIHJlc3VsdE9iamVjdCwgMSwgJmV4Y2VwdGlv
bikpOworICAgIENIRUNLRURfSU5UKHBrdC0+cF9hMSwgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5k
ZXgoY3R4LCByZXN1bHRPYmplY3QsIDIsICZleGNlcHRpb24pKTsKKyAgICBwa3QtPnBfaWQgPSAo
aW50KXYxOworICAgIEpTVmFsdWVSZWYgZGF0YSA9IENIRUNLRUQoSlNPYmplY3RHZXRQcm9wZXJ0
eUF0SW5kZXgoY3R4LCByZXN1bHRPYmplY3QsIDMsICZleGNlcHRpb24pKTsKKyAgICBKU09iamVj
dFJlZiBkYXRhT2JqZWN0ID0gQ0hFQ0tFRChKU1ZhbHVlVG9PYmplY3QoY3R4LCBkYXRhLCAmZXhj
ZXB0aW9uKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEJVRlNJWkU7ICsraSkgewor
ICAgICAgICAgQ0hFQ0tFRF9JTlQocGt0LT5wX2EyW2ldLCBKU09iamVjdEdldFByb3BlcnR5QXRJ
bmRleChjdHgsIGRhdGFPYmplY3QsIGksICZleGNlcHRpb24pKTsKKyAgICB9CisgICAgcmV0dXJu
IHFwa3QocGt0KTsKK30KKworc3RydWN0IHRhc2sgKmhhbmRsZXJmbihzdHJ1Y3QgcGFja2V0ICpw
a3QpCit7CisgIGlmICggcGt0IT0wKSB7CisgICAgYXBwZW5kKHBrdCwgKHN0cnVjdCBwYWNrZXQg
KikocGt0LT5wX2tpbmQ9PUtfV09SSyA/ICZ2MSA6ICZ2MikpOworICB9CisKKyAgaWYgKCB2MSE9
MCApIHsKKyAgICBpbnQgY291bnQ7CisgICAgc3RydWN0IHBhY2tldCAqd29ya3BrdCA9IChzdHJ1
Y3QgcGFja2V0ICopdjE7CisgICAgY291bnQgPSB3b3JrcGt0LT5wX2ExOworCisgICAgaWYgKCBj
b3VudCA+IEJVRlNJWkUgKSB7CisgICAgICB2MSA9IChsb25nKSgoKHN0cnVjdCBwYWNrZXQgKil2
MSktPnBfbGluayk7CisgICAgICByZXR1cm4gKCBxcGt0KHdvcmtwa3QpICk7CisgICAgfQorCisg
ICAgaWYgKCB2MiE9MCApIHsKKyAgICAgIHN0cnVjdCBwYWNrZXQgKmRldnBrdDsKKworICAgICAg
ZGV2cGt0ID0gKHN0cnVjdCBwYWNrZXQgKil2MjsKKyAgICAgIHYyID0gKGxvbmcpKCgoc3RydWN0
IHBhY2tldCAqKXYyKS0+cF9saW5rKTsKKyAgICAgIGRldnBrdC0+cF9hMSA9IHdvcmtwa3QtPnBf
YTJbY291bnRdOworICAgICAgd29ya3BrdC0+cF9hMSA9IGNvdW50KzE7CisgICAgICByZXR1cm4o
IHFwa3QoZGV2cGt0KSApOworICAgIH0KKyAgfQorICByZXR1cm4gd2FpdF8oKTsKK30KKworc3Ry
dWN0IHRhc2sgKmRldmZuKHN0cnVjdCBwYWNrZXQgKnBrdCkKK3sKKyAgICBpZiAoIHBrdD09MCAp
CisgICAgeworICAgICAgICBpZiAoIHYxPT0wICkgcmV0dXJuICggd2FpdF8oKSApOworICAgICAg
ICBwa3QgPSAoc3RydWN0IHBhY2tldCAqKXYxOworICAgICAgICB2MSA9IDA7CisgICAgICAgIHJl
dHVybiAoIHFwa3QocGt0KSApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB2MSA9
IChsb25nKXBrdDsKKyAgICAgICAgaWYgKHRyYWNpbmcpIHRyYWNlKHBrdC0+cF9hMSk7CisgICAg
ICAgIHJldHVybiAoIGhvbGRzZWxmKCkgKTsKKyAgICB9Cit9CisKK3ZvaWQgYXBwZW5kKHN0cnVj
dCBwYWNrZXQgKnBrdCwgc3RydWN0IHBhY2tldCAqcHRyKQoreworICAgIHBrdC0+cF9saW5rID0g
MDsKKworICAgIHdoaWxlICggcHRyLT5wX2xpbmsgKSBwdHIgPSBwdHItPnBfbGluazsKKworICAg
IHB0ci0+cF9saW5rID0gcGt0OworfQorCit2b2lkIHNldHVwKCkKK3sKKyAgICBzdHJ1Y3QgcGFj
a2V0ICp3a3EgPSAwOworCisgICAgY3JlYXRldGFzayhJX0lETEUsIDAsIHdrcSwgU19SVU4sIGlk
bGVmbiwgMSwgQ291bnQpOworCisgICAgd2txID0gcGt0KDAsIDAsIEtfV09SSyk7CisgICAgd2tx
ID0gcGt0KHdrcSwgMCwgS19XT1JLKTsKKworICAgIGNyZWF0ZXRhc2soSV9XT1JLLCAxMDAwLCB3
a3EsIFNfV0FJVFBLVCwgd29ya2ZuLCBJX0hBTkRMRVJBLCAwKTsKKworICAgIHdrcSA9IHBrdCgw
LCBJX0RFVkEsIEtfREVWKTsKKyAgICB3a3EgPSBwa3Qod2txLCBJX0RFVkEsIEtfREVWKTsKKyAg
ICB3a3EgPSBwa3Qod2txLCBJX0RFVkEsIEtfREVWKTsKKworICAgIGNyZWF0ZXRhc2soSV9IQU5E
TEVSQSwgMjAwMCwgd2txLCBTX1dBSVRQS1QsIGhhbmRsZXJmbiwgMCwgMCk7CisKKyAgICB3a3Eg
PSBwa3QoMCwgSV9ERVZCLCBLX0RFVik7CisgICAgd2txID0gcGt0KHdrcSwgSV9ERVZCLCBLX0RF
Vik7CisgICAgd2txID0gcGt0KHdrcSwgSV9ERVZCLCBLX0RFVik7CisKKyAgICBjcmVhdGV0YXNr
KElfSEFORExFUkIsIDMwMDAsIHdrcSwgU19XQUlUUEtULCBoYW5kbGVyZm4sIDAsIDApOworCisg
ICAgd2txID0gMDsKKyAgICBjcmVhdGV0YXNrKElfREVWQSwgNDAwMCwgd2txLCBTX1dBSVQsIGRl
dmZuLCAwLCAwKTsKKyAgICBjcmVhdGV0YXNrKElfREVWQiwgNTAwMCwgd2txLCBTX1dBSVQsIGRl
dmZuLCAwLCAwKTsKKworICAgIHRjYiA9IHRhc2tsaXN0OworCisgICAgcXBrdGNvdW50ID0gaG9s
ZGNvdW50ID0gMDsKKworICAgIHRyYWNpbmcgPSBGQUxTRTsKKyAgICBsYXlvdXQgPSAwOworfQor
CitpbnQgZ2V0UXBrdGNvdW50KCkKK3sKKyAgICByZXR1cm4gIHFwa3Rjb3VudDsKK30KKworaW50
IGdldEhvbGRjb3VudCgpCit7CisgICAgcmV0dXJuIGhvbGRjb3VudDsKK30KKworaW50IG1haW4o
KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGl0ZXJhdGlvbnMgPSA1MDsKKyAgICBjb25zdCBDRlRp
bWVJbnRlcnZhbCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGltZSgpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgc2V0dXAoKTsKKyAgICAg
ICAgc2NoZWR1bGUoKTsKKyAgICAgICAgaWYgKHFwa3Rjb3VudCAhPSBRcGt0Y291bnR2YWwgfHwg
aG9sZGNvdW50ICE9IEhvbGRjb3VudHZhbCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50ID0gJWQsIGhvbGRDb3VudCA9ICVk
LlxuIiwgcXBrdGNvdW50LCBob2xkY291bnQpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBlbmQgPSBDQUN1cnJlbnRNZWRp
YVRpbWUoKTsKKyAgICBwcmludGYoIiVkXG4iLCAoaW50KSgoZW5kLXN0YXJ0KSAqIDEwMDApKTsK
KyAgICByZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMvcmljaGFyZHMuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlDL1Jp
Y2hhcmRzTW9zdGx5Qy9yaWNoYXJkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2FjZjFlM2FjNTA0YmY3NGRm
ZWRlNjk4YzM1ZjczY2VhZjgyODQxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMvcmlj
aGFyZHMuanMKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworZnVuY3Rpb24gY3JlYXRlV29y
a2ZuKHdhaXQsIElfSEFORExFUkEsIElfSEFORExFUkIsIEJVRlNJWkUsIGFscGhhYmV0KSB7Cisg
ICAgY29uc29sZS5sb2coYXJndW1lbnRzKQorICAgIHJldHVybiBmdW5jdGlvbihwa3QsIHYxLCB2
MikgeworICAgICAgICBpZiAoIXBrdCkKKyAgICAgICAgICAgIHJldHVybiB3YWl0KCk7CisgICAg
ICAgIHZhciB2MSA9IElfSEFORExFUkEgKyBJX0hBTkRMRVJCIC0gdjE7CisgICAgICAgIHZhciBk
YXRhID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IEJVRlNJWkU7IGkrKykgewor
ICAgICAgICAgICAgdjIrKzsKKyAgICAgICAgICAgIGlmICggdjIgPiAyNiApIHYyID0gMTsKKyAg
ICAgICAgICAgIGRhdGFbaV0gPSBhbHBoYWJldFt2Ml07CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIFt2MSwgdjIsIDAsIGRhdGFdOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0
bHlPYmpDLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1Njc0Y2U3ZjQyMGQyZTZjMWJlZDMz
YmJkZDU2OTJmOWJmYWJlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMzUyIEBACisvLyAhJCpVVEY4KiQh
Cit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJz
aW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKwkJMTQwQUFDMzcyNDk5QkQ3QTAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzNjI0OTlCRDZDMDAw
MUYxMUUgLyogcmljaGFyZHMuanMgKi87IH07CisJCTE0QkFFMkRBMjU2OUU5QzUwMDYzNjdDRiAv
KiBEZXZpY2VUYXNrLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEJBRTJEOTI1NjlFOUM1MDA2MzY3Q0YgLyogRGV2aWNlVGFzay5tICovOyB9OworCQkx
NEJBRTJERTI1NjlFQjE2MDA2MzY3Q0YgLyogVGFzay5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQUUyREQyNTY5RUIxNjAwNjM2N0NGIC8qIFRhc2su
bSAqLzsgfTsKKwkJMTRCQUUyRTIyNTY5RUNDOTAwNjM2N0NGIC8qIFNjaGVkdWxlci5tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQUUyRTEyNTY5RUND
OTAwNjM2N0NGIC8qIFNjaGVkdWxlci5tICovOyB9OworCQkxNEJBRTJFOTI1NjlFRDJGMDA2MzY3
Q0YgLyogV29ya2VyVGFzay5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRCQUUyRTgyNTY5RUQyRjAwNjM2N0NGIC8qIFdvcmtlclRhc2subSAqLzsgfTsK
KwkJMTRCQUUyRUUyNTY5RUQ1NTAwNjM2N0NGIC8qIEhhbmRsZXJUYXNrLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJBRTJFRDI1NjlFRDU1MDA2MzY3
Q0YgLyogSGFuZGxlclRhc2subSAqLzsgfTsKKwkJMTRCQUUyRjMyNTY5RUQ3QjAwNjM2N0NGIC8q
IElkbGVUYXNrLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNEJBRTJGMjI1NjlFRDdCMDA2MzY3Q0YgLyogSWRsZVRhc2subSAqLzsgfTsKKwkJMTRCQUUy
RjgyNTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQUUyRjcyNTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5t
ICovOyB9OworCQkxNEJBRTJGRDI1NkExRDU4MDA2MzY3Q0YgLyogbWFpbi5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQUUyRkMyNTZBMUQ1ODAwNjM2
N0NGIC8qIG1haW4ubSAqLzsgfTsKKwkJMTRCQUUzMDAyNTZBMUQ2NzAwNjM2N0NGIC8qIHJpY2hh
cmRzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJB
RTJGRjI1NkExRDY3MDA2MzY3Q0YgLyogcmljaGFyZHMubSAqLzsgfTsKKy8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMTQxNUFEMjAyNDk5QkM1QzAwNUJCMkU0IC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsK
KwkJCWRzdFBhdGggPSAiIjsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsKKwkJCWZpbGVzID0g
KAorCQkJCTE0MEFBQzM3MjQ5OUJEN0EwMDAxRjExRSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5Rmls
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxNDBBQUMzNjI0OTlCRDZDMDAwMUYx
MUUgLyogcmljaGFyZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSByaWNoYXJkcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQxNUFEMjIyNDk5
QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5T2JqQyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gUmljaGFyZHNNb3N0bHlPYmpDOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNEJBRTJEODI1NjlFOUM1MDA2MzY3Q0YgLyog
RGV2aWNlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0QkFFMkQ5MjU2OUU5QzUwMDYzNjdDRiAvKiBEZXZpY2VUYXNrLm0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMub2JqYzsgcGF0aCA9IERldmljZVRhc2subTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTRCQUUyREMyNTY5RUIxNjAwNjM2N0NGIC8qIFRhc2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJERDI1NjlFQjE2MDA2
MzY3Q0YgLyogVGFzay5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBUYXNrLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0QkFFMkUwMjU2OUVDQzkwMDYzNjdDRiAvKiBTY2hlZHVsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0QkFFMkUxMjU2OUVDQzkwMDYzNjdDRiAvKiBTY2hlZHVsZXIubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRo
ID0gU2NoZWR1bGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkU3MjU2
OUVEMkYwMDYzNjdDRiAvKiBXb3JrZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclRhc2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRTgyNTY5RUQyRjAwNjM2N0NG
IC8qIFdvcmtlclRhc2subSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV29ya2VyVGFzay5tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJFQzI1NjlFRDU1MDA2MzY3Q0YgLyogSGFuZGxl
clRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRCQUUyRUQyNTY5RUQ1NTAwNjM2N0NGIC8qIEhhbmRsZXJUYXNrLm0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IEhhbmRsZXJUYXNrLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE0QkFFMkYxMjU2OUVEN0IwMDYzNjdDRiAvKiBJZGxlVGFzay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJZGxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJGMjI1NjlF
RDdCMDA2MzY3Q0YgLyogSWRsZVRhc2subSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gSWRsZVRhc2subTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRjYyNTY5RURBMDAwNjM2N0NGIC8q
IFBhY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTRCQUUyRjcyNTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7
IHBhdGggPSBQYWNrZXQubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRkMy
NTZBMUQ1ODAwNjM2N0NGIC8qIG1haW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJGRjI1NkExRDY3MDA2MzY3Q0YgLyogcmlj
aGFyZHMubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gcmljaGFyZHMubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRCQUUzMDQyNTZBMjAyNzAwNjM2N0NGIC8qIERldmljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkxNDE1QUQxRjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQkxNDE1
QUQxOTI0OTlCQzVCMDA1QkIyRTQgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseU9iakMg
Ki8sCisJCQkJMTQxNUFEMjMyNDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovLAorCQkJKTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MTVBRDIzMjQ5OUJDNUMwMDVC
QjJFNCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5T2JqQyAq
LywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQkxNDE1QUQyNDI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNNb3N0bHlPYmpD
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNEJBRTMw
NDI1NkEyMDI3MDA2MzY3Q0YgLyogRGV2aWNlLmggKi8sCisJCQkJMTRCQUUyRDgyNTY5RTlDNTAw
NjM2N0NGIC8qIERldmljZVRhc2suaCAqLywKKwkJCQkxNEJBRTJEOTI1NjlFOUM1MDA2MzY3Q0Yg
LyogRGV2aWNlVGFzay5tICovLAorCQkJCTE0QkFFMkVDMjU2OUVENTUwMDYzNjdDRiAvKiBIYW5k
bGVyVGFzay5oICovLAorCQkJCTE0QkFFMkVEMjU2OUVENTUwMDYzNjdDRiAvKiBIYW5kbGVyVGFz
ay5tICovLAorCQkJCTE0QkFFMkYxMjU2OUVEN0IwMDYzNjdDRiAvKiBJZGxlVGFzay5oICovLAor
CQkJCTE0QkFFMkYyMjU2OUVEN0IwMDYzNjdDRiAvKiBJZGxlVGFzay5tICovLAorCQkJCTE0QkFF
MkZDMjU2QTFENTgwMDYzNjdDRiAvKiBtYWluLm0gKi8sCisJCQkJMTRCQUUyRjYyNTY5RURBMDAw
NjM2N0NGIC8qIFBhY2tldC5oICovLAorCQkJCTE0QkFFMkY3MjU2OUVEQTAwMDYzNjdDRiAvKiBQ
YWNrZXQubSAqLywKKwkJCQkxNDBBQUMzNjI0OTlCRDZDMDAwMUYxMUUgLyogcmljaGFyZHMuanMg
Ki8sCisJCQkJMTRCQUUyRkYyNTZBMUQ2NzAwNjM2N0NGIC8qIHJpY2hhcmRzLm0gKi8sCisJCQkJ
MTRCQUUyRTAyNTY5RUNDOTAwNjM2N0NGIC8qIFNjaGVkdWxlci5oICovLAorCQkJCTE0QkFFMkUx
MjU2OUVDQzkwMDYzNjdDRiAvKiBTY2hlZHVsZXIubSAqLywKKwkJCQkxNEJBRTJEQzI1NjlFQjE2
MDA2MzY3Q0YgLyogVGFzay5oICovLAorCQkJCTE0QkFFMkREMjU2OUVCMTYwMDYzNjdDRiAvKiBU
YXNrLm0gKi8sCisJCQkJMTRCQUUyRTcyNTY5RUQyRjAwNjM2N0NGIC8qIFdvcmtlclRhc2suaCAq
LywKKwkJCQkxNEJBRTJFODI1NjlFRDJGMDA2MzY3Q0YgLyogV29ya2VyVGFzay5tICovLAorCQkJ
KTsKKwkJCXBhdGggPSBSaWNoYXJkc01vc3RseU9iakM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hh
cmRzTW9zdGx5T2JqQyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQyOTI0OTlCQzVDMDA1QkIyRTQgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzTW9zdGx5T2JqQyIg
Ki87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyog
U291cmNlcyAqLywKKwkJCQkxNDE1QUQxRjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAq
LywKKwkJCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovLAorCQkJKTsK
KwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJ
CW5hbWUgPSBSaWNoYXJkc01vc3RseU9iakM7CisJCQlwcm9kdWN0TmFtZSA9IFJpY2hhcmRzTW9z
dGx5U3dpZnQ7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0
IC8qIFJpY2hhcmRzTW9zdGx5T2JqQyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5w
cm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTE0MTVBRDFBMjQ5OUJDNUIw
MDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJ
CQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMTIwMDsKKwkJCQlM
YXN0VXBncmFkZUNoZWNrID0gMTIwMDsKKwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkx
NDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24g
PSAxMi4wOworCQkJCQkJTGFzdFN3aWZ0TWlncmF0aW9uID0gMTIwMDsKKwkJCQkJfTsKKwkJCQl9
OworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQxRDI0OTlCQzVCMDA1
QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJk
c01vc3RseU9iakMiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsK
KwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0g
MDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNlLAorCQkJKTsKKwkJCW1h
aW5Hcm91cCA9IDE0MTVBRDE5MjQ5OUJDNUIwMDVCQjJFNDsKKwkJCXByb2R1Y3RSZWZHcm91cCA9
IDE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQ
YXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQkxNDE1
QUQyMTI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNNb3N0bHlPYmpDICovLAorCQkJKTsKKwkJ
fTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291cmNl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0QkFFMkRBMjU2OUU5QzUwMDYz
NjdDRiAvKiBEZXZpY2VUYXNrLm0gaW4gU291cmNlcyAqLywKKwkJCQkxNEJBRTJFRTI1NjlFRDU1
MDA2MzY3Q0YgLyogSGFuZGxlclRhc2subSBpbiBTb3VyY2VzICovLAorCQkJCTE0QkFFMkYzMjU2
OUVEN0IwMDYzNjdDRiAvKiBJZGxlVGFzay5tIGluIFNvdXJjZXMgKi8sCisJCQkJMTRCQUUyRkQy
NTZBMUQ1ODAwNjM2N0NGIC8qIG1haW4ubSBpbiBTb3VyY2VzICovLAorCQkJCTE0QkFFMkY4MjU2
OUVEQTAwMDYzNjdDRiAvKiBQYWNrZXQubSBpbiBTb3VyY2VzICovLAorCQkJCTE0QkFFMzAwMjU2
QTFENjcwMDYzNjdDRiAvKiByaWNoYXJkcy5tIGluIFNvdXJjZXMgKi8sCisJCQkJMTRCQUUyRTIy
NTY5RUNDOTAwNjM2N0NGIC8qIFNjaGVkdWxlci5tIGluIFNvdXJjZXMgKi8sCisJCQkJMTRCQUUy
REUyNTY5RUIxNjAwNjM2N0NGIC8qIFRhc2subSBpbiBTb3VyY2VzICovLAorCQkJCTE0QkFFMkU5
MjU2OUVEMkYwMDYzNjdDRiAvKiBXb3JrZXJUYXNrLm0gaW4gU291cmNlcyAqLywKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1
cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQxNUFEMjcyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVS
X05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJT
SU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0g
ImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdf
RU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOwor
CQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19D
QVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NP
TlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNf
SU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VT
QUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9F
TlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04g
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09C
SkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVS
QUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlF
U19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFE
RVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQ
SUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZ
ID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJm
OworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNU
QUJJTElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJ
CUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVT
OworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1Jf
REVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJ
CQkJKTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlH
Q0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRF
Q0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1Mg
PSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJ
CQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IElOQ0xVREVfU09V
UkNFOworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlF
UzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0FDVElWRV9DT01QSUxBVElPTl9D
T05ESVRJT05TID0gREVCVUc7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9u
ZSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDE1QUQyODI0OTlCQzVDMDA1
QkIyRTQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05V
TUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9M
QU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJs
aWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJM
RV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VN
RU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
SU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04g
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9P
QkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVE
RV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9B
TkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5H
VUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5S
RUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01B
VENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1B
VElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJUSU9O
UyA9IE5POworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19D
X0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0ND
X1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNM
QVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0g
WUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJ
CUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBOTzsKKwkJCQlNVExf
RkFTVF9NQVRIID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQ09NUElM
QVRJT05fTU9ERSA9IHdob2xlbW9kdWxlOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9
ICItTyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0MTVBRDJBMjQ5OUJD
NUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsK
KwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJTERfUlVOUEFUSF9TRUFSQ0hf
UEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiQGV4ZWN1dGFibGVfcGF0aC8u
Li9GcmFtZXdvcmtzIiwKKwkJCQkJIkBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzIiwKKwkJCQkp
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfT1BUSU1J
WkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07
CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAvKiBS
ZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNPREVfU0lH
Tl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICgKKwkJ
CQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJAZXhlY3V0YWJsZV9wYXRoLy4uL0ZyYW1ld29ya3Mi
LAorCQkJCQkiQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MiLAorCQkJCSk7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJ
CTE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5T2JqQyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDE1QUQyNzI0
OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCisJCQkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0
IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQx
NUFEMjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJSaWNoYXJkc01vc3RseU9iakMiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQxNUFEMkEy
NDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAorCQkJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJF
NCAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBF
bmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gMTQx
NUFEMUEyNDk5QkM1QjAwNUJCMkU0IC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9SaWNoYXJkc01vc3RseU9iakMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmlj
aGFyZHNNb3N0bHlTd2lmdC54Y3NjaGVtZSBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3Vy
cmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDLnhjb2RlcHJvai94
Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODc4OGU1MGEzYTA2MjYyYjQxYjhhMzUyYTFlNDhlNzRmNDhkYTU5YQotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01v
c3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hl
bWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUKQEAgLTAsMCArMSw4MSBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTY2hlbWUKKyAgIExhc3RVcGdyYWRl
VmVyc2lvbiA9ICIxMjAwIgorICAgdmVyc2lvbiA9ICIxLjciPgorICAgPEJ1aWxkQWN0aW9uCisg
ICAgICBwYXJhbGxlbGl6ZUJ1aWxkYWJsZXMgPSAiWUVTIgorICAgICAgYnVpbGRJbXBsaWNpdERl
cGVuZGVuY2llcyA9ICJZRVMiPgorICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KKyAgICAgICAg
IDxCdWlsZEFjdGlvbkVudHJ5CisgICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgor
ICAgICAgICAgICAgYnVpbGRGb3JSdW5uaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9y
UHJvZmlsaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllFUyIK
KyAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+CisgICAgICAgICAgICA8QnVp
bGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInBy
aW1hcnkiCisgICAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5
OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNN
b3N0bHlPYmpDIgorICAgICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNoYXJkc01vc3Rs
eU9iakMiCisgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpS
aWNoYXJkc01vc3RseU9iakMueGNvZGVwcm9qIj4KKyAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVm
ZXJlbmNlPgorICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5PgorICAgICAgPC9CdWlsZEFjdGlv
bkVudHJpZXM+CisgICA8L0J1aWxkQWN0aW9uPgorICAgPFRlc3RBY3Rpb24KKyAgICAgIGJ1aWxk
Q29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVy
ID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0
ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVy
LkxMREIiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+CisgICAg
ICA8VGVzdGFibGVzPgorICAgICAgPC9UZXN0YWJsZXM+CisgICA8L1Rlc3RBY3Rpb24+CisgICA8
TGF1bmNoQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBz
ZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVi
dWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRl
YnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgbGF1bmNoU3R5bGUgPSAiMCIK
KyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisgICAgICBpZ25vcmVzUGVy
c2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmlu
ZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCisgICAg
ICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAgPEJ1aWxkYWJsZVByb2R1
Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAgICAg
ICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9
ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDE1QUQyMTI0
OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRzTW9z
dGx5T2JqQyIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlPYmpD
IgorICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6UmljaGFyZHNN
b3N0bHlPYmpDLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAg
ICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8
UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAg
ICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElk
ZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAg
ICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJv
ZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAg
ICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVy
ID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIx
MjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNN
b3N0bHlPYmpDIgorICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNoYXJkc01vc3RseU9i
akMiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJk
c01vc3RseU9iakMueGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgor
ICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICA8L1Byb2ZpbGVBY3Rpb24+Cisg
ICA8QW5hbHl6ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIj4KKyAg
IDwvQW5hbHl6ZUFjdGlvbj4KKyAgIDxBcmNoaXZlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3Vy
YXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHJldmVhbEFyY2hpdmVJbk9yZ2FuaXplciA9ICJZRVMi
PgorICAgPC9BcmNoaXZlQWN0aW9uPgorICAgPEluc3RhbGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29u
ZmlndXJhdGlvbiA9ICJSZWxlYXNlIj4KKyAgIDwvSW5zdGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRz
TW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlLmggYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9EZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzM0ZDBmNGQ2ZGVmMzNjZTQwOGJlYjQ5ODdiMTUwZWY0
MzRjZmIzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlLmgKQEAg
LTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisKK3R5cGVkZWYgTlNfRU5VTSh1bnNpZ25lZCwgRGV2aWNlKSB7CisgICAgQSwKKyAgICBC
Cit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1Jp
Y2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlVGFzay5oIGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJk
c01vc3RseU9iakMvRGV2aWNlVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTk2NGIyMjY1YmEyZGUzMzhh
NzUwMTJiMWIyYzkxYTU4MzExYzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9EZXZpY2VUYXNrLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiRGV2
aWNlLmgiCisjaW1wb3J0ICJQYWNrZXQuaCIKKyNpbXBvcnQgIlRhc2suaCIKKworI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8q
KgorICogQSB0YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxmIGFmdGVyIGVhY2ggdGltZSBpdCBoYXMg
YmVlbiBydW4gdG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJvbSBhbiBleHRlcm5h
bCBkZXZpY2UuCisgKi8KK0BpbnRlcmZhY2UgRGV2aWNlVGFzayA6IFRhc2sKKworQHByb3BlcnR5
IChub25hdG9taWMsIGFzc2lnbiwgcmVhZG9ubHkpIERldmljZSBkZXZpY2U7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgc3Ryb25nLCBudWxsYWJsZSkgUGFja2V0ICpwZW5kaW5nUGFja2V0OworCisr
IChpbnN0YW5jZXR5cGUpY3JlYXRlV2l0aFNjaGVkdWxlcjooU2NoZWR1bGVyICopc2NoZWR1bGVy
IGRldmljZTooRGV2aWNlKWRldmljZSBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHk7CistIChu
dWxsYWJsZSBUYXNrICopcnVuOihudWxsYWJsZSBQYWNrZXQgKilwYWNrZXQ7CisKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9EZXZp
Y2VUYXNrLm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNN
b3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9EZXZpY2VUYXNrLm0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Rk
OTU1YTE2MTJjM2Q4ZTUxOTIwMTg0Nzc4ODVlYjE5MWNhYmMzOAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMv
UmljaGFyZHNNb3N0bHlPYmpDL0RldmljZVRhc2subQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworI2ltcG9ydCAiRGV2aWNlVGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gRGV2aWNlVGFzawor
CisrIChpbnN0YW5jZXR5cGUpY3JlYXRlV2l0aFNjaGVkdWxlcjooU2NoZWR1bGVyICopc2NoZWR1
bGVyIGRldmljZTooRGV2aWNlKSBkZXZpY2UgcHJpb3JpdHk6KFByaW9yaXR5KXByaW9yaXR5Cit7
CisgICAgRGV2aWNlVGFzayAqdGFzayA9IFtzdXBlciBjcmVhdGVXaXRoU2NoZWR1bGVyOnNjaGVk
dWxlciBwcmlvcml0eTpwcmlvcml0eSBxdWV1ZTpuaWxdOworICAgIHRhc2stPl9kZXZpY2UgPSBk
ZXZpY2U7CisgICAgW3Rhc2suc2NoZWR1bGVyIGFkZFRhc2s6dGFza107CisgICAgcmV0dXJuIHRh
c2s7Cit9CisKKworLSAobnVsbGFibGUgVGFzayAqKXJ1bjoobnVsbGFibGUgUGFja2V0ICopcGFj
a2V0Cit7CisgICAgaWYgKCFwYWNrZXQpIHsKKyAgICAgICAgaWYgKCFzZWxmLnBlbmRpbmdQYWNr
ZXQpCisgICAgICAgICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIHdhaXRDdXJyZW50XTsKKyAg
ICAgICAgUGFja2V0ICpwYWNrZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQ7CisgICAgICAgIF9wZW5k
aW5nUGFja2V0ID0gbmlsOworICAgICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIGhhbmRsZTpw
YWNrZXRdOworICAgIH0KKworICAgIF9wZW5kaW5nUGFja2V0ID0gcGFja2V0OworICAgIHJldHVy
biBbc2VsZi5zY2hlZHVsZXIgaG9sZEN1cnJlbnRdOworfQorCisKK0BlbmQKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMv
UmljaGFyZHNNb3N0bHlPYmpDL0hhbmRsZXJUYXNrLmggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9IYW5k
bGVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMGQ5MjY1N2ZiYjY3OGIxMTA4YzhmYzk4MjkzYjZhNmIx
ZmEzZDYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJl
bnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9IYW5kbGVyVGFzay5o
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgIkRldmljZVRhc2suaCIKKyNp
bXBvcnQgIlBhY2tldC5oIgorI2ltcG9ydCAiVGFzay5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+
CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8qKgorICogQSB0YXNrIHRoYXQgbWFuaXB1
bGF0ZXMgd29yayBwYWNrZXRzIGFuZCB0aGVuIHN1c3BlbmRzIGl0c2VsZi4KKyAqLworQGludGVy
ZmFjZSBIYW5kbGVyVGFzayA6IFRhc2sgPEpTRXhwb3J0PgorCitAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduLCByZWFkb25seSkgRGV2aWNlIGRldmljZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkgUGFja2V0ICp3b3JrUXVldWU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nLCByZWFkb25seSwgbnVsbGFibGUpIFBhY2tldCAqZGV2aWNl
UXVldWU7CisKKysgKGluc3RhbmNldHlwZSljcmVhdGVXaXRoU2NoZWR1bGVyOihTY2hlZHVsZXIg
KilzY2hlZHVsZXIgZGV2aWNlOihEZXZpY2UpZGV2aWNlIHByaW9yaXR5OihQcmlvcml0eSlwcmlv
cml0eSBxdWV1ZTooUGFja2V0ICopcXVldWU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmlj
aGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9IYW5kbGVyVGFzay5tIGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJk
c01vc3RseU9iakMvSGFuZGxlclRhc2subQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWY0NGE3YTE2OGIyMDgzZWNl
YzUxMmM0NTVlOGU5NGZiM2RhMWIwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9i
akMvSGFuZGxlclRhc2subQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJI
YW5kbGVyVGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gSGFuZGxlclRhc2sKKyAgICAKKysgKGlu
c3RhbmNldHlwZSljcmVhdGVXaXRoU2NoZWR1bGVyOihTY2hlZHVsZXIgKilzY2hlZHVsZXIgZGV2
aWNlOihEZXZpY2UpZGV2aWNlIHByaW9yaXR5OihQcmlvcml0eSlwcmlvcml0eSBxdWV1ZTooUGFj
a2V0ICopcXVldWUKK3sKKyAgICBIYW5kbGVyVGFzayAqdGFzayA9IFtzdXBlciBjcmVhdGVXaXRo
U2NoZWR1bGVyOnNjaGVkdWxlciBwcmlvcml0eTpwcmlvcml0eSBxdWV1ZTpxdWV1ZV07CisgICAg
dGFzay0+X2RldmljZSA9IGRldmljZTsKKyAgICBbc2NoZWR1bGVyIGFkZFRhc2s6dGFza107Cisg
ICAgcmV0dXJuIHRhc2s7Cit9CisKKy0gKG51bGxhYmxlIFRhc2sgKilydW46KG51bGxhYmxlIFBh
Y2tldCAqKXBhY2tldAoreworICAgIGlmIChwYWNrZXQpIHsKKyAgICAgICAgaWYgKFtwYWNrZXQg
aXNLaW5kT2ZDbGFzczpbV29ya1BhY2tldCBjbGFzc11dKQorICAgICAgICAgICAgX3dvcmtRdWV1
ZSA9IFtwYWNrZXQgYWRkVG9RdWV1ZTpzZWxmLndvcmtRdWV1ZV07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIF9kZXZpY2VRdWV1ZSA9IFtwYWNrZXQgYWRkVG9RdWV1ZTpzZWxmLmRldmljZVF1
ZXVlXTsKKyAgICB9CisgICAgaWYgKHNlbGYud29ya1F1ZXVlKSB7CisgICAgICAgIFdvcmtQYWNr
ZXQgKndvcmtQYWNrZXQgPSAoV29ya1BhY2tldCAqKXNlbGYud29ya1F1ZXVlOworICAgICAgICBp
ZiAod29ya1BhY2tldC5wcm9jZXNzZWQgPCBXb3JrUGFja2V0LnNpemUpIHsKKyAgICAgICAgICAg
IGlmIChzZWxmLmRldmljZVF1ZXVlKSB7CisgICAgICAgICAgICAgICAgRGV2aWNlUGFja2V0ICpk
ZXZpY2VQYWNrZXQgPSAoRGV2aWNlUGFja2V0ICopc2VsZi5kZXZpY2VRdWV1ZTsKKyAgICAgICAg
ICAgICAgICBfZGV2aWNlUXVldWUgPSBkZXZpY2VQYWNrZXQubGluazsKKyAgICAgICAgICAgICAg
ICBkZXZpY2VQYWNrZXQubGV0dGVySW5kZXggPSBbd29ya1BhY2tldC5kYXRhW3dvcmtQYWNrZXQu
cHJvY2Vzc2VkXSBpbnRWYWx1ZV07CisgICAgICAgICAgICAgICAgKyt3b3JrUGFja2V0LnByb2Nl
c3NlZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIHF1ZXVlOmRldmlj
ZVBhY2tldF07CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBf
d29ya1F1ZXVlID0gd29ya1BhY2tldC5saW5rOworICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnNj
aGVkdWxlciBxdWV1ZTp3b3JrUGFja2V0XTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
W3NlbGYuc2NoZWR1bGVyIHdhaXRDdXJyZW50XTsKK30KKworCitAZW5kCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1Jp
Y2hhcmRzTW9zdGx5T2JqQy9JZGxlVGFzay5oIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9D
dXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvSWRsZVRhc2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOTNiZjllYjFkYTZiMjFkMTg3ZWMwZDAwMjY4NDdkZmFmYWU0MjlmCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1Jp
Y2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvSWRsZVRhc2suaApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJUYXNrLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisvKioKKyAqIEFu
IGlkbGUgdGFzayBkb2Vzbid0IGRvIGFueSB3b3JrIGl0c2VsZiBidXQgY3ljbGVzIGNvbnRyb2wg
YmV0d2VlbiB0aGUgdHdvIGRldmljZSB0YXNrcy4KKyAqLworQGludGVyZmFjZSBJZGxlVGFzayA6
IFRhc2sKKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAq
KXNjaGVkdWxlciBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHk7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1
cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9JZGxlVGFzay5t
IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9SaWNoYXJkc01vc3RseU9iakMvSWRsZVRhc2subQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTMyOTdiMDlkZTA1
NGZkYjE3ZjBhYTE4ZmRlOTVhZDYxYzI5ZjkwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01v
c3RseU9iakMvSWRsZVRhc2subQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0
ICJJZGxlVGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gSWRsZVRhc2sgeworICAgIHVuc2lnbmVk
IF9oYXNoOworICAgIHVuc2lnbmVkIF9jb3VudDsKK30KKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0
ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eTooUHJpb3JpdHkp
cHJpb3JpdHkKK3sKKyAgICBJZGxlVGFzayAqdGFzayA9IFtzdXBlciBjcmVhdGVXaXRoU2NoZWR1
bGVyOnNjaGVkdWxlciBwcmlvcml0eTpwcmlvcml0eSBxdWV1ZTpuaWxdOworICAgIHRhc2stPl9o
YXNoID0gMTsKKyAgICB0YXNrLT5fY291bnQgPSAxMDAwOworICAgIFt0YXNrIHJlc3VtZV07Cisg
ICAgW3NjaGVkdWxlciBhZGRUYXNrOnRhc2tdOworICAgIHJldHVybiB0YXNrOworfQorCistIChu
dWxsYWJsZSBUYXNrICopcnVuOihQYWNrZXQgKilwYWNrZXQKK3sKKyAgICBpZiAoIS0tX2NvdW50
KQorICAgICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIGhvbGRDdXJyZW50XTsKKworICAgIGlm
ICghKF9oYXNoICYgMSkpIHsKKyAgICAgICAgX2hhc2ggPj49IDE7CisgICAgICAgIHJldHVybiBb
c2VsZi5zY2hlZHVsZXIgcmVsZWFzZURldmljZTpBXTsKKyAgICB9CisKKyAgICBfaGFzaCA+Pj0g
MTsKKyAgICBfaGFzaCBePSAweEQwMDg7CisgICAgcmV0dXJuIFtzZWxmLnNjaGVkdWxlciByZWxl
YXNlRGV2aWNlOkJdOworfQorCisKK0BlbmQKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpD
L1BhY2tldC5oIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRz
TW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvUGFja2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcwYmU2
NzNkZTliZmUxNTllZGM3NjBlNjVlN2MxNDk5ZjEzNWEyNwotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmlj
aGFyZHNNb3N0bHlPYmpDL1BhY2tldC5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNp
bXBvcnQgIkRldmljZS5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFu
aXB1bGF0ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAorICogb2YgdGhlIHBheWxv
YWQgZGF0YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhl
ciBpcyB0aGUKKyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0
aGUgdGFza3MuCisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlu
a2VkIGxpc3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBkYXRhIGFuZCB3b3JrbGlz
dHMuCisgKi8KK0Bwcm90b2NvbCBQYWNrZXRFeHBvcnRzIDxKU0V4cG9ydD4KKworQHByb3BlcnR5
IChub25hdG9taWMsIGFzc2lnbikgRGV2aWNlIGRldmljZTsKKworQGVuZAorCitAaW50ZXJmYWNl
IFBhY2tldCA6IE5TT2JqZWN0IDxQYWNrZXRFeHBvcnRzPgorCitAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduKSBEZXZpY2UgZGV2aWNlOworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywg
bnVsbGFibGUpIFBhY2tldCAqbGluazsKKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZTooRGV2aWNl
KWRldmljZSB3aXRoTGluazoobnVsbGFibGUgUGFja2V0ICopbGluazsKKy0gKG5vbm51bGwgUGFj
a2V0ICopYWRkVG9RdWV1ZToobnVsbGFibGUgUGFja2V0ICopcXVldWU7CisKK0BlbmQKKworQGlu
dGVyZmFjZSBEZXZpY2VQYWNrZXQgOiBQYWNrZXQKKworQHByb3BlcnR5IChub25hdG9taWMsIGFz
c2lnbikgaW50IGxldHRlckluZGV4OworCisrIChpbnN0YW5jZXR5cGUpY3JlYXRlOihEZXZpY2Up
ZGV2aWNlIHdpdGhMaW5rOihudWxsYWJsZSBQYWNrZXQgKilsaW5rOworCitAZW5kCisKK0Bwcm90
b2NvbCBXb3JrUGFja2V0RXhwb3J0cyA8UGFja2V0RXhwb3J0cywgSlNFeHBvcnQ+CisKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBwcm9jZXNzZWQ7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgc3Ryb25nLCByZWFkb25seSkgTlNBcnJheSAqZGF0YTsKKworQGVuZAorCitAaW50ZXJm
YWNlIFdvcmtQYWNrZXQgOiBQYWNrZXQgPFdvcmtQYWNrZXRFeHBvcnRzPgorCitAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBpbnQgcHJvY2Vzc2VkOworQHByb3BlcnR5IChub25hdG9taWMs
IHN0cm9uZywgcmVhZG9ubHkpIE5TQXJyYXkgKmRhdGE7CisKKysgKGluc3RhbmNldHlwZSljcmVh
dGVXaXRoTGluazoobnVsbGFibGUgUGFja2V0ICopbGluazsKKysgKHVuc2lnbmVkKXNpemU7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5
T2JqQy9QYWNrZXQubSBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNo
YXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1BhY2tldC5tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEx
YjQyZWUzN2ZkN2U2NTUzODk5N2NlMGQyZjY5ZTI3NzQ4NTQwMmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpD
L1JpY2hhcmRzTW9zdGx5T2JqQy9QYWNrZXQubQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisjaW1wb3J0ICJQYWNrZXQuaCIKKworQGltcGxlbWVudGF0aW9uIFBhY2tldAorCisrIChpbnN0
YW5jZXR5cGUpY3JlYXRlOihEZXZpY2UpZGV2aWNlIHdpdGhMaW5rOihQYWNrZXQgKilsaW5rCit7
CisgICAgUGFja2V0ICpwYWNrZXQgPSBbW3NlbGYgYWxsb2NdIGluaXRdOworICAgIHBhY2tldC5k
ZXZpY2UgPSBkZXZpY2U7CisgICAgcGFja2V0LmxpbmsgPSBsaW5rOworICAgIHJldHVybiBwYWNr
ZXQ7Cit9CisKKy0gKFBhY2tldCAqKWFkZFRvUXVldWU6KFBhY2tldCAqKXF1ZXVlCit7CisgICAg
c2VsZi5saW5rID0gbmlsOworICAgIGlmICghcXVldWUpCisgICAgICAgIHJldHVybiBzZWxmOwor
ICAgIFBhY2tldCogbmV4dCA9IHF1ZXVlOworICAgIHdoaWxlIChuZXh0LmxpbmspCisgICAgICAg
IG5leHQgPSBuZXh0Lmxpbms7CisgICAgbmV4dC5saW5rID0gc2VsZjsKKyAgICByZXR1cm4gcXVl
dWU7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERldmljZVBhY2tldAorCisrIChpbnN0
YW5jZXR5cGUpY3JlYXRlOihEZXZpY2UpZGV2aWNlIHdpdGhMaW5rOihQYWNrZXQgKilsaW5rCit7
CisgICAgRGV2aWNlUGFja2V0ICpwYWNrZXQgPSBbc3VwZXIgY3JlYXRlOmRldmljZSB3aXRoTGlu
azpsaW5rXTsKKyAgICBwYWNrZXQubGV0dGVySW5kZXggPSAwOworICAgIHJldHVybiBwYWNrZXQ7
Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdvcmtQYWNrZXQKKworKyAoaW5zdGFuY2V0
eXBlKWNyZWF0ZVdpdGhMaW5rOihQYWNrZXQgKilsaW5rCit7CisgICAgV29ya1BhY2tldCAqcGFj
a2V0ID0gW3N1cGVyIGNyZWF0ZTpBIHdpdGhMaW5rOmxpbmtdOworICAgIHBhY2tldC5wcm9jZXNz
ZWQgPSAwOworICAgIHBhY2tldC0+X2RhdGEgPSBAW0AwLCBAMCwgQDAsIEAwXTsKKyAgICByZXR1
cm4gcGFja2V0OworfQorCisrICh1bnNpZ25lZClzaXplCit7CisgICAgcmV0dXJuIDQ7Cit9CisK
K0BlbmQKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9S
aWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1NjaGVkdWxlci5oIGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJk
c01vc3RseU9iakMvU2NoZWR1bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjgzMjAwZmRmNzA4MjIwMjJkNTQ2
NDg1OWJlODQ1NzAxYjZjN2Y3YwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpD
L1NjaGVkdWxlci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgIlBhY2tl
dC5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisK
K0BjbGFzcyBUYXNrOworCitAcHJvdG9jb2wgU2NoZWR1bGVyRXhwb3J0cyA8SlNFeHBvcnQ+CisK
Ky0gKG51bGxhYmxlIFRhc2sgKil3YWl0Q3VycmVudDsKKy0gKG51bGxhYmxlIFRhc2sgKiloYW5k
bGU6KFBhY2tldCAqKXBhY2tldDsKKworQGVuZAorCisvKioKKyogQSBzY2hlZHVsZXIgY2FuIGJl
IHVzZWQgdG8gc2NoZWR1bGUgYSBzZXQgb2YgdGFza3MgYmFzZWQgb24gdGhlaXIgcmVsYXRpdmUK
KyogcHJpb3JpdGllcy4gIFNjaGVkdWxpbmcgaXMgZG9uZSBieSBtYWludGFpbmluZyBhIGxpc3Qg
b2YgdGFzayBjb250cm9sIGJsb2NrcworKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRhdGEg
cXVldWUgdGhleSBhcmUgcHJvY2Vzc2luZy4KKyovCitAaW50ZXJmYWNlIFNjaGVkdWxlciA6IE5T
T2JqZWN0IDxTY2hlZHVsZXJFeHBvcnRzPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
LCByZWFkb25seSkgdW5zaWduZWQgcXVldWVDb3VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBh
c3NpZ24sIHJlYWRvbmx5KSB1bnNpZ25lZCBob2xkQ291bnQ7CitAcHJvcGVydHkgKG5vbmF0b21p
Yywgc3Ryb25nLCByZWFkb25seSwgbnVsbGFibGUpIFRhc2sgKmN1cnJlbnRUYXNrOworQHByb3Bl
cnR5IChub25hdG9taWMsIHN0cm9uZywgcmVhZG9ubHksIG51bGxhYmxlKSBUYXNrICpsaXN0Owor
CisvKioKKyogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBieSB0aGlzIHNjaGVkdWxlci4KKyov
CistICh2b2lkKXNjaGVkdWxlOworCisvKioKKyogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayB0byB0
aGlzIHNjaGVkdWxlci4KKyovCistICh2b2lkKWFkZFRhc2s6KFRhc2sgKil0YXNrOworCisvKioK
KyogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJuIHRo
ZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyovCistIChudWxsYWJsZSBUYXNrICopcmVsZWFzZURldmlj
ZTooRGV2aWNlKWRldmljZTsKKworLyoqCisqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5n
IHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyogdG8gcnVuLiAg
VGhlIGJsb2NrZWQgdGFzayB3aWxsIG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0IGlzIGV4
cGxpY2l0bHkKKyogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisq
LworLSAobnVsbGFibGUgVGFzayAqKWhvbGRDdXJyZW50OworCisvKioKKyogU3VzcGVuZCB0aGUg
Y3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9s
IGJsb2NrCisqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQg
dGFzayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisqLworLSAobnVsbGFibGUgVGFzayAqKXdh
aXRDdXJyZW50OworCisvKioKKyogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQg
b2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyogYXNzb2NpYXRlZCB3aXRoIHRoZSBw
YWNrZXQgYW5kIG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQgaXMgY3VycmVudGx5CisqIHN1
c3BlbmRlZC4KKyovCistIChudWxsYWJsZSBUYXNrICopcXVldWU6KFBhY2tldCAqKXBhY2tldDsK
KworLSAobnVsbGFibGUgVGFzayAqKWhhbmRsZTooUGFja2V0ICopcGFja2V0OworCitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvU2No
ZWR1bGVyLm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNN
b3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9TY2hlZHVsZXIubQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDZl
OTUxZGI0OTdjYWI4MDRlNjgyMjA2ZDU5YjJhY2NmNjNkMWYwCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9S
aWNoYXJkc01vc3RseU9iakMvU2NoZWR1bGVyLm0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKyNpbXBvcnQgIlNjaGVkdWxlci5oIgorCisjaW1wb3J0ICJEZXZpY2VUYXNrLmgiCisjaW1w
b3J0ICJIYW5kbGVyVGFzay5oIgorI2ltcG9ydCAiVGFzay5oIgorI2ltcG9ydCAiV29ya2VyVGFz
ay5oIgorCitAaW1wbGVtZW50YXRpb24gU2NoZWR1bGVyCisgICAgCistICh2b2lkKXNjaGVkdWxl
Cit7CisgICAgX2N1cnJlbnRUYXNrID0gc2VsZi5saXN0OworICAgIFRhc2sgKnRhc2s7CisgICAg
d2hpbGUgKCh0YXNrID0gc2VsZi5jdXJyZW50VGFzaykpIHsKKyAgICAgICAgUGFja2V0ICpwYWNr
ZXQgPSBuaWw7CisgICAgICAgIHN3aXRjaCAodGFzay5zdGF0ZSkgeworICAgICAgICBjYXNlIFdh
aXRpbmdXaXRoUGFja2V0OgorICAgICAgICAgICAgcGFja2V0ID0gW3Rhc2sgdGFrZVBhY2tldF07
CisgICAgICAgIGNhc2UgUnVuOgorICAgICAgICBjYXNlIFJ1bldpdGhQYWNrZXQ6CisgICAgICAg
ICAgICBfY3VycmVudFRhc2sgPSBbdGFzayBydW46cGFja2V0XTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgX2N1cnJlbnRUYXNrID0gdGFzay5uZXh0
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisgICAgCistICh2b2lk
KWFkZFRhc2s6KFRhc2sgKil0YXNrCit7CisgICAgdGFzay5uZXh0ID0gc2VsZi5saXN0OworICAg
IF9saXN0ID0gdGFzazsKK30KKworLSAobnVsbGFibGUgVGFzayAqKXJlbGVhc2VEZXZpY2U6KERl
dmljZSlkZXZpY2UKK3sKKyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2ZpbmQ6XmJvb2woVGFzayAq
dGFzaykgeworICAgICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbRGV2aWNlVGFzayBj
bGFzc11dICYmICgoRGV2aWNlVGFzayopdGFzaykuZGV2aWNlID09IGRldmljZTsKKyAgICB9XTsK
KyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybiBuaWw7CisgICAgW3Rhc2sgcmVsZWFzZV9d
OworICAgIGlmICh0YXNrLnByaW9yaXR5ID4gc2VsZi5jdXJyZW50VGFzay5wcmlvcml0eSkKKyAg
ICAgICAgcmV0dXJuIHRhc2s7CisgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2s7Cit9CisKKy0g
KG51bGxhYmxlIFRhc2sgKilob2xkQ3VycmVudAoreworICAgICsrX2hvbGRDb3VudDsKKyAgICBb
c2VsZi5jdXJyZW50VGFzayBob2xkXTsKKyAgICByZXR1cm4gW3NlbGYuY3VycmVudFRhc2sgbmV4
dF07Cit9CisKKy0gKG51bGxhYmxlIFRhc2sgKil3YWl0Q3VycmVudAoreworICAgIFtzZWxmLmN1
cnJlbnRUYXNrIHdhaXRdOworICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrOworfQorCistIChu
dWxsYWJsZSBUYXNrICopcXVldWU6KFBhY2tldCAqKXBhY2tldAoreworICAgIGJvb2wgKF5wcmVk
aWNhdGUpKFRhc2sgKik7CisgICAgaWYgKFtwYWNrZXQgaXNLaW5kT2ZDbGFzczpbRGV2aWNlUGFj
a2V0IGNsYXNzXV0pIHsKKyAgICAgICAgcHJlZGljYXRlID0gXmJvb2woVGFzayAqdGFzaykgewor
ICAgICAgICAgICAgcmV0dXJuIFt0YXNrIGlzS2luZE9mQ2xhc3M6W0RldmljZVRhc2sgY2xhc3Nd
XSAmJiAoKERldmljZVRhc2sgKil0YXNrKS5kZXZpY2UgPT0gcGFja2V0LmRldmljZTsKKyAgICAg
ICAgfTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcmVkaWNhdGUgPSBeYm9vbChUYXNrICp0YXNr
KSB7CisgICAgICAgICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbV29ya2VyVGFzayBj
bGFzc11dOworICAgICAgICB9OworICAgIH0KKyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2ZpbmQ6
cHJlZGljYXRlXTsKKyAgICByZXR1cm4gW3NlbGYgX3F1ZXVlSW1wbDp0YXNrIHBhY2tldDpwYWNr
ZXRdOworfQorCistIChudWxsYWJsZSBUYXNrICopaGFuZGxlOihQYWNrZXQgKilwYWNrZXQKK3sK
KyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2ZpbmQ6XmJvb2woVGFzayAqdGFzaykgeworICAgICAg
ICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbSGFuZGxlclRhc2sgY2xhc3NdXSAmJiAoKEhh
bmRsZXJUYXNrKil0YXNrKS5kZXZpY2UgPT0gcGFja2V0LmRldmljZTsKKyAgICB9XTsKKyAgICBy
ZXR1cm4gW3NlbGYgX3F1ZXVlSW1wbDp0YXNrIHBhY2tldDpwYWNrZXRdOworfQorCisKKy0gKG51
bGxhYmxlIFRhc2sgKilfcXVldWVJbXBsOihudWxsYWJsZSBUYXNrKil0YXNrIHBhY2tldDooUGFj
a2V0ICopcGFja2V0Cit7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm4gbmlsOworICAg
ICsrX3F1ZXVlQ291bnQ7CisgICAgcGFja2V0LmxpbmsgPSBuaWw7CisgICAgcmV0dXJuIFt0YXNr
IGNoZWNrUHJpb3JpdHlBZGQ6c2VsZi5jdXJyZW50VGFzayBwYWNrZXQ6cGFja2V0XTsKK30KKwor
LSAobnVsbGFibGUgVGFzayAqKV9maW5kOihib29sICheKShUYXNrICopKXByZWRpY2F0ZQorewor
ICAgIFRhc2sgKnRhc2sgPSBzZWxmLmxpc3Q7CisgICAgd2hpbGUgKHRhc2spIHsKKyAgICAgICAg
aWYgKHByZWRpY2F0ZSh0YXNrKSkKKyAgICAgICAgICAgIHJldHVybiB0YXNrOworICAgICAgICB0
YXNrID0gdGFzay5uZXh0OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCitAZW5kCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0
bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9UYXNrLmggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9UYXNr
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGY5MWU0MzVkOWQwNDI1NDBkODc5NzJlYzRkMjhhZTY5M2ZhMDA5Nwot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9S
aWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1Rhc2suaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJQYWNrZXQuaCIKKyNpbXBvcnQgIlNjaGVkdWxlci5o
IgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KKwordHlwZWRlZiBOU19FTlVNKHVuc2lnbmVkLCBQcmlvcml0eSkgeworICAgIElk
bGUgPSAwLAorICAgIFdvcmtlciA9IDEwMDAsCisgICAgSGFuZGxlckEgPSAyMDAwLAorICAgIEhh
bmRsZXJCID0gMzAwMCwKKyAgICBEZXZpY2VBID0gNDAwMCwKKyAgICBEZXZpY2VCID0gNTAwMCwK
K307CisKK3R5cGVkZWYgTlNfRU5VTSh1bnNpZ25lZCwgU3RhdGUpIHsKKyAgICBSdW4gPSAwLAor
ICAgIEhhc1BhY2tldCA9IDEgPDwgMCwKKyAgICBXYWl0aW5nID0gMSA8PCAxLAorICAgIEhlbGQg
PSAxIDw8IDIsCisgICAgCisgICAgUnVuV2l0aFBhY2tldCA9IFJ1biB8IEhhc1BhY2tldCwKKyAg
ICBXYWl0aW5nV2l0aFBhY2tldCA9IFdhaXRpbmcgfCBIYXNQYWNrZXQsCit9OworCitAaW50ZXJm
YWNlIFRhc2sgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCByZWFk
b25seSkgU2NoZWR1bGVyICpzY2hlZHVsZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
LCByZWFkb25seSkgUHJpb3JpdHkgcHJpb3JpdHk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ry
b25nLCBudWxsYWJsZSkgVGFzayAqbmV4dDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcs
IHJlYWRvbmx5LCBudWxsYWJsZSkgUGFja2V0ICpxdWV1ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24sIHJlYWRvbmx5KSBTdGF0ZSBzdGF0ZTsKKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0
ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eTooUHJpb3JpdHkp
cHJpb3JpdHkgcXVldWU6KG51bGxhYmxlIFBhY2tldCAqKXF1ZXVlOworLSAobnVsbGFibGUgVGFz
ayAqKXJ1bjoobnVsbGFibGUgUGFja2V0ICopcGFja2V0OworLSAodm9pZClyZWxlYXNlXzsKKy0g
KHZvaWQpaG9sZDsKKy0gKHZvaWQpd2FpdDsKKy0gKHZvaWQpcmVzdW1lOworLSAoUGFja2V0ICop
dGFrZVBhY2tldDsKKy0gKFRhc2sgKiljaGVja1ByaW9yaXR5QWRkOihUYXNrICopdGFzayBwYWNr
ZXQ6KFBhY2tldCAqKXBhY2tldDsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0
bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9UYXNrLm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9UYXNr
Lm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWNhOGI0NWY2YTIyNTQ5NDhhMzc0NGE1MzEyOTIyZDY4ZTBmYTE3Ywot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9S
aWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1Rhc2subQpAQCAtMCwwICsxLDg4
IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBv
cnQgIlRhc2suaCIKKworQGltcGxlbWVudGF0aW9uIFRhc2sKKworKyAoaW5zdGFuY2V0eXBlKWNy
ZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eTooUHJpb3Jp
dHkpcHJpb3JpdHkgcXVldWU6KG51bGxhYmxlIFBhY2tldCAqKXF1ZXVlCit7CisgICAgVGFzayAq
dGFzayA9IFtbc3VwZXIgYWxsb2NdIGluaXRdOworICAgIHRhc2stPl9zY2hlZHVsZXIgPSBzY2hl
ZHVsZXI7CisgICAgdGFzay0+X3ByaW9yaXR5ID0gcHJpb3JpdHk7CisgICAgdGFzay0+X3F1ZXVl
ID0gcXVldWU7CisgICAgaWYgKHF1ZXVlKQorICAgICAgICB0YXNrLT5fc3RhdGUgfD0gSGFzUGFj
a2V0OworICAgIHJldHVybiB0YXNrOworfQorCisKKy0gKG51bGxhYmxlIFRhc2sgKilydW46KG51
bGxhYmxlIFBhY2tldCAqKXBhY2tldAoreworICAgIE5TTG9nKEAiVGhpcyBtZXRob2QgbXVzdCBi
ZSBvdmVycmlkZGVuIik7CisgICAgZXhpdCgxKTsKK30KKworLSAodm9pZClyZWxlYXNlXworewor
ICAgIF9zdGF0ZSAmPSB+SGVsZDsKK30KKworLSAodm9pZClob2xkCit7CisgICAgX3N0YXRlIHw9
IEhlbGQ7Cit9CisKKy0gKHZvaWQpd2FpdAoreworICAgIF9zdGF0ZSB8PSBXYWl0aW5nOworfQor
CistICh2b2lkKXJlc3VtZQoreworICAgIF9zdGF0ZSAmPSB+V2FpdGluZzsKK30KKworLSAoUGFj
a2V0ICopdGFrZVBhY2tldAoreworICAgIFBhY2tldCAqcGFja2V0ID0gc2VsZi5xdWV1ZTsKKyAg
ICBfcXVldWUgPSBwYWNrZXQubGluazsKKyAgICBfc3RhdGUgPSBzZWxmLnF1ZXVlID8gUnVuV2l0
aFBhY2tldCA6IFJ1bjsKKyAgICByZXR1cm4gcGFja2V0OworfQorCistIChUYXNrICopY2hlY2tQ
cmlvcml0eUFkZDooVGFzayAqKXRhc2sgcGFja2V0OihQYWNrZXQgKilwYWNrZXQKK3sKKyAgICBp
ZiAoIXNlbGYucXVldWUpIHsKKyAgICAgICAgX3F1ZXVlID0gcGFja2V0OworICAgICAgICBfc3Rh
dGUgfD0gSGFzUGFja2V0OworICAgICAgICBpZiAoc2VsZi5wcmlvcml0eSA+IHRhc2sucHJpb3Jp
dHkpCisgICAgICAgICAgICByZXR1cm4gc2VsZjsKKyAgICB9IGVsc2UKKyAgICAgICAgX3F1ZXVl
ID0gW3BhY2tldCBhZGRUb1F1ZXVlOnNlbGYucXVldWVdOworICAgIHJldHVybiB0YXNrOworfQor
CitAZW5kCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkv
UmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9Xb3JrZXJUYXNrLmggYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hh
cmRzTW9zdGx5T2JqQy9Xb3JrZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRkNGQ0MTJiOWVmMWRjMGYw
MTVhMTU4ZTcwNzA3NzkwODAwMGVlZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlP
YmpDL1dvcmtlclRhc2suaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJU
YXNrLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdvcmtlclRhc2sgOiBUYXNrCisKKysgKGluc3Rh
bmNldHlwZSljcmVhdGVXaXRoU2NoZWR1bGVyOihTY2hlZHVsZXIgKilzY2hlZHVsZXIgcHJpb3Jp
dHk6KFByaW9yaXR5KXByaW9yaXR5IHF1ZXVlOihudWxsYWJsZSBQYWNrZXQgKilxdWV1ZTsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlP
YmpDL1dvcmtlclRhc2subSBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9S
aWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1dvcmtlclRhc2subQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZDFiY2Q5NDVkZDcxZjk2ZDc2ZjM2MTMzNmQyOTdiZWRiMzI1YWE4Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9z
dGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvV29ya2VyVGFzay5tCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNpbXBvcnQgIldvcmtlclRhc2suaCIKKworI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKworQGltcGxlbWVudGF0aW9uIFdvcmtlclRhc2sgewor
ICAgIEpTVmFsdWUgKl9qczsKK30KKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hlZHVs
ZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHkgcXVl
dWU6KFBhY2tldCAqKXF1ZXVlCit7CisgICAgV29ya2VyVGFzayAqdGFzayA9IFtzdXBlciBjcmVh
dGVXaXRoU2NoZWR1bGVyOnNjaGVkdWxlciBwcmlvcml0eTpwcmlvcml0eSBxdWV1ZTpxdWV1ZV07
CisgICAgdGFzay0+X2pzID0gW3NlbGYuY29uc3RydWN0b3IgY29uc3RydWN0V2l0aEFyZ3VtZW50
czpAW3NjaGVkdWxlcl1dOworICAgIFtzY2hlZHVsZXIgYWRkVGFzazp0YXNrXTsKKyAgICByZXR1
cm4gdGFzazsKK30KKworKyAoSlNDb250ZXh0ICopY29udGV4dCB7CisgICAgc3RhdGljIEpTQ29u
dGV4dCogY29udGV4dDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIFtjb250ZXh0IHNldEV4Y2VwdGlvbkhhbmRsZXI6
XihKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWUgKmV4Y2VwdGlvbikgeworICAgICAgICAgICAg
TlNMb2coQCIlQCIsIGV4Y2VwdGlvbi50b1N0cmluZyk7CisgICAgICAgICAgICBleGl0KDIpOwor
ICAgICAgICB9XTsKKyAgICAgICAgCisgICAgICAgIE5TU3RyaW5nICpzb3VyY2UgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOkAicmljaGFyZHMuanMiIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF07CisgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2Ny
aXB0OnNvdXJjZV07CisgICAgfSk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKysgKEpTVmFs
dWUgKiljb25zdHJ1Y3RvciB7CisgICAgc3RhdGljIEpTVmFsdWUgKmNvbnN0cnVjdG9yOworICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2VUb2tlbiwgXnsKKyAgICAgICAgY29uc3RydWN0b3IgPSBbW3NlbGYuY29udGV4dCBvYmplY3RG
b3JLZXllZFN1YnNjcmlwdDpAImNyZWF0ZVdvcmtlclRhc2siXSBjYWxsV2l0aEFyZ3VtZW50czpA
W0AoQSksIEAoQiksIEAoV29ya1BhY2tldC5zaXplKV1dOworICAgIH0pOworICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKK30KKworLSAoVGFzayAqKXJ1bjooUGFja2V0ICopcGFja2V0Cit7CisgICAg
TlNBcnJheSogYXJndW1lbnRzID0gcGFja2V0ID8gQFtwYWNrZXRdIDogQFtdOworICAgIHJldHVy
biBbX2pzIGludm9rZU1ldGhvZDpAInJ1biIgd2l0aEFyZ3VtZW50czphcmd1bWVudHNdLnRvT2Jq
ZWN0OworfQorCitAZW5kCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1
cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9tYWluLm0gYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1Jp
Y2hhcmRzTW9zdGx5T2JqQy9tYWluLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiZWExMTY2Mzc3MTU1ZjNlM2Ew
MzBjOWIyMmFkZWNkODk2NDJmMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpD
L21haW4ubQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJEZXZpY2VUYXNr
LmgiCisjaW1wb3J0ICJIYW5kbGVyVGFzay5oIgorI2ltcG9ydCAiSWRsZVRhc2suaCIKKyNpbXBv
cnQgIlBhY2tldC5oIgorI2ltcG9ydCAiU2NoZWR1bGVyLmgiCisjaW1wb3J0ICJXb3JrZXJUYXNr
LmgiCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorCitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgRVhQRUNURURfUVVFVUVfQ09VTlQgPSAyMzIyOworc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKK3ZvaWQgcnVuUmljaGFyZHMoKQorewor
ICAgIFNjaGVkdWxlciAqc2NoZWR1bGVyID0gW1tTY2hlZHVsZXIgYWxsb2NdIGluaXRdOworCisg
ICAgW0lkbGVUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6c2NoZWR1bGVyIHByaW9yaXR5OklkbGVd
OworCisgICAgeworICAgICAgICBXb3JrUGFja2V0ICpxdWV1ZSA9IFtXb3JrUGFja2V0IGNyZWF0
ZVdpdGhMaW5rOm5pbF07CisgICAgICAgIHF1ZXVlID0gW1dvcmtQYWNrZXQgY3JlYXRlV2l0aExp
bms6cXVldWVdOworICAgICAgICBbV29ya2VyVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVyOnNjaGVk
dWxlciBwcmlvcml0eTpXb3JrZXIgcXVldWU6cXVldWVdOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgRGV2aWNlUGFja2V0ICpxdWV1ZSA9IFtEZXZpY2VQYWNrZXQgY3JlYXRlOkEgd2l0aExpbms6
bmlsXTsKKyAgICAgICAgcXVldWUgPSBbRGV2aWNlUGFja2V0IGNyZWF0ZTpBIHdpdGhMaW5rOiBx
dWV1ZV07CisgICAgICAgIHF1ZXVlID0gW0RldmljZVBhY2tldCBjcmVhdGU6QSB3aXRoTGluazog
cXVldWVdOworICAgICAgICBbSGFuZGxlclRhc2sgY3JlYXRlV2l0aFNjaGVkdWxlcjpzY2hlZHVs
ZXIgZGV2aWNlOkEgcHJpb3JpdHk6SGFuZGxlckEgcXVldWU6cXVldWVdOworICAgIH0KKworICAg
IHsKKyAgICAgICAgRGV2aWNlUGFja2V0ICpxdWV1ZSA9IFtEZXZpY2VQYWNrZXQgY3JlYXRlOkIg
d2l0aExpbms6bmlsXTsKKyAgICAgICAgcXVldWUgPSBbRGV2aWNlUGFja2V0IGNyZWF0ZTpCIHdp
dGhMaW5rOnF1ZXVlXTsKKyAgICAgICAgcXVldWUgPSBbRGV2aWNlUGFja2V0IGNyZWF0ZTpCIHdp
dGhMaW5rOnF1ZXVlXTsKKyAgICAgICAgW0hhbmRsZXJUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6
c2NoZWR1bGVyIGRldmljZTpCIHByaW9yaXR5OkhhbmRsZXJCIHF1ZXVlOnF1ZXVlXTsKKyAgICB9
CisKKyAgICBbRGV2aWNlVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVyOnNjaGVkdWxlciBkZXZpY2U6
QSBwcmlvcml0eTpEZXZpY2VBXTsKKyAgICBbRGV2aWNlVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVy
OnNjaGVkdWxlciBkZXZpY2U6QiBwcmlvcml0eTpEZXZpY2VCXTsKKworICAgIFtzY2hlZHVsZXIg
c2NoZWR1bGVdOworCisgICAgaWYgKHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVYUEVDVEVEX1FV
RVVFX0NPVU5UIHx8IHNjaGVkdWxlci5ob2xkQ291bnQgIT0gRVhQRUNURURfSE9MRF9DT1VOVCkg
eworICAgICAgICBOU0xvZyhAIkVycm9yIGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAl
ZCwgaG9sZENvdW50ID0gJWQuIiwgc2NoZWR1bGVyLnF1ZXVlQ291bnQsIHNjaGVkdWxlci5ob2xk
Q291bnQpOworICAgICAgICBleGl0KDEpOworICAgIH0KK30KKworCitpbnQgbWFpbigpCit7Cisg
ICAgY29uc3QgdW5zaWduZWQgaXRlcmF0aW9ucyA9IDUwOworICAgIGNvbnN0IENGVGltZUludGVy
dmFsIHN0YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0ZXJhdGlvbnM7ICsraSkKKyAgICAgICAgcnVuUmljaGFyZHMoKTsKKyAgICBjb25z
dCBDRlRpbWVJbnRlcnZhbCBlbmQgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKKyAgICBwcmludGYo
IiVkXG4iLCAoaW50KSgoZW5kLXN0YXJ0KSAqIDEwMDApKTsKKyAgICByZXR1cm4gMDsKK30KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01v
c3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9i
akMvcmljaGFyZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMzNjA1NjIwZTYyNjAzZjY4MWI5ZmY2MzFjODAy
NDcwYjVjNjZiZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
Q3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL3JpY2hhcmRz
LmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2Z1bmN0aW9uIGNyZWF0ZVdvcmtlclRh
c2soZGV2aWNlQSwgZGV2aWNlQiwgREFUQV9TSVpFKSB7CisgICAgcmV0dXJuIGNsYXNzIHsKKyAg
ICAgICAgY29uc3RydWN0b3Ioc2NoZWR1bGVyKSB7CisgICAgICAgICAgICB0aGlzLnNjaGVkdWxl
ciA9IHNjaGVkdWxlcjsKKyAgICAgICAgICAgIHRoaXMuZGV2aWNlID0gZGV2aWNlQTsKKyAgICAg
ICAgICAgIHRoaXMubGV0dGVySW5kZXggPSAwOworICAgICAgICB9CisKKyAgICAgICAgcnVuKHBh
Y2tldCkgeworICAgICAgICAgICAgaWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLndhaXRDdXJyZW50KCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlID0gdGhpcy5kZXZpY2UgPT09IGRldmlj
ZUEgPyBkZXZpY2VCIDogZGV2aWNlQTsKKyAgICAgICAgICAgICAgICBwYWNrZXQuZGV2aWNlID0g
dGhpcy5kZXZpY2U7CisgICAgICAgICAgICAgICAgcGFja2V0LnByb2Nlc3NlZCA9IDA7CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRBX1NJWkU7IGkrKykgeworICAgICAg
ICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4Kys7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmxldHRlckluZGV4ID4gMjYpCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxl
dHRlckluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0LmRhdGFbaV0gPSB0aGlz
LmxldHRlckluZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5zY2hlZHVsZXIuaGFuZGxlKHBhY2tldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9OworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50
QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvcmljaGFyZHMubSBiL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmlj
aGFyZHNNb3N0bHlPYmpDL3JpY2hhcmRzLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFlYmJkM2MxODE2MjhjMjNl
OGJmZjQ2OGVmMmVlM2M5MTdiYTY1YQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlP
YmpDL3JpY2hhcmRzLm0KQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1Jp
Y2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9z
dGx5U3dpZnQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTYwYTVkYWEy
YTVjOGJiODRkZWI1OTMzOWZlMjE5N2M1NmEwMzdlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFy
ZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMzIyIEBA
CisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJ
fTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQwQUFDMzcyNDk5QkQ3QTAwMDFGMTFFIC8qIHJpY2hhcmRz
LmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBB
QUMzNjI0OTlCRDZDMDAwMUYxMUUgLyogcmljaGFyZHMuanMgKi87IH07CisJCTE0MEFBQzQwMjQ5
QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzODI0OUIwMUQxMDAwMUYxMUUgLyogUGFja2V0LnN3
aWZ0ICovOyB9OworCQkxNDBBQUM0MTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzOTI0
OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgKi87IH07CisJCTE0MEFBQzQyMjQ5QjAx
RDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzQTI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVy
LnN3aWZ0ICovOyB9OworCQkxNDBBQUM0MzI0OUIwMUQxMDAwMUYxMUUgLyogVGFzay5zd2lmdCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNCMjQ5
QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0NDI0OUIwMUQxMDAw
MUYxMUUgLyogSWRsZVRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDBBQUMzQzI0OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQg
Ki87IH07CisJCTE0MEFBQzQ1MjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNEMjQ5
QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDYyNDlC
MDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzRTI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2Vy
VGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDcyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRh
c2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDBBQUMzRjI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCAqLzsgfTsKKwkJMTQx
NUFEMjYyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1QUQyNTI0OTlCQzVDMDA1QkIyRTQgLyogbWFp
bi5zd2lmdCAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMjAyNDk5QkM1QzAw
NUJCMkU0IC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKKwkJCWRzdFBhdGggPSAiIjsKKwkJCWRzdFN1
YmZvbGRlclNwZWMgPSAxNjsKKwkJCWZpbGVzID0gKAorCQkJCTE0MEFBQzM3MjQ5OUJEN0EwMDAx
RjExRSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlv
biAqLworCQkxNDBBQUMzNjI0OTlCRDZDMDAwMUYxMUUgLyogcmljaGFyZHMuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSByaWNoYXJkcy5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lm
dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBQYWNrZXQuc3dpZnQ7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNo
YXJkcy5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSByaWNoYXJkcy5z
d2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0EyNDlCMDFEMTAwMDFG
MTFFIC8qIFNjaGVkdWxlci5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGgg
PSBTY2hlZHVsZXIuc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNC
MjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lm
dDsgcGF0aCA9IFRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFB
QzNDMjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuc3dpZnQ7IHBhdGggPSBJZGxlVGFzay5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTQwQUFDM0QyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IEhhbmRsZXJUYXNrLnN3aWZ0OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzRTI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2Vy
VGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBXb3JrZXJUYXNr
LnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzRjI0OUIwMUQxMDAw
MUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBh
dGggPSBEZXZpY2VUYXNrLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDE1
QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNNb3N0bHlTd2lmdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gUmljaGFyZHNNb3N0bHlTd2lmdDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMTQxNUFEMjUyNDk5QkM1QzAw
NUJCMkU0IC8qIG1haW4uc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gbWFpbi5zd2lmdDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQx
RjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQkxNDE1QUQxOTI0OTlCQzVCMDA1QkIyRTQgPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MTVBRDI0MjQ5OUJD
NUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseVN3aWZ0ICovLAorCQkJCTE0MTVBRDIzMjQ5OUJD
NUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQkxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVjdHMgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MTVBRDIyMjQ5OUJD
NUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseVN3aWZ0ICovLAorCQkJKTsKKwkJCW5hbWUgPSBQ
cm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MTVBRDI0MjQ5
OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseVN3aWZ0ICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDBBQUMzRjI0OUIwMUQxMDAwMUYxMUUgLyog
RGV2aWNlVGFzay5zd2lmdCAqLywKKwkJCQkxNDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyogSGFu
ZGxlclRhc2suc3dpZnQgKi8sCisJCQkJMTQwQUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVU
YXNrLnN3aWZ0ICovLAorCQkJCTE0MTVBRDI1MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0
ICovLAorCQkJCTE0MEFBQzM4MjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi8sCisJ
CQkJMTQwQUFDMzYyNDk5QkQ2QzAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzICovLAorCQkJCTE0MEFB
QzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5zd2lmdCAqLywKKwkJCQkxNDBBQUMzQTI0
OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0ICovLAorCQkJCTE0MEFBQzNCMjQ5QjAx
RDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICovLAorCQkJCTE0MEFBQzNFMjQ5QjAxRDEwMDAxRjEx
RSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc01vc3Rs
eVN3aWZ0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91
cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTE0
MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseVN3aWZ0ICovID0geworCQkJ
aXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTVB
RDI5MjQ5OUJDNUMwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAiUmljaGFyZHNNb3N0bHlTd2lmdCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgK
KwkJCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291cmNlcyAqLywKKwkJCQkxNDE1QUQx
RjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxNDE1QUQyMDI0OTlCQzVD
MDA1QkIyRTQgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkp
OworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBSaWNoYXJkc01vc3RseVN3
aWZ0OworCQkJcHJvZHVjdE5hbWUgPSBSaWNoYXJkc01vc3RseVN3aWZ0OworCQkJcHJvZHVjdFJl
ZmVyZW5jZSA9IDE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseVN3aWZ0
ICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJ
fTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9q
ZWN0IHNlY3Rpb24gKi8KKwkJMTQxNUFEMUEyNDk5QkM1QjAwNUJCMkU0IC8qIFByb2plY3Qgb2Jq
ZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJ
TGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAxMjAwOworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMjAw
OworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJF
NCA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEyLjA7CisJCQkJCX07CisJCQkJ
fTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxNUFEMUQyNDk5QkM1QjAw
NUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFy
ZHNNb3N0bHlTd2lmdCIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSA5LjMi
OworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBlbjsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3Mg
PSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJCUJhc2UsCisJCQkpOworCQkJ
bWFpbkdyb3VwID0gMTQxNUFEMTkyNDk5QkM1QjAwNUJCMkU0OworCQkJcHJvZHVjdFJlZkdyb3Vw
ID0gMTQxNUFEMjMyNDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERp
clBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTE0
MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseVN3aWZ0ICovLAorCQkJKTsK
KwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291
cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0MEFBQzQ3MjQ5QjAxRDEw
MDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDUy
NDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJ
MTQwQUFDNDQyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8s
CisJCQkJMTQxNUFEMjYyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAq
LywKKwkJCQkxNDBBQUM0MDI0OUIwMUQxMDAwMUYxMUUgLyogUGFja2V0LnN3aWZ0IGluIFNvdXJj
ZXMgKi8sCisJCQkJMTQwQUFDNDEyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0IGlu
IFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDIyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5z
d2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQzMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNr
LnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDYyNDlCMDFEMTAwMDFGMTFFIC8qIFdv
cmtlclRhc2suc3dpZnQgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8K
KwkJMTQxNUFEMjcyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJ
CQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJ
VkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNM
QU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZ
RVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9P
QkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJ
TkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04g
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOwor
CQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05V
TExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlO
X1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFO
R19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNU
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7
CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
X0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5P
OworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJ
Q1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJ
CQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJ
QyA9IE5POworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUla
QVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJ
CQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRV
Uk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsK
KwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VE
X1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2Owor
CQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNU
X01BVEggPSBZRVM7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0g
bWFjb3N4OworCQkJCVNXSUZUX0FDVElWRV9DT01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7
CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFt
ZSA9IERlYnVnOworCQl9OworCQkxNDE1QUQyODI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpF
Ul9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVS
U0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9
ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5H
X0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsK
KwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tf
Q0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJT
SU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9D
T05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpD
X0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9V
U0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
RU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9O
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9P
QkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRF
UkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZ
RVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVB
REVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VT
UElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElU
WSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNP
UFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdh
cmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJM
RV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251MTE7CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJO
X1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJ
CQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9W
QVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJ
CQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBOTzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xl
bW9kdWxlOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJ
bmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0MTVBRDJBMjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJ
CW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxNUFEMkIyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVh
c2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFN
RSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDE1
QUQxRDI0OTlCQzVCMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQ
cm9qZWN0ICJSaWNoYXJkc01vc3RseVN3aWZ0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDI3MjQ5OUJD
NUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLywKKwkJCQkxNDE1QUQyODI0OTlCQzVDMDA1QkIyRTQgLyog
UmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDE1QUQy
OTI0OTlCQzVDMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgIlJpY2hhcmRzTW9zdGx5U3dpZnQiICovID0geworCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQxNUFEMkEyNDk5
QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAorCQkJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAv
KiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0g
MDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQg
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gMTQxNUFE
MUEyNDk5QkM1QjAwNUJCMkU0IC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQv
UmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNo
YXJkc01vc3RseVN3aWZ0Lnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ov
eGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjc2NoZW1lCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM0MmVhOTg5MmYyMmY1MmIxYmRlZTdiODgxNmVkOTY3NDczYzdlOTAKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNN
b3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUKQEAgLTAsMCArMSw4MSBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTY2hlbWUKKyAgIExhc3RVcGdy
YWRlVmVyc2lvbiA9ICIxMjAwIgorICAgdmVyc2lvbiA9ICIxLjciPgorICAgPEJ1aWxkQWN0aW9u
CisgICAgICBwYXJhbGxlbGl6ZUJ1aWxkYWJsZXMgPSAiWUVTIgorICAgICAgYnVpbGRJbXBsaWNp
dERlcGVuZGVuY2llcyA9ICJZRVMiPgorICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KKyAgICAg
ICAgIDxCdWlsZEFjdGlvbkVudHJ5CisgICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVT
IgorICAgICAgICAgICAgYnVpbGRGb3JSdW5uaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxk
Rm9yUHJvZmlsaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllF
UyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+CisgICAgICAgICAgICA8
QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0g
InByaW1hcnkiCisgICAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIx
MjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFy
ZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNN
b3N0bHlTd2lmdCIKKyAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFp
bmVyOlJpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qIj4KKyAgICAgICAgICAgIDwvQnVpbGRh
YmxlUmVmZXJlbmNlPgorICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5PgorICAgICAgPC9CdWls
ZEFjdGlvbkVudHJpZXM+CisgICA8L0J1aWxkQWN0aW9uPgorICAgPFRlc3RBY3Rpb24KKyAgICAg
IGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVu
dGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAg
c2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxh
dW5jaGVyLkxMREIiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+
CisgICAgICA8VGVzdGFibGVzPgorICAgICAgPC9UZXN0YWJsZXM+CisgICA8L1Rlc3RBY3Rpb24+
CisgICA8TGF1bmNoQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisg
ICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRp
b24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhj
b2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgbGF1bmNoU3R5bGUg
PSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisgICAgICBpZ25v
cmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1Z0RvY3VtZW50VmVy
c2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwi
CisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAgPEJ1aWxkYWJs
ZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgor
ICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRp
ZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDE1
QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hh
cmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzTW9z
dGx5U3dpZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpS
aWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVy
ZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9MYXVuY2hBY3Rp
b24+CisgICA8UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVh
c2UiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNh
dmVkVG9vbElkZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9
ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8QnVp
bGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAi
MCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJ
ZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0g
IjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAi
UmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFy
ZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFp
bmVyOlJpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxl
UmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICA8L1Byb2Zp
bGVBY3Rpb24+CisgICA8QW5hbHl6ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0g
IkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFjdGlvbj4KKyAgIDxBcmNoaXZlQWN0aW9uCisgICAgICBi
dWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHJldmVhbEFyY2hpdmVJbk9yZ2Fu
aXplciA9ICJZRVMiPgorICAgPC9BcmNoaXZlQWN0aW9uPgorICAgPEluc3RhbGxBY3Rpb24KKyAg
ICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIj4KKyAgIDwvSW5zdGFsbEFjdGlvbj4K
KzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50
QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZpY2VUYXNrLnN3
aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
NjFhYjQxNGI2MmM4MjcwZDU2YjE0YzRlN2JhYTRlMmVkOTA2ODEKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lm
dC9SaWNoYXJkc01vc3RseVN3aWZ0L0RldmljZVRhc2suc3dpZnQKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworaW1wb3J0IEZvdW5kYXRpb24KKworQG9iamMgZW51bSBEZXZpY2UgOiBJbnQg
eworICAgIGNhc2UgQQorICAgIGNhc2UgQgorfQorCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3Bl
bmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisg
KiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICovCitjbGFzcyBE
ZXZpY2VUYXNrIDogVGFzayB7CisgICAgbGV0IGRldmljZTogRGV2aWNlCisgICAgdmFyIHBlbmRp
bmdQYWNrZXQgOiBEZXZpY2VQYWNrZXQ/ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUo
c2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkp
CisgICAgeworICAgICAgICBsZXQgdGFzayA9IERldmljZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVs
ZXIsIGRldmljZTogZGV2aWNlLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxl
ci5hZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6
IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBpZiBwYWNrZXQgPT0gbmlsIHsKKyAg
ICAgICAgICAgIGd1YXJkIGxldCBwYWNrZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLndhaXRDdXJyZW50KCkKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHNlbGYucGVuZGluZ1BhY2tldCA9IG5pbAorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhhbmRsZShwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAg
fQorCisgICAgICAgIHNlbGYucGVuZGluZ1BhY2tldCA9IChwYWNrZXQgYXMhIERldmljZVBhY2tl
dCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICB9CisK
KyAgICBwcml2YXRlIGluaXQoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNlLCBw
cmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBzZWxmLmRldmljZSA9IGRldmljZQor
ICAgICAgICBzdXBlci5pbml0KHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3Jp
dHkpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9IYW5kbGVyVGFz
ay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01v
c3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTU1OWQ5MGY3NGM4NGVlNjU4MDE2OTkxMmVmMmQ1NTVhNTYxOWRmNwotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworaW1wb3J0IEZvdW5kYXRpb24KK2ltcG9ydCBKYXZhU2NyaXB0Q29y
ZQorCisvKioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhl
biBzdXNwZW5kcyBpdHNlbGYuCisgKi8KK0BvYmpjIHByb3RvY29sIEhhbmRsZXJUYXNrRXhwb3J0
cyA6IEpTRXhwb3J0IHsKK30KKworQG9iamMgcHVibGljIGNsYXNzIEhhbmRsZXJUYXNrIDogVGFz
aywgSGFuZGxlclRhc2tFeHBvcnRzIHsKKyAgICB2YXIgZGV2aWNlOiBEZXZpY2UKKyAgICB2YXIg
d29ya1F1ZXVlIDogV29ya1BhY2tldD8gPSBuaWwKKyAgICB2YXIgZGV2aWNlUXVldWUgOiBEZXZp
Y2VQYWNrZXQ/ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hl
ZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBEZXZpY2VQ
YWNrZXQpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IEhhbmRsZXJUYXNrKHNjaGVkdWxlcjog
c2NoZWR1bGVyLCBkZXZpY2U6IGRldmljZSwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVl
dWUpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVy
cmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBp
ZiBsZXQgcCA9IHBhY2tldCB7CisgICAgICAgICAgICBpZiBsZXQgd29yayA9IHAgYXM/IFdvcmtQ
YWNrZXQgeworICAgICAgICAgICAgICAgIHNlbGYud29ya1F1ZXVlID0gd29yay5hZGRUbyhxdWV1
ZTogc2VsZi53b3JrUXVldWUpIGFzISBXb3JrUGFja2V0PworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzZWxmLmRldmljZVF1ZXVlID0gKHAgYXMhIERldmljZVBhY2tldCku
YWRkVG8ocXVldWU6IHNlbGYuZGV2aWNlUXVldWUpIGFzISBEZXZpY2VQYWNrZXQ/CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgbGV0IHdvcmtQYWNrZXQgPSBzZWxmLndvcmtR
dWV1ZSB7CisgICAgICAgICAgICBsZXQgcHJvY2Vzc2VkID0gd29ya1BhY2tldC5wcm9jZXNzZWQK
KyAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgPCBXb3JrUGFja2V0LlNJWkUpIHsKKyAgICAgICAg
ICAgICAgICBpZiBsZXQgZGV2aWNlUGFja2V0ID0gc2VsZi5kZXZpY2VRdWV1ZSB7CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZGV2aWNlUXVldWUgPSBkZXZpY2VQYWNrZXQubGluayBhcyEgRGV2
aWNlUGFja2V0PworICAgICAgICAgICAgICAgICAgICBkZXZpY2VQYWNrZXQubGV0dGVySW5kZXgg
PSB3b3JrUGFja2V0LmRhdGFbcHJvY2Vzc2VkXQorICAgICAgICAgICAgICAgICAgICB3b3JrUGFj
a2V0LnByb2Nlc3NlZCA9IHByb2Nlc3NlZCArIDEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogZGV2aWNlUGFja2V0KQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VsZi53b3JrUXVl
dWUgPSB3b3JrUGFja2V0LmxpbmsgYXMhIFdvcmtQYWNrZXQ/CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogd29ya1BhY2tldCkKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQo
KQorICAgIH0KKworICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNl
OiBEZXZpY2UsIHByaW9yaXR5OiBQcmlvcml0eSwgcXVldWU6IERldmljZVBhY2tldCkKKyAgICB7
CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHN1cGVyLmluaXQoc2NoZWR1
bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNo
YXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSWRsZVRhc2suc3dpZnQgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNo
YXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ODc3OTI1MmExOTEx
ZGQ3MTE5NjE1ZGU5YTJlYTA1MGE1NDg1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01v
c3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKy8q
KgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsgaXRzZWxmIGJ1dCBjeWNsZXMg
Y29udHJvbCBiZXR3ZWVuIHRoZSB0d28gZGV2aWNlIHRhc2tzLgorICovCitjbGFzcyBJZGxlVGFz
ayA6IFRhc2sgeworICAgIHZhciBoYXNoXyA6IEludCA9IDEKKyAgICB2YXIgY291bnQgOiBJbnQg
PSAxMDAwCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIHBy
aW9yaXR5OiBQcmlvcml0eSkKKyAgICB7CisgICAgICAgIGxldCB0YXNrID0gSWRsZVRhc2soc2No
ZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSkKKyAgICAgICAgc2NoZWR1bGVy
LmFkZCh0YXNrOiB0YXNrKQorICAgIH0KKworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDog
UGFja2V0PykgLT4gVGFzaz8KKyAgICB7CisgICAgICBzZWxmLmNvdW50IC09IDEKKyAgICAgIGlm
IHNlbGYuY291bnQgPT0gMCB7CisgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhvbGRD
dXJyZW50KCkKKyAgICAgIH0KKyAgICAgIGlmIChzZWxmLmhhc2hfICYgMSkgPT0gMCB7CisgICAg
ICAgIHNlbGYuaGFzaF8gPSBzZWxmLmhhc2hfID4+IDEKKyAgICAgICAgcmV0dXJuIHNlbGYuc2No
ZWR1bGVyLnJlbGVhc2VfKGRldmljZTogLkEpCisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxm
Lmhhc2hfID0gKHNlbGYuaGFzaF8gPj4gMSkgXiAweEQwMDgKKyAgICAgICAgcmV0dXJuIHNlbGYu
c2NoZWR1bGVyLnJlbGVhc2VfKGRldmljZTogLkIpCisgICAgICB9CisgICAgfQorCisgICAgcHJp
dmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAg
eworICAgICAgc3VwZXIuaW5pdChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9y
aXR5KQorICAgICAgc2VsZi5yZXN1bWUoKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRz
TW9zdGx5U3dpZnQvUGFja2V0LnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9QYWNrZXQuc3dp
ZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzlhNGQ5NTU4ZWI0NzNiNjc3ZmRiNzljZWRlZGY0MTllZjBiZmVkZQot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9S
aWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvUGFja2V0LnN3aWZ0CkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCisvKioKKyAq
IEEgc2ltcGxlIHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNr
cy4gIFRoZSBleGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBh
IHBhY2tldCBpcyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUg
b2YgdGhlIHdvcmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJl
c2lkZXMgY2FycnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhl
bmNlIHVzZWQgYm90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3RzLgorICovCisKK0BvYmpjIHBy
b3RvY29sIFBhY2tldEV4cG9ydHMgOiBKU0V4cG9ydCB7CisgICAgdmFyIGRldmljZSA6IERldmlj
ZSB7IGdldCBzZXQgfQorfQorCitAb2JqYyBwdWJsaWMgY2xhc3MgUGFja2V0IDogTlNPYmplY3Qs
IFBhY2tldEV4cG9ydHMgeworICAgIGR5bmFtaWMgdmFyIGRldmljZSA6IERldmljZQorICAgIHZh
ciBsaW5rIDogUGFja2V0PworCisgICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0
PykKKyAgICB7CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHNlbGYubGlu
ayA9IGxpbmsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUg
ZW5kIG9mIGEgd29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICAgICovCisgICAg
ZnVuYyBhZGRUbyhxdWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7CisgICAgICAgIHNlbGYubGlu
ayA9IG5pbAorICAgICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIHNlbGYKKyAgICAgICAgfQorICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmls
IHsKKyAgICAgICAgICAgIG5leHQgPSBuZXh0LmxpbmshCisgICAgICAgIH0KKyAgICAgICAgbmV4
dC5saW5rID0gc2VsZgorICAgICAgICByZXR1cm4gcXVldWU7CisgICAgfQorfQorCitwdWJsaWMg
ZmluYWwgY2xhc3MgRGV2aWNlUGFja2V0IDogUGFja2V0IHsKKyAgICB2YXIgbGV0dGVySW5kZXgg
OiBJbnQgPSAwCit9CisKK0BvYmpjIHByb3RvY29sIFdvcmtQYWNrZXRFeHBvcnRzIDogUGFja2V0
RXhwb3J0cywgSlNFeHBvcnQgeworICAgIHZhciBwcm9jZXNzZWQgOiBJbnQgeyBnZXQgc2V0IH0K
KyAgICB2YXIgZGF0YSA6IFtJbnRdIHsgZ2V0IHNldCB9Cit9CisKK0BvYmpjIHB1YmxpYyBmaW5h
bCBjbGFzcyBXb3JrUGFja2V0IDogUGFja2V0LCBXb3JrUGFja2V0RXhwb3J0cyB7CisgICAgc3Rh
dGljIGxldCBTSVpFIDogSW50ID0gNAorCisgICAgZHluYW1pYyB2YXIgcHJvY2Vzc2VkIDogSW50
ID0gMAorICAgIGR5bmFtaWMgdmFyIGRhdGEgOiBbSW50XSA9IFtJbnRdKHJlcGVhdGluZzogMCwg
Y291bnQ6IFNJWkUpCisKKyAgICBpbml0KGxpbms6IFBhY2tldD8pCisgICAgeworICAgICAgICBz
dXBlci5pbml0KGRldmljZTogLkEsIGxpbms6IGxpbmspCisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQv
UmljaGFyZHNNb3N0bHlTd2lmdC9TY2hlZHVsZXIuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0
L1NjaGVkdWxlci5zd2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODlmZjdiMmZmZmUyM2IyNGY2OTY5NjhlYTQ4
Mjk5ZTM1NGQxNmM2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9TY2hl
ZHVsZXIuc3dpZnQKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBKYXZhU2Ny
aXB0Q29yZQorCitAb2JqYyBwcm90b2NvbCBTY2hlZHVsZXJFeHBvcnRzIDogSlNFeHBvcnQgewor
ICAgIGZ1bmMgd2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIGZ1bmMgaGFuZGxlKHBhY2tldDog
V29ya1BhY2tldCkgLT4gVGFzaz8KK30KKworLyoqCisqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2Vk
IHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisqIHBy
aW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0IG9mIHRh
c2sgY29udHJvbCBibG9ja3MKKyogd2hpY2ggaG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVl
IHRoZXkgYXJlIHByb2Nlc3NpbmcuCisqIEBjb25zdHJ1Y3RvcgorKi8KK0BvYmpjIHB1YmxpYyBj
bGFzcyBTY2hlZHVsZXIgOiBOU09iamVjdCwgU2NoZWR1bGVyRXhwb3J0cyB7CisgICAgcHJpdmF0
ZShzZXQpIHZhciBxdWV1ZUNvdW50ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgaG9sZENvdW50
ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgY3VycmVudFRhc2sgOiBUYXNrPyA9IG5pbAorICAg
IHByaXZhdGUoc2V0KSB2YXIgbGlzdCA6IFRhc2s/ID0gbmlsCisKKyAgICAvKioKKyAgICAqIEV4
ZWN1dGUgdGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgICAgKi8KKyAgICBm
dW5jIHNjaGVkdWxlKCkKKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSBzZWxmLmxp
c3QKKyAgICAgICAgd2hpbGUgbGV0IHRhc2sgPSBzZWxmLmN1cnJlbnRUYXNrIHsKKyAgICAgICAg
ICAgIHZhciBwYWNrZXQgOiBQYWNrZXQ/ID0gbmlsCisgICAgICAgICAgICBzd2l0Y2ggdGFzay5z
dGF0ZSB7CisgICAgICAgICAgICBjYXNlIC53YWl0aW5nV2l0aFBhY2tldDoKKyAgICAgICAgICAg
ICAgICBwYWNrZXQgPSB0YXNrLnRha2VQYWNrZXQoKQorICAgICAgICAgICAgICAgIGZhbGx0aHJv
dWdoCisgICAgICAgICAgICBjYXNlIC5ydW4sIC5ydW5XaXRoUGFja2V0OgorICAgICAgICAgICAg
ICAgIHNlbGYuY3VycmVudFRhc2sgPSB0YXNrLnJ1bihwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50VGFzayA9IHRhc2submV4
dAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBBZGQg
dGhlIHNwZWNpZmllZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICAgICovCisgICAgZnVuYyBh
ZGQodGFzazogVGFzaykKKyAgICB7CisgICAgICAgIHRhc2submV4dCA9IHNlbGYubGlzdAorICAg
ICAgICBzZWxmLmxpc3QgPSB0YXNrCisgICAgfQorCisgICAgLyoqCisgICAgKiBSZWxlYXNlIGEg
dGFzayB0aGF0IGlzIGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sg
dG8gcnVuLgorICAgICovCisgICAgZnVuYyByZWxlYXNlXyhkZXZpY2U6IERldmljZSkgLT4gVGFz
az8KKyAgICB7CisgICAgICAgIGd1YXJkIGxldCB0YXNrIDogRGV2aWNlVGFzayA9IGZpbmQod2hl
cmU6IHsgJDAuZGV2aWNlID09IGRldmljZSB9KSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBu
aWwKKyAgICAgICAgfQorICAgICAgICB0YXNrLnJlbGVhc2VfKCkKKyAgICAgICAgaWYgdGFzay5w
cmlvcml0eSA+IHNlbGYuY3VycmVudFRhc2shLnByaW9yaXR5IHsKKyAgICAgICAgICAgIHJldHVy
biB0YXNrCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2sKKyAgICB9
CisKKyAgICAvKioKKyAgICAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5k
IHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAgICAqIHRvIHJ1bi4gIFRoZSBi
bG9ja2VkIHRhc2sgd2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNp
dGx5CisgICAgKiByZWxlYXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAg
ICAqLworICAgIGZ1bmMgaG9sZEN1cnJlbnQoKSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgc2Vs
Zi5ob2xkQ291bnQgKz0gMQorICAgICAgICBzZWxmLmN1cnJlbnRUYXNrIS5ob2xkKCkKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2shLm5leHQKKyAgICB9CisKKyAgICAvKioKKyAgICAq
IFN1c3BlbmQgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0
IHRhc2sgY29udHJvbCBibG9jaworICAgICogdG8gcnVuLiAgSWYgbmV3IHdvcmsgaXMgYWRkZWQg
dG8gdGhlIHN1c3BlbmRlZCB0YXNrIGl0IHdpbGwgYmUgbWFkZSBydW5uYWJsZS4KKyAgICAqLwor
ICAgIGZ1bmMgd2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgc2VsZi5jdXJy
ZW50VGFzayEud2FpdCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrCisgICAgfQor
CisgICAgLyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmllZCBwYWNrZXQgdG8gdGhlIGVuZCBvZiB0
aGUgd29ya2xpc3QgdXNlZCBieSB0aGUgdGFzaworICAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBw
YWNrZXQgYW5kIG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQgaXMgY3VycmVudGx5CisgICAg
KiBzdXNwZW5kZWQuCisgICAgKi8KKyAgICBmdW5jIHF1ZXVlKHBhY2tldDogRGV2aWNlUGFja2V0
KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRhc2sgOiBEZXZpY2VUYXNrPyA9IHNlbGYu
ZmluZCh3aGVyZTogeyAkMC5kZXZpY2UgPT0gcGFja2V0LmRldmljZSB9KQorICAgICAgICByZXR1
cm4gcXVldWVJbXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQorICAgIH0KKworICAgIGZ1
bmMgcXVldWUocGFja2V0OiBXb3JrUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0
IHRhc2sgOiBXb3JrZXJUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyBfIGluIHRydWUgfSkKKyAg
ICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9
CisKKyAgICBmdW5jIGhhbmRsZShwYWNrZXQ6IFdvcmtQYWNrZXQpIC0+IFRhc2s/CisgICAgewor
ICAgICAgICBsZXQgdGFzayA6IEhhbmRsZXJUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyAkMC5k
ZXZpY2UgPT0gcGFja2V0LmRldmljZSB9KQorICAgICAgICByZXR1cm4gcXVldWVJbXBsKHRhc2s6
IHRhc2ssIHBhY2tldDogcGFja2V0KQorICAgIH0KKworICAgIGZ1bmMgaGFuZGxlKHBhY2tldDog
RGV2aWNlUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRhc2sgOiBIYW5kbGVy
VGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBhY2tldC5kZXZpY2UgfSkK
KyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKKyAg
ICB9CisKKyAgICBwcml2YXRlIGZ1bmMgcXVldWVJbXBsKHRhc2s6IFRhc2s/LCBwYWNrZXQ6IFBh
Y2tldCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGd1YXJkIHRhc2sgIT0gbmlsIGVsc2UgeyBy
ZXR1cm4gbmlsIH0KKyAgICAgICAgc2VsZi5xdWV1ZUNvdW50ICs9IDEKKyAgICAgICAgcGFja2V0
LmxpbmsgPSBuaWwKKyAgICAgICAgcmV0dXJuIHRhc2shLmNoZWNrUHJpb3JpdHlBZGQodGFzazog
c2VsZi5jdXJyZW50VGFzayEsIHBhY2tldDogcGFja2V0KQorICAgIH0KKworICAgIHByaXZhdGUg
ZnVuYyBmaW5kPFQ6IFRhc2s+KHdoZXJlIGNvbmRpdGlvbjogKFQpIC0+IEJvb2wpIC0+IFQ/Cisg
ICAgeworICAgICAgICB2YXIgdGFzayA9IHNlbGYubGlzdAorICAgICAgICB3aGlsZSB0YXNrICE9
IG5pbCB7CisgICAgICAgICAgICBpZiBsZXQgdCA9IHRhc2sgYXM/IFQgeworICAgICAgICAgICAg
ICAgIGlmIGNvbmRpdGlvbih0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFzayA9IHRhc2shLm5l
eHQKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmlsCisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQv
UmljaGFyZHNNb3N0bHlTd2lmdC9UYXNrLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9UYXNr
LnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZkZjQ1Mjg4ZTAwMTA3NmUwZDE0Y2YyYzY2MmM4ZDdhMDc2ZTI4
YjIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRB
UEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQKQEAg
LTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBGb3VuZGF0aW9uCitpbXBvcnQgSmF2
YVNjcmlwdENvcmUKKworZW51bSBQcmlvcml0eSA6IEludCB7CisgICAgY2FzZSBJZGxlID0gMAor
ICAgIGNhc2UgV29ya2VyID0gMTAwMAorICAgIGNhc2UgSGFuZGxlckEgPSAyMDAwCisgICAgY2Fz
ZSBIYW5kbGVyQiA9IDMwMDAKKyAgICBjYXNlIERldmljZUEgPSA0MDAwCisgICAgY2FzZSBEZXZp
Y2VCID0gNTAwMAorCisgICAgc3RhdGljIGZ1bmMgPihsaHM6U2VsZiwgcmhzOlNlbGYpIC0+IEJv
b2wgCisgICAgeworICAgICAgICByZXR1cm4gbGhzLnJhd1ZhbHVlID4gcmhzLnJhd1ZhbHVlCisg
ICAgfQorfQorCitAb2JqYyBwdWJsaWMgY2xhc3MgVGFzayA6IE5TT2JqZWN0LCBKU0V4cG9ydCB7
CisgICAgbGV0IHNjaGVkdWxlciA6IFNjaGVkdWxlcgorICAgIGxldCBwcmlvcml0eSA6IFByaW9y
aXR5CisgICAgdmFyIG5leHQgOiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0KSB2YXIgcXVl
dWUgOiBQYWNrZXQ/CisgICAgcHJpdmF0ZShzZXQpIHZhciBzdGF0ZSA6IFN0YXRlID0gLndhaXRp
bmcKKworICAgIHN0cnVjdCBTdGF0ZSA6IE9wdGlvblNldCB7CisgICAgICAgIGxldCByYXdWYWx1
ZTogSW50CisKKyAgICAgICAgc3RhdGljIGxldCBydW4gOiBTdGF0ZSA9IFtdCisgICAgICAgIHN0
YXRpYyBsZXQgaGFzUGFja2V0ID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMCkKKyAgICAgICAgc3Rh
dGljIGxldCB3YWl0aW5nID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMSkKKyAgICAgICAgc3RhdGlj
IGxldCBoZWxkID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMikKKworICAgICAgICBzdGF0aWMgbGV0
IHJ1bldpdGhQYWNrZXQgPSBoYXNQYWNrZXQudW5pb24ocnVuKQorICAgICAgICBzdGF0aWMgbGV0
IHdhaXRpbmdXaXRoUGFja2V0ID0gaGFzUGFja2V0LnVuaW9uKHdhaXRpbmcpCisKKyAgICAgICAg
aW5pdChyYXdWYWx1ZTogSW50KQorICAgICAgICB7CisgICAgICAgICAgICBzZWxmLnJhd1ZhbHVl
ID0gcmF3VmFsdWUKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmMgcnVuKHBhY2tldDogUGFj
a2V0PykgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIHByZWNvbmRpdGlvbkZhaWx1cmUoIlRoaXMg
bWV0aG9kIG11c3QgYmUgb3ZlcnJpZGRlbiIpIAorICAgIH0KKworICAgIGZ1bmMgcmVsZWFzZV8o
KQorICAgIHsKKyAgICAgICAgc2VsZi5zdGF0ZS5yZW1vdmUoLmhlbGQpCisgICAgfQorCisgICAg
ZnVuYyBob2xkKCkKKyAgICB7CisgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5oZWxkKQorICAg
IH0KKworICAgIGZ1bmMgd2FpdCgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLmluc2VydCgu
d2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHJlc3VtZSgpCisgICAgeworICAgICAgICBzZWxm
LnN0YXRlLnJlbW92ZSgud2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHRha2VQYWNrZXQoKSAt
PiBQYWNrZXQKKyAgICB7CisgICAgICAgIGxldCBwYWNrZXQgPSBzZWxmLnF1ZXVlIQorICAgICAg
ICBzZWxmLnF1ZXVlID0gcGFja2V0LmxpbmsKKyAgICAgICAgaWYgc2VsZi5xdWV1ZSA9PSBuaWwg
eworICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IC5ydW4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNlbGYuc3RhdGUgPSAucnVuV2l0aFBhY2tldAorICAgICAgICB9CisgICAgICAgIHJl
dHVybiBwYWNrZXQKKyAgICB9CisKKyAgICBmdW5jIGNoZWNrUHJpb3JpdHlBZGQodGFzazogVGFz
aywgcGFja2V0OiBQYWNrZXQpIC0+IFRhc2sKKyAgICB7CisgICAgICAgIGlmIHNlbGYucXVldWUg
PT0gbmlsIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQKKyAgICAgICAgICAgIHNl
bGYuc3RhdGUuaW5zZXJ0KC5oYXNQYWNrZXQpCisgICAgICAgICAgICBpZiBzZWxmLnByaW9yaXR5
ID4gdGFzay5wcmlvcml0eSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQu
YWRkVG8ocXVldWU6IHNlbGYucXVldWUpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhc2sK
KyAgICB9CisKKyAgICBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3Jp
dHksIHF1ZXVlOiBQYWNrZXQ/ID0gbmlsKQorICAgIHsKKyAgICAgICAgc2VsZi5zY2hlZHVsZXIg
PSBzY2hlZHVsZXIKKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5CisgICAgICAgIHNl
bGYucXVldWUgPSBxdWV1ZQorICAgICAgICBpZiBxdWV1ZSAhPSBuaWwgeworICAgICAgICAgICAg
c2VsZi5zdGF0ZS5pbnNlcnQoLmhhc1BhY2tldCkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvV29ya2VyVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9z
dGx5U3dpZnQvV29ya2VyVGFzay5zd2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTc2YjBlNzI1MTBlYWQ3MDU3
ZDM3ZDdkZTBhYjI4YmY2NzY4ODIxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlT
d2lmdC9Xb3JrZXJUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9y
dCBKYXZhU2NyaXB0Q29yZQorCitjbGFzcyBXb3JrZXJUYXNrIDogVGFzayB7CisgICAgcHJpdmF0
ZSB2YXIganMgOiBKU1ZhbHVlCisKKyAgICBwcml2YXRlIHN0YXRpYyBsZXQgY29udGV4dCA6IEpT
Q29udGV4dCA9IHsKKyAgICAgICAgbGV0IGNvbnRleHQgPSBKU0NvbnRleHQoKSEKKyAgICAgICAg
bGV0IHNvdXJjZSA9IHRyeSEgU3RyaW5nKGNvbnRlbnRzT2ZGaWxlOiAicmljaGFyZHMuanMiKQor
ICAgICAgICBjb250ZXh0LmV2YWx1YXRlU2NyaXB0KHNvdXJjZSkKKyAgICAgICAgY29udGV4dC5l
eGNlcHRpb25IYW5kbGVyID0geyBjb250ZXh0LCBleGNlcHRpb24gaW4KKyAgICAgICAgICAgIHBy
aW50KGV4Y2VwdGlvbiEudG9TdHJpbmcoKSEpCisgICAgICAgICAgICBleGl0KDIpCisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQKKyAgICB9KCkKKyAgICBwcml2YXRlIHN0YXRpYyBs
ZXQgY29uc3RydWN0b3IgOiBKU1ZhbHVlID0geworICAgICAgICByZXR1cm4gY29udGV4dC5vYmpl
Y3RGb3JLZXllZFN1YnNjcmlwdCgiY3JlYXRlV29ya2VyVGFzayIpLmNhbGwod2l0aEFyZ3VtZW50
czogW0RldmljZS5BLnJhd1ZhbHVlLCBEZXZpY2UuQi5yYXdWYWx1ZSwgV29ya1BhY2tldC5TSVpF
XSkKKyAgICB9KCkKKworICAgIHN0YXRpYyBmdW5jIGNyZWF0ZShzY2hlZHVsZXI6IFNjaGVkdWxl
ciwgcHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogUGFja2V0KQorICAgIHsKKyAgICAgICAgbGV0
IHRhc2sgPSBXb3JrZXJUYXNrKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3Jp
dHksIHF1ZXVlOiBxdWV1ZSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNrKQorICAg
IH0KKworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAg
ICB7CisgICAgICAgIHJldHVybiBzZWxmLmpzLmludm9rZU1ldGhvZCgicnVuIiwgd2l0aEFyZ3Vt
ZW50czogW3BhY2tldF0pLnRvT2JqZWN0KCkgYXMhIFRhc2s/CisgICAgfQorCisgICAgcHJpdmF0
ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBQ
YWNrZXQpCisgICAgeworICAgICAgICBzZWxmLmpzID0gV29ya2VyVGFzay5jb25zdHJ1Y3Rvci5j
b25zdHJ1Y3Qod2l0aEFyZ3VtZW50czogW3NjaGVkdWxlcl0pCisgICAgICAgIHN1cGVyLmluaXQo
c2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQ
SS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvbWFpbi5zd2lmdCBiL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvbWFpbi5zd2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTc1ODE1ODQwODc4YTdh
ZmY2Y2I1YzA0ZmFjZjY2Yjc5ODAxMmQxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0
bHlTd2lmdC9tYWluLnN3aWZ0CkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBR
dWFydHpDb3JlCisKK2xldCBpdGVyYXRpb25zID0gNTAKK2xldCBzdGFydCA9IENBQ3VycmVudE1l
ZGlhVGltZSgpCitmb3IgXyBpbiAxLi4uaXRlcmF0aW9ucyB7CisgICAgcnVuUmljaGFyZHMoKQor
fQorbGV0IGVuZCA9IENBQ3VycmVudE1lZGlhVGltZSgpCitwcmludChJbnQoKGVuZC1zdGFydCkg
KiAxMDAwKSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQ
SS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9S
aWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNDcxZTVjMTkwMjVh
OGNjNDU2ODNmOGZmZTQyZTg3YTgzOTlkZDUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01v
c3RseVN3aWZ0L3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2Z1bmN0
aW9uIGNyZWF0ZVdvcmtlclRhc2soZGV2aWNlQSwgZGV2aWNlQiwgREFUQV9TSVpFKSB7CisgICAg
cmV0dXJuIGNsYXNzIHsKKyAgICAgICAgY29uc3RydWN0b3Ioc2NoZWR1bGVyKSB7CisgICAgICAg
ICAgICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgICAgICAgICAgIHRoaXMuZGV2aWNl
ID0gZGV2aWNlQTsKKyAgICAgICAgICAgIHRoaXMubGV0dGVySW5kZXggPSAwOworICAgICAgICB9
CisKKyAgICAgICAgcnVuKHBhY2tldCkgeworICAgICAgICAgICAgaWYgKHBhY2tldCA9PSBudWxs
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLndhaXRDdXJyZW50KCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlID0gdGhp
cy5kZXZpY2UgPT09IGRldmljZUEgPyBkZXZpY2VCIDogZGV2aWNlQTsKKyAgICAgICAgICAgICAg
ICBwYWNrZXQuZGV2aWNlID0gdGhpcy5kZXZpY2U7CisgICAgICAgICAgICAgICAgcGFja2V0LnBy
b2Nlc3NlZCA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRBX1NJ
WkU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4Kys7CisgICAg
ICAgICAgICAgICAgICAgIGlmICh0aGlzLmxldHRlckluZGV4ID4gMjYpCisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmxldHRlckluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcGFj
a2V0LmRhdGFbaV0gPSB0aGlzLmxldHRlckluZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaGFuZGxlV2l0aFBhY2tldChwYWNrZXQp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hh
cmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3JpY2hh
cmRzLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMDM1YTkxY2NiN2ZmYTZlOWRmOTI3ZTM4NmJiMDUxYjVi
NWM2NDIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJl
bnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLnN3
aWZ0CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBEYXJ3aW4KKworbGV0IEVY
UEVDVEVEX1FVRVVFX0NPVU5UID0gMjMyMjsKK2xldCBFWFBFQ1RFRF9IT0xEX0NPVU5UID0gOTI4
OworCitmdW5jIHJ1blJpY2hhcmRzKCkKK3sKKyAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlcigp
CisKKyAgSWRsZVRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogLklk
bGUpCisKKyAgKHsKKyAgICAgIHZhciBxdWV1ZSA9IFdvcmtQYWNrZXQobGluazogbmlsKQorICAg
ICAgcXVldWUgPSBXb3JrUGFja2V0KGxpbms6IHF1ZXVlKQorICAgICAgV29ya2VyVGFzay5jcmVh
dGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0eS5Xb3JrZXIsIHF1ZXVl
OiBxdWV1ZSkKKyAgfSkoKQorCisgICh7CisgICAgICB2YXIgcXVldWUgPSBEZXZpY2VQYWNrZXQo
ZGV2aWNlOiAuQSwgbGluazogbmlsKQorICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNl
OiAuQSwgbGluazogcXVldWUpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5B
LCBsaW5rOiBxdWV1ZSkKKyAgICAgIEhhbmRsZXJUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVk
dWxlciwgZGV2aWNlOiAuQSwgcHJpb3JpdHk6IFByaW9yaXR5LkhhbmRsZXJBLCBxdWV1ZTogcXVl
dWUpCisgIH0pKCkKKworICAoeworICAgICAgdmFyIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmlj
ZTogLkIsIGxpbms6IG5pbCkKKyAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmljZTogLkIs
IGxpbms6IHF1ZXVlKQorICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQiwgbGlu
azogcXVldWUpCisgICAgICBIYW5kbGVyVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIs
IGRldmljZTogLkIsIHByaW9yaXR5OiBQcmlvcml0eS5IYW5kbGVyQiwgcXVldWU6IHF1ZXVlKQor
ICB9KSgpCisKKyAgRGV2aWNlVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmlj
ZTogLkEsIHByaW9yaXR5OiBQcmlvcml0eS5EZXZpY2VBKQorICBEZXZpY2VUYXNrLmNyZWF0ZShz
Y2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQiwgcHJpb3JpdHk6IFByaW9yaXR5LkRldmlj
ZUIpCisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCkKKworICBpZiBzY2hlZHVsZXIucXVldWVDb3Vu
dCAhPSBFWFBFQ1RFRF9RVUVVRV9DT1VOVCB8fCBzY2hlZHVsZXIuaG9sZENvdW50ICE9IEVYUEVD
VEVEX0hPTERfQ09VTlQgeworICAgIHByaW50KCJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1
ZUNvdW50ID0gXChzY2hlZHVsZXIucXVldWVDb3VudCksIGhvbGRDb3VudCA9IFwoc2NoZWR1bGVy
LmhvbGRDb3VudCkuIikKKyAgICBleGl0KDEpCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc1NvbWVDL1JpY2hhcmRzU29tZUMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3Vy
cmVudEFQSS9SaWNoYXJkc1NvbWVDL1JpY2hhcmRzU29tZUMueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNTRiOTE5NzRjOWJmZjhlN2I1YTUyNWFjMTk1OTZmNjIyZTE3ZDdm
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJ
L1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0wLDAgKzEsMjkwIEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOwor
CWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKwor
LyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMTgyNDk5QTQxNDAwNUJC
MkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi87IH07
CisJCTE0MzZCMjMyMjUxQzBENEIwMDZBRTY5NSAvKiBtYWluLm0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDM2QjIzMTI1MUMwRDRBMDA2QUU2OTUgLyog
bWFpbi5tICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDAxMTgxNjI0OTk4NTE3MDAz
OTg3QTkgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9ICIiOworCQkJZHN0U3Vi
Zm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJMTQxNUFEMTgyNDk5QTQxNDAwNUJC
MkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCisJCTE0MDExODE4MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVDICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJkc1NvbWVDOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNDE1QUQxNjI0OTk4NjA1MDA1
QkIyRTQgLyogcmljaGFyZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSByaWNoYXJkcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzNkIyMzEy
NTFDMEQ0QTAwNkFFNjk1IC8qIG1haW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBw
YXRoID0gbWFpbi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVS
ZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCisJCTE0MDExODE1MjQ5OTg1MTcwMDM5ODdBOSAvKiBGcmFtZXdvcmtzICovID0g
eworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0MDExODBG
MjQ5OTg1MTcwMDM5ODdBOSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMTQwMTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZUMgKi8sCisJCQkJ
MTQwMTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQ
cm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZUMgKi8sCisJCQkpOworCQkJ
bmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQw
MTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZUMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MzZCMjMxMjUxQzBENEEwMDZBRTY5NSAv
KiBtYWluLm0gKi8sCisJCQkJMTQxNUFEMTYyNDk5ODYwNTAwNUJCMkU0IC8qIHJpY2hhcmRzLmpz
ICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc1NvbWVDOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSAvKiBS
aWNoYXJkc1NvbWVDICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0MDExODFGMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNTb21lQyIgKi87CisJ
CQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDAxMTgxNDI0OTk4NTE3MDAzOTg3QTkgLyogU291cmNl
cyAqLywKKwkJCQkxNDAxMTgxNTI0OTk4NTE3MDAzOTg3QTkgLyogRnJhbWV3b3JrcyAqLywKKwkJ
CQkxNDAxMTgxNjI0OTk4NTE3MDAzOTg3QTkgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1
aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUg
PSBSaWNoYXJkc1NvbWVDOworCQkJcHJvZHVjdE5hbWUgPSBSaWNoYXJkc1NvbWVDOworCQkJcHJv
ZHVjdFJlZmVyZW5jZSA9IDE0MDExODE4MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVD
ICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJ
fTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9q
ZWN0IHNlY3Rpb24gKi8KKwkJMTQwMTE4MTAyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2plY3Qgb2Jq
ZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJ
TGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAxMjAwOworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMjAw
OworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCTE0MDExODE3MjQ5OTg1MTcwMDM5ODdB
OSA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEyLjA7CisJCQkJCX07CisJCQkJ
fTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQwMTE4MTMyNDk5ODUxNzAw
Mzk4N0E5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFy
ZHNTb21lQyIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSA5LjMiOworCQkJ
ZGV2ZWxvcG1lbnRSZWdpb24gPSBlbjsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOwor
CQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJCUJhc2UsCisJCQkpOworCQkJbWFpbkdy
b3VwID0gMTQwMTE4MEYyNDk5ODUxNzAwMzk4N0E5OworCQkJcHJvZHVjdFJlZkdyb3VwID0gMTQw
MTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGgg
PSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTE0MDExODE3
MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVDICovLAorCQkJKTsKKwkJfTsKKy8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkxNDAxMTgxNDI0OTk4NTE3MDAzOTg3QTkgLyogU291cmNlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0MzZCMjMyMjUxQzBENEIwMDZBRTY5NSAvKiBt
YWluLm0gaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQwMTE4
MUQyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9Q
QVRIUyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdf
QU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJ
Q0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9M
SUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJ
Q0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9D
T01NQSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5H
X1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZ
X0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRf
Q09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVS
U0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FV
T1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9S
QU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQ
RVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xB
TkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FU
RV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURF
QlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19N
U0dTRU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwor
CQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVW
RUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJV
Rz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FSTl82NF9UT18z
Ml9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9
IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJ
CUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0Nf
V0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxF
ID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9F
TkFCTEVfREVCVUdfSU5GTyA9IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNUX01BVEggPSBZ
RVM7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVNXSUZUX0FDVElWRV9DT01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7CisJCQkJU1dJ
RlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVn
OworCQl9OworCQkxNDAxMTgxRTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlB
TFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxM
ID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlF
U19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0
IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9N
T0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFO
R19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9B
VVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9D
T05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVO
VEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlF
U19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05W
RVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05f
TElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJ
Q0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZF
UlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7
CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19N
T1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19B
R0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1k
c3ltIjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJMRV9TVFJJQ1Rf
T0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7
CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZ
RVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlH
Q0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dB
Uk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9
IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5B
QkxFX0RFQlVHX0lORk8gPSBOTzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCVNES1JP
T1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xlbW9kdWxlOwor
CQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJbmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTE0MDExODIwMjQ5OTg1MTcwMDM5ODdBOSAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFS
R0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJMTQwMTE4MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRB
UkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0g
UmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDAxMTgxMzI0OTk4
NTE3MDAzOTg3QTkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJS
aWNoYXJkc1NvbWVDIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MDExODFEMjQ5OTg1MTcwMDM5ODdBOSAvKiBE
ZWJ1ZyAqLywKKwkJCQkxNDAxMTgxRTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDAxMTgxRjI0OTk4NTE3MDAzOTg3
QTkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hh
cmRzU29tZUMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQwMTE4MjAyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVn
ICovLAorCQkJCTE0MDExODIxMjQ5OTg1MTcwMDM5ODdBOSAvKiBSZWxlYXNlICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBz
ZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gMTQwMTE4MTAyNDk5ODUxNzAwMzk4N0E5IC8q
IFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy9tYWluLm0gYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lQy9SaWNoYXJkc1Nv
bWVDL21haW4ubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzJkYmIyMDQzN2MzMTE1NTcxYzRjYzVjNTViNmJmYjk5
NGEyNmYxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy9tYWluLm0KQEAgLTAsMCArMSwxODUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZS5oPgorCitzdGF0aWMgdW5zaWduZWQgSURfSEFORExFUl9BID0gMjsKK3N0YXRp
YyB1bnNpZ25lZCBJRF9IQU5ETEVSX0IgPSAzOworc3RhdGljIHVuc2lnbmVkIERBVEFfU0laRSA9
IDQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBKU09iamVjdFJlZiBzY2hlZHVsZXI7CisgICAg
aW50IHYxOworICAgIGludCB2MjsKK30gV29ya2VyVGFzazsKKworSlNWYWx1ZVJlZiBXb3JrZXJU
YXNrX3J1bihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3Vu
dCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIAor
ICAgIEpTVmFsdWVSZWYgZW1wdHkgPSBOVUxMOworICAgIGlmICghZXhjZXB0aW9uKQorICAgICAg
ICBleGNlcHRpb24gPSAmZW1wdHk7CisgICAgZWxzZQorICAgICAgICAqZXhjZXB0aW9uID0gZW1w
dHk7CisgICAgSlNWYWx1ZVJlZiBwYWNrZXRWYWx1ZSA9IGFyZ3VtZW50c1swXTsKKyAgICAKKyAg
ICBXb3JrZXJUYXNrKiB0YXNrID0gSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpOworICAg
IGlmIChKU1ZhbHVlSXNVbmRlZmluZWQoY3R4LCBwYWNrZXRWYWx1ZSkgfHwgSlNWYWx1ZUlzTnVs
bChjdHgsIHBhY2tldFZhbHVlKSkgeworICAgICAgICBKU1N0cmluZ1JlZiBzdXNwZW5kQ3VycmVu
dFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJzdXNwZW5kQ3VycmVudCIp
OworICAgICAgICBKU1ZhbHVlUmVmIHN1c3BlbmRDdXJyZW50VmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5KGN0eCwgdGFzay0+c2NoZWR1bGVyLCBzdXNwZW5kQ3VycmVudFN0cmluZywgZXhjZXB0
aW9uKTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHN1c3BlbmRDdXJyZW50U3RyaW5nKTsKKyAg
ICAgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY3R4KTsKKyAgICAgICAgSlNPYmplY3RSZWYgc3VzcGVuZEN1cnJlbnRPYmplY3QgPSBK
U1ZhbHVlVG9PYmplY3QoY3R4LCBzdXNwZW5kQ3VycmVudFZhbHVlLCBleGNlcHRpb24pOworICAg
ICAgICBpZiAoKmV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOworICAgICAgICByZXR1cm4gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjdHgsIHN1
c3BlbmRDdXJyZW50T2JqZWN0LCB0YXNrLT5zY2hlZHVsZXIsIDAsIE5VTEwsIGV4Y2VwdGlvbik7
CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0UmVmIHBhY2tldE9iamVjdCA9IEpTVmFsdWVUb09i
amVjdChjdHgsIHBhY2tldFZhbHVlLCBleGNlcHRpb24pOworICAgIGlmICgqZXhjZXB0aW9uKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIHRhc2stPnYx
ID0gSURfSEFORExFUl9BICsgSURfSEFORExFUl9CIC0gdGFzay0+djE7CisgICAgCisgICAgSlNT
dHJpbmdSZWYgaWRTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiaWQiKTsK
KyAgICBKU09iamVjdFNldFByb3BlcnR5KGN0eCwgcGFja2V0T2JqZWN0LCBpZFN0cmluZywgSlNW
YWx1ZU1ha2VOdW1iZXIoY3R4LCB0YXNrLT52MSksIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwg
ZXhjZXB0aW9uKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UoaWRTdHJpbmcpOworICAgIGlmICgqZXhj
ZXB0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKyAgICAK
KyAgICBKU1N0cmluZ1JlZiBhMVN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJhMSIpOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY3R4LCBwYWNrZXRPYmplY3QsIGExU3Ry
aW5nLCBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIDApLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUs
IGV4Y2VwdGlvbik7CisgICAgSlNTdHJpbmdSZWxlYXNlKGExU3RyaW5nKTsKKyAgICBpZiAoKmV4
Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAg
ICBKU1N0cmluZ1JlZiBhMlN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJh
MiIpOworICAgIEpTVmFsdWVSZWYgYTJWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY3R4LCBw
YWNrZXRPYmplY3QsIGEyU3RyaW5nLCBleGNlcHRpb24pOworICAgIEpTU3RyaW5nUmVsZWFzZShh
MlN0cmluZyk7CisgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjdHgpOworICAgIEpTT2JqZWN0UmVmIGEyT2JqZWN0ID0gSlNWYWx1ZVRvT2Jq
ZWN0KGN0eCwgYTJWYWx1ZSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoKmV4Y2VwdGlvbikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IERBVEFfU0laRTsgKytpKSB7CisgICAgICAgIGlmICgrK3Rhc2stPnYy
ID4gMjYpCisgICAgICAgICAgICB0YXNrLT52MiA9IDE7CisgICAgICAgIEpTT2JqZWN0U2V0UHJv
cGVydHlBdEluZGV4KGN0eCwgYTJPYmplY3QsIGksIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgdGFz
ay0+djIpLCBleGNlcHRpb24pOworICAgICAgICBpZiAoKmV4Y2VwdGlvbikKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIH0KKyAgICAKKyAgICBKU1N0
cmluZ1JlZiBxdWV1ZVN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJxdWV1
ZSIpOworICAgIEpTVmFsdWVSZWYgcXVldWVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY3R4
LCB0YXNrLT5zY2hlZHVsZXIsIHF1ZXVlU3RyaW5nLCBleGNlcHRpb24pOworICAgIEpTU3RyaW5n
UmVsZWFzZShxdWV1ZVN0cmluZyk7CisgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIEpTT2JqZWN0UmVmIHF1ZXVlT2JqZWN0
ID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcXVldWVWYWx1ZSwgZXhjZXB0aW9uKTsKKyAgICBpZiAo
KmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cisg
ICAgSlNWYWx1ZVJlZiBxdWV1ZUFyZ3VtZW50c1tdID0geyBwYWNrZXRWYWx1ZSB9OworICAgIHJl
dHVybiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGN0eCwgcXVldWVPYmplY3QsIHRhc2stPnNjaGVk
dWxlciwgMSwgcXVldWVBcmd1bWVudHMsIGV4Y2VwdGlvbik7Cit9CisKK0pTQ2xhc3NSZWYgd29y
a2VyVGFza0NsYXNzOworCitKU09iamVjdFJlZiBXb3JrZXJUYXNrX2NvbnN0cnVjdG9yKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yLCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIFdvcmtlclRhc2sqIHRhc2sgPSAoV29ya2VyVGFzayopbWFsbG9jKHNpemVvZihXb3Jr
ZXJUYXNrKSk7CisgICAgdGFzay0+c2NoZWR1bGVyID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgYXJn
dW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgIHRhc2stPnYxID0gSlNWYWx1ZVRvTnVtYmVyKGN0
eCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pOworICAgIHRhc2stPnYyID0gSlNWYWx1ZVRvTnVt
YmVyKGN0eCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pOworICAgIHJldHVybiBKU09iamVjdE1h
a2UoY3R4LCB3b3JrZXJUYXNrQ2xhc3MsIHRhc2spOworfQorCitKU1ZhbHVlUmVmIFdvcmtlclRh
c2tfZ2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0
cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAo
SlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhwcm9wZXJ0eU5hbWUsICJydW4iKSkKKyAgICAg
ICAgcmV0dXJuIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGN0eCwgcHJvcGVydHlO
YW1lLCBXb3JrZXJUYXNrX3J1bik7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7Cit9CisKK2ludCBtYWluKCkKK3sKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9
IEpTR2xvYmFsQ29udGV4dENyZWF0ZShOVUxMKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAg
IGV4aXQoMSk7CisgICAgCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBOVUxMOworICAgIEpT
T2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0
KTsKKyAgICAKKyAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZp
bml0aW9uRW1wdHk7CisgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSAiV29ya2VyVGFzayI7Cisg
ICAgZGVmaW5pdGlvbi5jYWxsQXNDb25zdHJ1Y3RvciA9IFdvcmtlclRhc2tfY29uc3RydWN0b3I7
CisgICAgZGVmaW5pdGlvbi5nZXRQcm9wZXJ0eSA9IFdvcmtlclRhc2tfZ2V0UHJvcGVydHk7Cisg
ICAgd29ya2VyVGFza0NsYXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7CisgICAgSlNP
YmplY3RSZWYgd29ya2VyVGFza09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCB3b3JrZXJU
YXNrQ2xhc3MsICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIGV4aXQo
MSk7CisgICAgCisgICAgSlNTdHJpbmdSZWYgd29ya2VyVGFza1N0cmluZyA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJXb3JrZXJUYXNrIik7CisgICAgCisgICAgSlNPYmplY3RTZXRQ
cm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHdvcmtlclRhc2tTdHJpbmcsIHdvcmtlclRh
c2tPYmplY3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgJmV4Y2VwdGlvbik7CisgICAgSlNT
dHJpbmdSZWxlYXNlKHdvcmtlclRhc2tTdHJpbmcpOworICAgIGlmIChleGNlcHRpb24pCisgICAg
ICAgIGV4aXQoMSk7CisgICAgCisgICAgSlNDbGFzc1JlbGVhc2Uod29ya2VyVGFza0NsYXNzKTsK
KworICAgIE5TU3RyaW5nKiBzb3VyY2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZG
aWxlOkAicmljaGFyZHMuanMiIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5p
bF07CisgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoc291cmNlLlVURjhTdHJpbmcpOworICAgIEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2Ny
aXB0LCBOVUxMLCBOVUxMLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKQorICAg
ICAgICBleGl0KDEpOworICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHQpOworCisgICAgdW5zaWdu
ZWQgaXRlcmF0aW9ucyA9IDUwOworICAgIENGVGltZUludGVydmFsIHN0YXJ0ID0gQ0FDdXJyZW50
TWVkaWFUaW1lKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBpdGVyYXRpb25zOyAr
K2kpIHsKKyAgICAgICAgSlNTdHJpbmdSZWYgcnVuUmljaGFyZHNTdHJpbmcgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygicnVuUmljaGFyZHMiKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBy
dW5uZXIgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVjdCwgcnVuUmlj
aGFyZHNTdHJpbmcsICZleGNlcHRpb24pOworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAg
ICAgICAgZXhpdCgxKTsKKyAgICAgICAgSlNPYmplY3RSZWYgcnVubmVyT2JqZWN0ID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIHJ1bm5lciwgJmV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNl
cHRpb24pCisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0
aW9uKGNvbnRleHQsIHJ1bm5lck9iamVjdCwgZ2xvYmFsT2JqZWN0LCAwLCBOVUxMLCAmZXhjZXB0
aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAg
ICAgIEpTU3RyaW5nUmVsZWFzZShydW5SaWNoYXJkc1N0cmluZyk7CisgICAgfQorICAgIENGVGlt
ZUludGVydmFsIGVuZCA9IENBQ3VycmVudE1lZGlhVGltZSgpOworICAgIHByaW50ZigiJWRcbiIs
IChpbnQpKChlbmQtc3RhcnQpICogMTAwMCkpOworICAgIAorICAgIEpTR2xvYmFsQ29udGV4dFJl
bGVhc2UoY29udGV4dCk7CisKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZUMvUmlj
aGFyZHNTb21lQy9yaWNoYXJkcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVu
dEFQSS9SaWNoYXJkc1NvbWVDL1JpY2hhcmRzU29tZUMvcmljaGFyZHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Yzk1NzNkOWFmNDQwZmRhM2M5ZTZhNjZhOWU3MWE1ZDhmMzlkM2Y4NAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc1NvbWVDL1Jp
Y2hhcmRzU29tZUMvcmljaGFyZHMuanMKQEAgLTAsMCArMSw0OTcgQEAKKy8vIENvcHlyaWdodCAy
MDA2LTIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisv
LyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8v
ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRoaXMgaXMgYSBKYXZhU2NyaXB0IGltcGxlbWVudGF0
aW9uIG9mIHRoZSBSaWNoYXJkcworLy8gYmVuY2htYXJrIGZyb206CisvLworLy8gICAgaHR0cDov
L3d3dy5jbC5jYW0uYWMudWsvfm1yMTAvQmVuY2guaHRtbAorLy8KKy8vIFRoZSBiZW5jaG1hcmsg
d2FzIG9yaWdpbmFsbHkgaW1wbGVtZW50ZWQgaW4gQkNQTCBieQorLy8gTWFydGluIFJpY2hhcmRz
LgorCisKKy8qKgorICogVGhlIFJpY2hhcmRzIGJlbmNobWFyayBzaW11bGF0ZXMgdGhlIHRhc2sg
ZGlzcGF0Y2hlciBvZiBhbgorICogb3BlcmF0aW5nIHN5c3RlbS4KKyAqKi8KK2Z1bmN0aW9uIHJ1
blJpY2hhcmRzKCkgeworICB2YXIgc2NoZWR1bGVyID0gbmV3IFNjaGVkdWxlcigpOworICBzY2hl
ZHVsZXIuYWRkSWRsZVRhc2soSURfSURMRSwgMCwgbnVsbCwgQ09VTlQpOworCisgIHZhciBxdWV1
ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfV09SS0VSLCBLSU5EX1dPUkspOworICBxdWV1ZSA9IG5l
dyBQYWNrZXQocXVldWUsICBJRF9XT1JLRVIsIEtJTkRfV09SSyk7CisgIHNjaGVkdWxlci5hZGRX
b3JrZXJUYXNrKElEX1dPUktFUiwgMTAwMCwgcXVldWUpOworCisgIHF1ZXVlID0gbmV3IFBhY2tl
dChudWxsLCBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQo
cXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQo
cXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBzY2hlZHVsZXIuYWRkSGFuZGxl
clRhc2soSURfSEFORExFUl9BLCAyMDAwLCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0
KG51bGwsIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChx
dWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChx
dWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVy
VGFzayhJRF9IQU5ETEVSX0IsIDMwMDAsIHF1ZXVlKTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNl
VGFzayhJRF9ERVZJQ0VfQSwgNDAwMCwgbnVsbCk7CisKKyAgc2NoZWR1bGVyLmFkZERldmljZVRh
c2soSURfREVWSUNFX0IsIDUwMDAsIG51bGwpOworCisgIHNjaGVkdWxlci5zY2hlZHVsZSgpOwor
CisgIGlmIChzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9RVUVVRV9DT1VOVCB8fAor
ICAgICAgc2NoZWR1bGVyLmhvbGRDb3VudCAhPSBFWFBFQ1RFRF9IT0xEX0NPVU5UKSB7CisgICAg
dmFyIG1zZyA9CisgICAgICAgICJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50ID0g
IiArIHNjaGVkdWxlci5xdWV1ZUNvdW50ICsKKyAgICAgICAgIiwgaG9sZENvdW50ID0gIiArIHNj
aGVkdWxlci5ob2xkQ291bnQgKyAiLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7CisgIH0K
K30KKwordmFyIENPVU5UID0gMTAwMDsKKworLyoqCisgKiBUaGVzZSB0d28gY29uc3RhbnRzIHNw
ZWNpZnkgaG93IG1hbnkgdGltZXMgYSBwYWNrZXQgaXMgcXVldWVkIGFuZAorICogaG93IG1hbnkg
dGltZXMgYSB0YXNrIGlzIHB1dCBvbiBob2xkIGluIGEgY29ycmVjdCBydW4gb2YgcmljaGFyZHMu
CisgKiBUaGV5IGRvbid0IGhhdmUgYW55IG1lYW5pbmcgYSBzdWNoIGJ1dCBhcmUgY2hhcmFjdGVy
aXN0aWMgb2YgYQorICogY29ycmVjdCBydW4gc28gaWYgdGhlIGFjdHVhbCBxdWV1ZSBvciBob2xk
IGNvdW50IGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgZXhwZWN0ZWQgdGhlcmUgbXVzdCBiZSBh
IGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisgKiovCit2YXIgRVhQRUNURURfUVVFVUVfQ09V
TlQgPSAyMzIyOwordmFyIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKKworLyoqCisgKiBB
IHNjaGVkdWxlciBjYW4gYmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBvZiB0YXNrcyBiYXNlZCBv
biB0aGVpciByZWxhdGl2ZQorICogcHJpb3JpdGllcy4gIFNjaGVkdWxpbmcgaXMgZG9uZSBieSBt
YWludGFpbmluZyBhIGxpc3Qgb2YgdGFzayBjb250cm9sIGJsb2NrcworICogd2hpY2ggaG9sZHMg
dGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisgKiBAY29uc3Ry
dWN0b3IKKyAqLworZnVuY3Rpb24gU2NoZWR1bGVyKCkgeworICB0aGlzLnF1ZXVlQ291bnQgPSAw
OworICB0aGlzLmhvbGRDb3VudCA9IDA7CisgIHRoaXMuYmxvY2tzID0gbmV3IEFycmF5KE5VTUJF
Ul9PRl9JRFMpOworICB0aGlzLmxpc3QgPSBudWxsOworICB0aGlzLmN1cnJlbnRUY2IgPSBudWxs
OworICB0aGlzLmN1cnJlbnRJZCA9IG51bGw7Cit9CisKK3ZhciBJRF9JRExFICAgICAgID0gMDsK
K3ZhciBJRF9XT1JLRVIgICAgID0gMTsKK3ZhciBJRF9IQU5ETEVSX0EgID0gMjsKK3ZhciBJRF9I
QU5ETEVSX0IgID0gMzsKK3ZhciBJRF9ERVZJQ0VfQSAgID0gNDsKK3ZhciBJRF9ERVZJQ0VfQiAg
ID0gNTsKK3ZhciBOVU1CRVJfT0ZfSURTID0gNjsKKwordmFyIEtJTkRfREVWSUNFICAgPSAwOwor
dmFyIEtJTkRfV09SSyAgICAgPSAxOworCisvKioKKyAqIEFkZCBhbiBpZGxlIHRhc2sgdG8gdGhp
cyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNr
CisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFt
IHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUg
dGFzaworICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgdG8gc2NoZWR1
bGUgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRJZGxlVGFzayA9IGZ1bmN0
aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCBjb3VudCkgeworICB0aGlzLmFkZFJ1bm5pbmdUYXNr
KGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBJZGxlVGFzayh0aGlzLCAxLCBjb3VudCkpOworfTsK
KworLyoqCisgKiBBZGQgYSB3b3JrIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0g
e2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3Jp
dHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1
ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJv
dG90eXBlLmFkZFdvcmtlclRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgewor
ICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IFdvcmtlclRhc2sodGhpcywg
SURfSEFORExFUl9BLCAwKSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhhbmRsZXIgdGFzayB0byB0
aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRh
c2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFy
YW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRo
ZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkSGFuZGxlclRhc2sgPSBmdW5jdGlv
biAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBx
dWV1ZSwgbmV3IEhhbmRsZXJUYXNrKHRoaXMpKTsKK307CisKKy8qKgorICogQWRkIGEgaGFuZGxl
ciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0
eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3Jp
dHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9j
ZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGREZXZpY2VUYXNr
ID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhpcy5hZGRUYXNrKGlkLCBw
cmlvcml0eSwgcXVldWUsIG5ldyBEZXZpY2VUYXNrKHRoaXMpKQorfTsKKworLyoqCisgKiBBZGQg
dGhlIHNwZWNpZmllZCB0YXNrIGFuZCBtYXJrIGl0IGFzIHJ1bm5pbmcuCisgKiBAcGFyYW0ge2lu
dH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkg
dGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBv
ZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNr
IHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdUYXNr
ID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5hZGRUYXNr
KGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlzLmN1cnJlbnRUY2Iuc2V0UnVubmlu
ZygpOworfTsKKworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIHRvIHRoaXMgc2NoZWR1
bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBh
cmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0
fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAq
IEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzayB0byBhZGQKKyAqLworU2NoZWR1bGVyLnByb3Rv
dHlwZS5hZGRUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAg
dGhpcy5jdXJyZW50VGNiID0gbmV3IFRhc2tDb250cm9sQmxvY2sodGhpcy5saXN0LCBpZCwgcHJp
b3JpdHksIHF1ZXVlLCB0YXNrKTsKKyAgdGhpcy5saXN0ID0gdGhpcy5jdXJyZW50VGNiOworICB0
aGlzLmJsb2Nrc1tpZF0gPSB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisvKioKKyAqIEV4ZWN1dGUg
dGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgKi8KK1NjaGVkdWxlci5wcm90
b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMu
bGlzdDsKKyAgd2hpbGUgKHRoaXMuY3VycmVudFRjYiAhPSBudWxsKSB7CisgICAgaWYgKHRoaXMu
Y3VycmVudFRjYi5pc0hlbGRPclN1c3BlbmRlZCgpKSB7CisgICAgICB0aGlzLmN1cnJlbnRUY2Ig
PSB0aGlzLmN1cnJlbnRUY2IubGluazsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5jdXJyZW50
SWQgPSB0aGlzLmN1cnJlbnRUY2IuaWQ7CisgICAgICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmN1
cnJlbnRUY2IucnVuKCk7CisgICAgfQorICB9Cit9OworCisvKioKKyAqIFJlbGVhc2UgYSB0YXNr
IHRoYXQgaXMgY3VycmVudGx5IGJsb2NrZWQgYW5kIHJldHVybiB0aGUgbmV4dCBibG9jayB0byBy
dW4uCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoZSB0YXNrIHRvIHN1c3BlbmQKKyAq
LworU2NoZWR1bGVyLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24gKGlkKSB7CisgIHZhciB0
Y2IgPSB0aGlzLmJsb2Nrc1tpZF07CisgIGlmICh0Y2IgPT0gbnVsbCkgcmV0dXJuIHRjYjsKKyAg
dGNiLm1hcmtBc05vdEhlbGQoKTsKKyAgaWYgKHRjYi5wcmlvcml0eSA+IHRoaXMuY3VycmVudFRj
Yi5wcmlvcml0eSkgeworICAgIHJldHVybiB0Y2I7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHRo
aXMuY3VycmVudFRjYjsKKyAgfQorfTsKKworLyoqCisgKiBCbG9jayB0aGUgY3VycmVudGx5IGV4
ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJsb2NrCisgKiB0
byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdpbGwgbm90IGJlIG1hZGUgcnVubmFibGUgdW50aWwg
aXQgaXMgZXhwbGljaXRseQorICogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQg
dG8gaXQuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuaG9sZEN1cnJlbnQgPSBmdW5jdGlvbiAo
KSB7CisgIHRoaXMuaG9sZENvdW50Kys7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNIZWxkKCk7
CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2IubGluazsKK307CisKKy8qKgorICogU3VzcGVuZCB0
aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250
cm9sIGJsb2NrCisgKiB0byBydW4uICBJZiBuZXcgd29yayBpcyBhZGRlZCB0byB0aGUgc3VzcGVu
ZGVkIHRhc2sgaXQgd2lsbCBiZSBtYWRlIHJ1bm5hYmxlLgorICovCitTY2hlZHVsZXIucHJvdG90
eXBlLnN1c3BlbmRDdXJyZW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmN1cnJlbnRUY2IubWFy
a0FzU3VzcGVuZGVkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisvKioKKyAq
IEFkZCB0aGUgc3BlY2lmaWVkIHBhY2tldCB0byB0aGUgZW5kIG9mIHRoZSB3b3JrbGlzdCB1c2Vk
IGJ5IHRoZSB0YXNrCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldCBhbmQgbWFrZSB0aGUg
dGFzayBydW5uYWJsZSBpZiBpdCBpcyBjdXJyZW50bHkKKyAqIHN1c3BlbmRlZC4KKyAqIEBwYXJh
bSB7UGFja2V0fSBwYWNrZXQgdGhlIHBhY2tldCB0byBhZGQKKyAqLworU2NoZWR1bGVyLnByb3Rv
dHlwZS5xdWV1ZSA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdmFyIHQgPSB0aGlzLmJsb2Nrc1tw
YWNrZXQuaWRdOworICBpZiAodCA9PSBudWxsKSByZXR1cm4gdDsKKyAgdGhpcy5xdWV1ZUNvdW50
Kys7CisgIHBhY2tldC5saW5rID0gbnVsbDsKKyAgcGFja2V0LmlkID0gdGhpcy5jdXJyZW50SWQ7
CisgIHJldHVybiB0LmNoZWNrUHJpb3JpdHlBZGQodGhpcy5jdXJyZW50VGNiLCBwYWNrZXQpOwor
fTsKKworLyoqCisgKiBBIHRhc2sgY29udHJvbCBibG9jayBtYW5hZ2VzIGEgdGFzayBhbmQgdGhl
IHF1ZXVlIG9mIHdvcmsgcGFja2FnZXMgYXNzb2NpYXRlZAorICogd2l0aCBpdC4KKyAqIEBwYXJh
bSB7VGFza0NvbnRyb2xCbG9ja30gbGluayB0aGUgcHJlY2VkaW5nIGJsb2NrIGluIHRoZSBsaW5r
ZWQgYmxvY2sgbGlzdAorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBvZiB0aGlzIGJsb2NrCisg
KiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHByaW9yaXR5IG9mIHRoaXMgYmxvY2sKKyAqIEBw
YXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2YgcGFja2FnZXMgdG8gYmUgcHJvY2Vzc2Vk
IGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sKKyAqIEBjb25zdHJ1
Y3RvcgorICovCitmdW5jdGlvbiBUYXNrQ29udHJvbEJsb2NrKGxpbmssIGlkLCBwcmlvcml0eSwg
cXVldWUsIHRhc2spIHsKKyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhpcy5pZCA9IGlkOworICB0
aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7CisgIHRoaXMucXVldWUgPSBxdWV1ZTsKKyAgdGhpcy50
YXNrID0gdGFzazsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHsKKyAgICB0aGlzLnN0YXRlID0gU1RB
VEVfU1VTUEVOREVEOworICB9IGVsc2UgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5E
RURfUlVOTkFCTEU7CisgIH0KK30KKworLyoqCisgKiBUaGUgdGFzayBpcyBydW5uaW5nIGFuZCBp
cyBjdXJyZW50bHkgc2NoZWR1bGVkLgorICovCit2YXIgU1RBVEVfUlVOTklORyA9IDA7CisKKy8q
KgorICogVGhlIHRhc2sgaGFzIHBhY2tldHMgbGVmdCB0byBwcm9jZXNzLgorICovCit2YXIgU1RB
VEVfUlVOTkFCTEUgPSAxOworCisvKioKKyAqIFRoZSB0YXNrIGlzIG5vdCBjdXJyZW50bHkgcnVu
bmluZy4gIFRoZSB0YXNrIGlzIG5vdCBibG9ja2VkIGFzIHN1Y2ggYW5kIG1heQorKiBiZSBzdGFy
dGVkIGJ5IHRoZSBzY2hlZHVsZXIuCisgKi8KK3ZhciBTVEFURV9TVVNQRU5ERUQgPSAyOworCisv
KioKKyAqIFRoZSB0YXNrIGlzIGJsb2NrZWQgYW5kIGNhbm5vdCBiZSBydW4gdW50aWwgaXQgaXMg
ZXhwbGljaXRseSByZWxlYXNlZC4KKyAqLwordmFyIFNUQVRFX0hFTEQgPSA0OworCit2YXIgU1RB
VEVfU1VTUEVOREVEX1JVTk5BQkxFID0gU1RBVEVfU1VTUEVOREVEIHwgU1RBVEVfUlVOTkFCTEU7
Cit2YXIgU1RBVEVfTk9UX0hFTEQgPSB+U1RBVEVfSEVMRDsKKworVGFza0NvbnRyb2xCbG9jay5w
cm90b3R5cGUuc2V0UnVubmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IFNUQVRF
X1JVTk5JTkc7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNOb3RIZWxk
ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSAmIFNUQVRFX05PVF9I
RUxEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzSGVsZCA9IGZ1bmN0
aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9IRUxEOworfTsKKwor
VGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5kZWQgPSBmdW5jdGlvbiAo
KSB7CisgIHJldHVybiAodGhpcy5zdGF0ZSAmIFNUQVRFX0hFTEQpICE9IDAgfHwgKHRoaXMuc3Rh
dGUgPT0gU1RBVEVfU1VTUEVOREVEKTsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBl
Lm1hcmtBc1N1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3Rh
dGUgfCBTVEFURV9TVVNQRU5ERUQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5t
YXJrQXNSdW5uYWJsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUg
fCBTVEFURV9SVU5OQUJMRTsKK307CisKKy8qKgorICogUnVucyB0aGlzIHRhc2ssIGlmIGl0IGlz
IHJlYWR5IHRvIGJlIHJ1biwgYW5kIHJldHVybnMgdGhlIG5leHQgdGFzayB0byBydW4uCisgKi8K
K1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHBh
Y2tldDsKKyAgaWYgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFKSB7Cisg
ICAgcGFja2V0ID0gdGhpcy5xdWV1ZTsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0Lmxpbms7Cisg
ICAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JV
Tk5JTkc7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5OQUJMRTsK
KyAgICB9CisgIH0gZWxzZSB7CisgICAgcGFja2V0ID0gbnVsbDsKKyAgfQorICByZXR1cm4gdGhp
cy50YXNrLnJ1bihwYWNrZXQpOworfTsKKworLyoqCisgKiBBZGRzIGEgcGFja2V0IHRvIHRoZSB3
b3JrbGlzdCBvZiB0aGlzIGJsb2NrJ3MgdGFzaywgbWFya3MgdGhpcyBhcyBydW5uYWJsZSBpZgor
ICogbmVjZXNzYXJ5LCBhbmQgcmV0dXJucyB0aGUgbmV4dCBydW5uYWJsZSBvYmplY3QgdG8gcnVu
ICh0aGUgb25lCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5KS4KKyAqLworVGFza0NvbnRy
b2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlvcml0eUFkZCA9IGZ1bmN0aW9uICh0YXNrLCBwYWNr
ZXQpIHsKKyAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgIHRoaXMucXVldWUgPSBwYWNr
ZXQ7CisgICAgdGhpcy5tYXJrQXNSdW5uYWJsZSgpOworICAgIGlmICh0aGlzLnByaW9yaXR5ID4g
dGFzay5wcmlvcml0eSkgcmV0dXJuIHRoaXM7CisgIH0gZWxzZSB7CisgICAgdGhpcy5xdWV1ZSA9
IHBhY2tldC5hZGRUbyh0aGlzLnF1ZXVlKTsKKyAgfQorICByZXR1cm4gdGFzazsKK307CisKK1Rh
c2tDb250cm9sQmxvY2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1
cm4gInRjYiB7ICIgKyB0aGlzLnRhc2sgKyAiQCIgKyB0aGlzLnN0YXRlICsgIiB9IjsKK307CisK
Ky8qKgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsgaXRzZWxmIGJ1dCBjeWNs
ZXMgY29udHJvbCBiZXR3ZWVuIHRoZSB0d28KKyAqIGRldmljZSB0YXNrcy4KKyAqIEBwYXJhbSB7
U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNr
CisgKiBAcGFyYW0ge2ludH0gdjEgYSBzZWVkIHZhbHVlIHRoYXQgY29udHJvbHMgaG93IHRoZSBk
ZXZpY2UgdGFza3MgYXJlIHNjaGVkdWxlZAorICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBudW1i
ZXIgb2YgdGltZXMgdGhpcyB0YXNrIHNob3VsZCBiZSBzY2hlZHVsZWQKKyAqIEBjb25zdHJ1Y3Rv
cgorICovCitmdW5jdGlvbiBJZGxlVGFzayhzY2hlZHVsZXIsIHYxLCBjb3VudCkgeworICB0aGlz
LnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOworICB0aGlzLmNvdW50ID0g
Y291bnQ7Cit9CisKK0lkbGVUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7
CisgIHRoaXMuY291bnQtLTsKKyAgaWYgKHRoaXMuY291bnQgPT0gMCkgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIGlmICgodGhpcy52MSAmIDEpID09IDApIHsKKyAgICB0
aGlzLnYxID0gdGhpcy52MSA+PiAxOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5yZWxlYXNl
KElEX0RFVklDRV9BKTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0gKHRoaXMudjEgPj4gMSkg
XiAweEQwMDg7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0Ip
OworICB9Cit9OworCitJZGxlVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiAiSWRsZVRhc2siCit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3BlbmRz
IGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3
YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICogQHBhcmFtIHtTY2hl
ZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAq
IEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBEZXZpY2VUYXNrKHNjaGVkdWxlcikgeworICB0
aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7Cit9CisKK0Rldmlj
ZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBhY2tldCA9
PSBudWxsKSB7CisgICAgaWYgKHRoaXMudjEgPT0gbnVsbCkgcmV0dXJuIHRoaXMuc2NoZWR1bGVy
LnN1c3BlbmRDdXJyZW50KCk7CisgICAgdmFyIHYgPSB0aGlzLnYxOworICAgIHRoaXMudjEgPSBu
dWxsOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgfSBlbHNlIHsKKyAg
ICB0aGlzLnYxID0gcGFja2V0OworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5ob2xkQ3VycmVu
dCgpOworICB9Cit9OworCitEZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9u
ICgpIHsKKyAgcmV0dXJuICJEZXZpY2VUYXNrIjsKK307CisKKy8qKgorICogQSB0YXNrIHRoYXQg
bWFuaXB1bGF0ZXMgd29yayBwYWNrZXRzIGFuZCB0aGVuIHN1c3BlbmRzIGl0c2VsZi4KKyAqIEBw
YXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhp
cyB0YXNrCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gSGFuZGxlclRhc2soc2NoZWR1
bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gbnVsbDsK
KyAgdGhpcy52MiA9IG51bGw7Cit9CisKK0hhbmRsZXJUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5j
dGlvbiAocGFja2V0KSB7CisgIGlmIChwYWNrZXQgIT0gbnVsbCkgeworICAgIGlmIChwYWNrZXQu
a2luZCA9PSBLSU5EX1dPUkspIHsKKyAgICAgIHRoaXMudjEgPSBwYWNrZXQuYWRkVG8odGhpcy52
MSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMudjIgPSBwYWNrZXQuYWRkVG8odGhpcy52Mik7
CisgICAgfQorICB9CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHsKKyAgICB2YXIgY291bnQgPSB0
aGlzLnYxLmExOworICAgIHZhciB2OworICAgIGlmIChjb3VudCA8IERBVEFfU0laRSkgeworICAg
ICAgaWYgKHRoaXMudjIgIT0gbnVsbCkgeworICAgICAgICB2ID0gdGhpcy52MjsKKyAgICAgICAg
dGhpcy52MiA9IHRoaXMudjIubGluazsKKyAgICAgICAgdi5hMSA9IHRoaXMudjEuYTJbY291bnRd
OworICAgICAgICB0aGlzLnYxLmExID0gY291bnQgKyAxOworICAgICAgICByZXR1cm4gdGhpcy5z
Y2hlZHVsZXIucXVldWUodik7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHYgPSB0aGlz
LnYxOworICAgICAgdGhpcy52MSA9IHRoaXMudjEubGluazsKKyAgICAgIHJldHVybiB0aGlzLnNj
aGVkdWxlci5xdWV1ZSh2KTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnN1
c3BlbmRDdXJyZW50KCk7Cit9OworCitIYW5kbGVyVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBm
dW5jdGlvbiAoKSB7CisgIHJldHVybiAiSGFuZGxlclRhc2siOworfTsKKworLyogLS0tICoKKyAq
IFAgYSBjIGsgZSB0CisgKiAtLS0gKi8KKwordmFyIERBVEFfU0laRSA9IDQ7CisKKy8qKgorICog
QSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0ZWQgYnkgdGhlIHRhc2tz
LiAgVGhlIGV4YWN0IGxheW91dAorICogb2YgdGhlIHBheWxvYWQgZGF0YSBjYXJyaWVkIGJ5IGEg
cGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhlciBpcyB0aGUKKyAqIG5hdHVyZSBv
ZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0aGUgdGFza3MuCisgKgorICogQmVz
aWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlua2VkIGxpc3RzIGFuZCBhcmUgaGVu
Y2UgdXNlZCBib3RoIGFzCisgKiBkYXRhIGFuZCB3b3JrbGlzdHMuCisgKiBAcGFyYW0ge1BhY2tl
dH0gbGluayB0aGUgdGFpbCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgcGFja2V0cworICogQHBhcmFt
IHtpbnR9IGlkIGFuIElEIGZvciB0aGlzIHBhY2tldAorICogQHBhcmFtIHtpbnR9IGtpbmQgdGhl
IHR5cGUgb2YgdGhpcyBwYWNrZXQKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBQYWNr
ZXQobGluaywgaWQsIGtpbmQpIHsKKyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhpcy5pZCA9IGlk
OworICB0aGlzLmtpbmQgPSBraW5kOworICB0aGlzLmExID0gMDsKKyAgdGhpcy5hMiA9IG5ldyBB
cnJheShEQVRBX1NJWkUpOworfQorCisvKioKKyAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5k
IG9mIGEgd29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICogQHBhcmFtIHtQYWNr
ZXR9IHF1ZXVlIHRoZSB3b3JrbGlzdCB0byBhZGQgdGhpcyBwYWNrZXQgdG8KKyAqLworUGFja2V0
LnByb3RvdHlwZS5hZGRUbyA9IGZ1bmN0aW9uIChxdWV1ZSkgeworICB0aGlzLmxpbmsgPSBudWxs
OworICBpZiAocXVldWUgPT0gbnVsbCkgcmV0dXJuIHRoaXM7CisgIHZhciBwZWVrLCBuZXh0ID0g
cXVldWU7CisgIHdoaWxlICgocGVlayA9IG5leHQubGluaykgIT0gbnVsbCkKKyAgICBuZXh0ID0g
cGVlazsKKyAgbmV4dC5saW5rID0gdGhpczsKKyAgcmV0dXJuIHF1ZXVlOworfTsKKworUGFja2V0
LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJQYWNrZXQiOwor
fTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNo
YXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc1NvbWVPYmpDL1Jp
Y2hhcmRzU29tZU9iakMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjVk
YTQzYzllODFmNGY0M2JhZDRkY2I4MWI4YzVhOTg2ZWRjM2JiCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZU9iakMvUmlj
aGFyZHNTb21lT2JqQy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjkwIEBA
CisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJ
fTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMTgyNDk5QTQxNDAwNUJCMkU0IC8qIHJpY2hhcmRz
LmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1
QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi87IH07CisJCTE0MzZCMjMyMjUx
QzBENEIwMDZBRTY5NSAvKiBtYWluLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDM2QjIzMTI1MUMwRDRBMDA2QUU2OTUgLyogbWFpbi5tICovOyB9Owor
LyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDAxMTgxNjI0OTk4NTE3MDAzOTg3QTkgLyogQ29weUZp
bGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9ICIiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2
OworCQkJZmlsZXMgPSAoCisJCQkJMTQxNUFEMTgyNDk5QTQxNDAwNUJCMkU0IC8qIHJpY2hhcmRz
LmpzIGluIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTE0MDExODE4
MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVPYmpDICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUi
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJkc1NvbWVPYmpDOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNDE1QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyog
cmljaGFyZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSByaWNo
YXJkcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzNkIyMzEyNTFDMEQ0QTAw
NkFFNjk1IC8qIG1haW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gbWFp
bi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTE0MDExODE1MjQ5OTg1MTcwMDM5ODdBOSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0MDExODBGMjQ5OTg1MTcw
MDM5ODdBOSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQw
MTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZU9iakMgKi8sCisJCQkJMTQwMTE4
MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9kdWN0
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwMTE4
MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZU9iakMgKi8sCisJCQkpOworCQkJbmFt
ZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQwMTE4
MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZU9iakMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MzZCMjMxMjUxQzBENEEwMDZBRTY5NSAv
KiBtYWluLm0gKi8sCisJCQkJMTQxNUFEMTYyNDk5ODYwNTAwNUJCMkU0IC8qIHJpY2hhcmRzLmpz
ICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc1NvbWVPYmpDOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSAv
KiBSaWNoYXJkc1NvbWVPYmpDICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MDExODFGMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNTb21lT2Jq
QyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDAxMTgxNDI0OTk4NTE3MDAzOTg3QTkg
LyogU291cmNlcyAqLywKKwkJCQkxNDAxMTgxNTI0OTk4NTE3MDAzOTg3QTkgLyogRnJhbWV3b3Jr
cyAqLywKKwkJCQkxNDAxMTgxNjI0OTk4NTE3MDAzOTg3QTkgLyogQ29weUZpbGVzICovLAorCQkJ
KTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsK
KwkJCW5hbWUgPSBSaWNoYXJkc1NvbWVPYmpDOworCQkJcHJvZHVjdE5hbWUgPSBSaWNoYXJkc1Nv
bWVPYmpDOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0MDExODE4MjQ5OTg1MTcwMDM5ODdBOSAv
KiBSaWNoYXJkc1NvbWVPYmpDICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJMTQwMTE4MTAyNDk5ODUxNzAwMzk4
N0E5IC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0
dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAxMjAwOworCQkJCUxhc3RV
cGdyYWRlQ2hlY2sgPSAxMjAwOworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCTE0MDEx
ODE3MjQ5OTg1MTcwMDM5ODdBOSA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEy
LjA7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQwMTE4MTMyNDk5ODUxNzAwMzk4N0E5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYUHJvamVjdCAiUmljaGFyZHNTb21lT2JqQyIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lv
biA9ICJYY29kZSA5LjMiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBlbjsKKwkJCWhhc1NjYW5u
ZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJCUJh
c2UsCisJCQkpOworCQkJbWFpbkdyb3VwID0gMTQwMTE4MEYyNDk5ODUxNzAwMzk4N0E5OworCQkJ
cHJvZHVjdFJlZkdyb3VwID0gMTQwMTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICov
OworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJn
ZXRzID0gKAorCQkJCTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVPYmpD
ICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDAxMTgxNDI0OTk4NTE3MDAz
OTg3QTkgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0MzZC
MjMyMjUxQzBENEIwMDZBRTY5NSAvKiBtYWluLm0gaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhT
b3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0
aW9uIHNlY3Rpb24gKi8KKwkJMTQwMTE4MUQyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05P
Tk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9O
ID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdu
dSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5B
QkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJ
CUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBU
VVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04g
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNU
QU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1Q
TEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdF
ID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVN
X0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNf
SU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxf
Q09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19F
UlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJ
T1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0g
WUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOwor
CQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNUQUJJ
TElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdD
Q19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOwor
CQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVG
SU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJ
KTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xB
UkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZ
RVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IElOQ0xVREVfU09VUkNF
OworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsK
KwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0FDVElWRV9DT01QSUxBVElPTl9DT05E
SVRJT05TID0gREVCVUc7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7
CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDAxMTgxRTI0OTk4NTE3MDAzOTg3
QTkgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJ
CQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJF
Ul9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5H
VUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJj
KysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9P
QkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
REVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJ
UkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5U
QVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5G
SU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpD
X1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9J
Tl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFM
WVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFS
REVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFD
SEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENI
ID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElP
Tl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJUSU9OUyA9
IE5POworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19DX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7
CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dB
Uk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJF
RF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVT
X0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBOTzsKKwkJCQlNVExfRkFT
VF9NQVRIID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQ09NUElMQVRJ
T05fTU9ERSA9IHdob2xlbW9kdWxlOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICIt
TyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0MDExODIwMjQ5OTg1MTcw
MDM5ODdBOSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJ
CQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9OID0g
NS4wOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQwMTE4MjEyNDk5ODUxNzAw
Mzk4N0E5IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOwor
CQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9
IDUuMDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29u
ZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2Vj
dGlvbiAqLworCQkxNDAxMTgxMzI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc1NvbWVPYmpDIiAqLyA9IHsKKwkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0
MDExODFEMjQ5OTg1MTcwMDM5ODdBOSAvKiBEZWJ1ZyAqLywKKwkJCQkxNDAxMTgxRTI0OTk4NTE3
MDAzOTg3QTkgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9
OworCQkxNDAxMTgxRjI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzU29tZU9iakMiICovID0geworCQkJaXNhID0g
WENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQw
MTE4MjAyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovLAorCQkJCTE0MDExODIxMjQ5OTg1MTcw
MDM5ODdBOSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07
CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0
ID0gMTQwMTE4MTAyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29t
ZU9iakMvUmljaGFyZHNTb21lT2JqQy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9S
aWNoYXJkc1NvbWVPYmpDLnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzU29tZU9iakMvUmljaGFyZHNTb21lT2JqQy54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1NvbWVPYmpDLnhjc2NoZW1lCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0
ZDJiN2ViMDlkZDlmNDZhMWNlZmVlYTEwM2Y0OWI1ZTJmMmFkYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lT2JqQy9S
aWNoYXJkc1NvbWVPYmpDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRz
U29tZU9iakMueGNzY2hlbWUKQEAgLTAsMCArMSw4MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0iVVRGLTgiPz4KKzxTY2hlbWUKKyAgIExhc3RVcGdyYWRlVmVyc2lvbiA9ICIxMjAw
IgorICAgdmVyc2lvbiA9ICIxLjciPgorICAgPEJ1aWxkQWN0aW9uCisgICAgICBwYXJhbGxlbGl6
ZUJ1aWxkYWJsZXMgPSAiWUVTIgorICAgICAgYnVpbGRJbXBsaWNpdERlcGVuZGVuY2llcyA9ICJZ
RVMiPgorICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KKyAgICAgICAgIDxCdWlsZEFjdGlvbkVu
dHJ5CisgICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVp
bGRGb3JSdW5uaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUHJvZmlsaW5nID0gIllF
UyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1
aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+CisgICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNl
CisgICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAg
ICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSIK
KyAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTb21lT2JqQyIKKyAgICAg
ICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTb21lT2JqQyIKKyAgICAgICAgICAg
ICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU29tZU9iakMueGNv
ZGVwcm9qIj4KKyAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgICAgPC9C
dWlsZEFjdGlvbkVudHJ5PgorICAgICAgPC9CdWlsZEFjdGlvbkVudHJpZXM+CisgICA8L0J1aWxk
QWN0aW9uPgorICAgPFRlc3RBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1
ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91
bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIg
PSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCisgICAgICBzaG91bGRV
c2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+CisgICAgICA8VGVzdGFibGVzPgorICAgICAg
PC9UZXN0YWJsZXM+CisgICA8L1Rlc3RBY3Rpb24+CisgICA8TGF1bmNoQWN0aW9uCisgICAgICBi
dWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRp
ZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNl
bGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVu
Y2hlci5MTERCIgorICAgICAgbGF1bmNoU3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtp
bmdEaXJlY3RvcnkgPSAiTk8iCisgICAgICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2gg
PSAiTk8iCisgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1
Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxh
dGlvbiA9ICJZRVMiPgorICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAg
cnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5j
ZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAg
ICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkiCisgICAg
ICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRzU29tZU9iakMiCisgICAgICAgICAgICBC
bHVlcHJpbnROYW1lID0gIlJpY2hhcmRzU29tZU9iakMiCisgICAgICAgICAgICBSZWZlcmVuY2Vk
Q29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc1NvbWVPYmpDLnhjb2RlcHJvaiI+CisgICAg
ICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5h
YmxlPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRD
b25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdz
RW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElkZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3Vz
dG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5n
ID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5u
YWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisg
ICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBC
bHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSIKKyAgICAgICAg
ICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTb21lT2JqQyIKKyAgICAgICAgICAgIEJsdWVw
cmludE5hbWUgPSAiUmljaGFyZHNTb21lT2JqQyIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250
YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU29tZU9iakMueGNvZGVwcm9qIj4KKyAgICAgICAg
IDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+
CisgICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFjdGlvbgorICAgICAgYnVpbGRDb25m
aWd1cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFjdGlvbj4KKyAgIDxBcmNoaXZlQWN0
aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHJldmVhbEFy
Y2hpdmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNoaXZlQWN0aW9uPgorICAgPEluc3Rh
bGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIj4KKyAgIDwvSW5z
dGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZU9iakMvUmljaGFyZHNTb21lT2JqQy9tYWluLm0g
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lT2JqQy9S
aWNoYXJkc1NvbWVPYmpDL21haW4ubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGZkMDI3ODM2NTA4NjEwYmIyZWQ2
ZTE2ZDIyYjI5ZGJhMzk2MWRjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZU9iakMvUmljaGFyZHNTb21lT2JqQy9tYWlu
Lm0KQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNp
bXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorCitzdGF0aWMgdW5zaWduZWQgSURfSEFO
RExFUl9BID0gMjsKK3N0YXRpYyB1bnNpZ25lZCBJRF9IQU5ETEVSX0IgPSAzOworc3RhdGljIHVu
c2lnbmVkIERBVEFfU0laRSA9IDQ7CisKK0Bwcm90b2NvbCBXb3JrZXJUYXNrRXhwb3J0czxKU0V4
cG9ydD4KKworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgcmVhZG9ubHkpIEpTVmFsdWUg
KnNjaGVkdWxlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHJlYWRvbmx5KSBpbnQg
djE7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCByZWFkb25seSkgaW50IHYyOworCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY2hlZHVsZXI6KEpTVmFsdWUgKilzY2hlZHVsZXIgdjE6
KGludCl2MSB2MjooaW50KXYyOworLSAoTlNPYmplY3QgKilydW46KEpTVmFsdWUgKilydW47Cist
IChOU1N0cmluZyAqKXRvU3RyaW5nOworCitAZW5kCisKK0BpbnRlcmZhY2UgV29ya2VyVGFzayA6
IE5TT2JqZWN0PFdvcmtlclRhc2tFeHBvcnRzPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV29y
a2VyVGFzayB7CisgICAgSlNWYWx1ZSogX3NjaGVkdWxlcjsKKyAgICBpbnQgX3YxOworICAgIGlu
dCBfdjI7Cit9CisKK0BkeW5hbWljIHNjaGVkdWxlcjsKK0BkeW5hbWljIHYxOworQGR5bmFtaWMg
djI7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjaGVkdWxlcjooSlNWYWx1ZSAqKXNjaGVk
dWxlciB2MTooaW50KXYxIHYyOihpbnQpdjIKK3sKKyAgICBfc2NoZWR1bGVyID0gc2NoZWR1bGVy
OworICAgIF92MSA9IHYxOworICAgIF92MiA9IHYyOworICAgIHJldHVybiBzZWxmOworfQorCist
IChOU1N0cmluZyAqKXRvU3RyaW5nCit7CisgICAgcmV0dXJuIEAiV29ya2VyVGFzayI7Cit9CisK
Ky0gKE5TT2JqZWN0ICopcnVuOihKU1ZhbHVlKilwYWNrZXQKK3sKKyAgICBpZiAocGFja2V0Lmlz
TnVsbCB8fCBwYWNrZXQuaXNVbmRlZmluZWQpCisgICAgICAgIHJldHVybiBbX3NjaGVkdWxlciBp
bnZva2VNZXRob2Q6QCJzdXNwZW5kQ3VycmVudCIgd2l0aEFyZ3VtZW50czpAW11dOworCisgICAg
X3YxID0gSURfSEFORExFUl9BICsgSURfSEFORExFUl9CIC0gX3YxOworICAgIFtwYWNrZXQgc2V0
VmFsdWU6QChfdjEpIGZvclByb3BlcnR5OkAiaWQiXTsKKyAgICBbcGFja2V0IHNldFZhbHVlOkAw
IGZvclByb3BlcnR5OkAiYTEiXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgREFUQV9T
SVpFOyArK2kpIHsKKyAgICAgICAgX3YyICs9IDE7CisgICAgICAgIGlmIChfdjIgPiAyNikKKyAg
ICAgICAgICAgIF92MiA9IDE7CisgICAgICAgIFtbcGFja2V0IHZhbHVlRm9yUHJvcGVydHk6QCJh
MiJdIHNldFZhbHVlOkAoX3YyKSBmb3JQcm9wZXJ0eTpAKGkpXTsKKyAgICB9CisgICAgcmV0dXJu
IFtfc2NoZWR1bGVyIGludm9rZU1ldGhvZDpAInF1ZXVlIiB3aXRoQXJndW1lbnRzOkBbcGFja2V0
XV07Cit9CisKK0BlbmQKKworaW50IG1haW4oKQoreworICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIGV4
aXQoMSk7CisKKyAgICBbY29udGV4dCBzZXRPYmplY3Q6V29ya2VyVGFzay5zZWxmIGZvcktleWVk
U3Vic2NyaXB0OkAiV29ya2VyVGFzayJdOworICAgIFtjb250ZXh0IHNldEV4Y2VwdGlvbkhhbmRs
ZXI6XihKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWUgKmV4Y2VwdGlvbikgeworICAgICAgICBO
U0xvZyhAIiVAIiwgZXhjZXB0aW9uLnRvU3RyaW5nKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9
XTsKKworICAgIE5TU3RyaW5nKiBzb3VyY2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRz
T2ZGaWxlOkAicmljaGFyZHMuanMiIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9y
Om5pbF07CisgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6c291cmNlXTsKKworICAgIHVuc2ln
bmVkIGl0ZXJhdGlvbnMgPSA1MDsKKyAgICBDRlRpbWVJbnRlcnZhbCBzdGFydCA9IENBQ3VycmVu
dE1lZGlhVGltZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gaXRlcmF0aW9uczsg
KytpKQorICAgICAgICBbW2NvbnRleHQgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6QCJydW5SaWNo
YXJkcyJdIGNhbGxXaXRoQXJndW1lbnRzOkBbXV07CisgICAgQ0ZUaW1lSW50ZXJ2YWwgZW5kID0g
Q0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgcHJpbnRmKCIlZFxuIiwgKGludCkoKGVuZC1zdGFy
dCkgKiAxMDAwKSk7CisKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZU9iakMvUmlj
aGFyZHNTb21lT2JqQy9yaWNoYXJkcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3Vy
cmVudEFQSS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMvcmljaGFyZHMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzk1NzNkOWFmNDQwZmRhM2M5ZTZhNjZhOWU3MWE1ZDhmMzlkM2Y4NAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJk
c1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMvcmljaGFyZHMuanMKQEAgLTAsMCArMSw0OTcgQEAK
Ky8vIENvcHlyaWdodCAyMDA2LTIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8g
ICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAg
ICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRoaXMgaXMgYSBKYXZhU2Ny
aXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSaWNoYXJkcworLy8gYmVuY2htYXJrIGZyb206Cisv
LworLy8gICAgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1yMTAvQmVuY2guaHRtbAorLy8KKy8v
IFRoZSBiZW5jaG1hcmsgd2FzIG9yaWdpbmFsbHkgaW1wbGVtZW50ZWQgaW4gQkNQTCBieQorLy8g
TWFydGluIFJpY2hhcmRzLgorCisKKy8qKgorICogVGhlIFJpY2hhcmRzIGJlbmNobWFyayBzaW11
bGF0ZXMgdGhlIHRhc2sgZGlzcGF0Y2hlciBvZiBhbgorICogb3BlcmF0aW5nIHN5c3RlbS4KKyAq
Ki8KK2Z1bmN0aW9uIHJ1blJpY2hhcmRzKCkgeworICB2YXIgc2NoZWR1bGVyID0gbmV3IFNjaGVk
dWxlcigpOworICBzY2hlZHVsZXIuYWRkSWRsZVRhc2soSURfSURMRSwgMCwgbnVsbCwgQ09VTlQp
OworCisgIHZhciBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfV09SS0VSLCBLSU5EX1dPUksp
OworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9XT1JLRVIsIEtJTkRfV09SSyk7Cisg
IHNjaGVkdWxlci5hZGRXb3JrZXJUYXNrKElEX1dPUktFUiwgMTAwMCwgcXVldWUpOworCisgIHF1
ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1
ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1
ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBzY2hl
ZHVsZXIuYWRkSGFuZGxlclRhc2soSURfSEFORExFUl9BLCAyMDAwLCBxdWV1ZSk7CisKKyAgcXVl
dWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVl
ID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVl
ID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHNjaGVk
dWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0IsIDMwMDAsIHF1ZXVlKTsKKworICBzY2hl
ZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQSwgNDAwMCwgbnVsbCk7CisKKyAgc2NoZWR1
bGVyLmFkZERldmljZVRhc2soSURfREVWSUNFX0IsIDUwMDAsIG51bGwpOworCisgIHNjaGVkdWxl
ci5zY2hlZHVsZSgpOworCisgIGlmIChzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9R
VUVVRV9DT1VOVCB8fAorICAgICAgc2NoZWR1bGVyLmhvbGRDb3VudCAhPSBFWFBFQ1RFRF9IT0xE
X0NPVU5UKSB7CisgICAgdmFyIG1zZyA9CisgICAgICAgICJFcnJvciBkdXJpbmcgZXhlY3V0aW9u
OiBxdWV1ZUNvdW50ID0gIiArIHNjaGVkdWxlci5xdWV1ZUNvdW50ICsKKyAgICAgICAgIiwgaG9s
ZENvdW50ID0gIiArIHNjaGVkdWxlci5ob2xkQ291bnQgKyAiLiI7CisgICAgdGhyb3cgbmV3IEVy
cm9yKG1zZyk7CisgIH0KK30KKwordmFyIENPVU5UID0gMTAwMDsKKworLyoqCisgKiBUaGVzZSB0
d28gY29uc3RhbnRzIHNwZWNpZnkgaG93IG1hbnkgdGltZXMgYSBwYWNrZXQgaXMgcXVldWVkIGFu
ZAorICogaG93IG1hbnkgdGltZXMgYSB0YXNrIGlzIHB1dCBvbiBob2xkIGluIGEgY29ycmVjdCBy
dW4gb2YgcmljaGFyZHMuCisgKiBUaGV5IGRvbid0IGhhdmUgYW55IG1lYW5pbmcgYSBzdWNoIGJ1
dCBhcmUgY2hhcmFjdGVyaXN0aWMgb2YgYQorICogY29ycmVjdCBydW4gc28gaWYgdGhlIGFjdHVh
bCBxdWV1ZSBvciBob2xkIGNvdW50IGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgZXhwZWN0ZWQg
dGhlcmUgbXVzdCBiZSBhIGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisgKiovCit2YXIgRVhQ
RUNURURfUVVFVUVfQ09VTlQgPSAyMzIyOwordmFyIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7
CisKKworLyoqCisgKiBBIHNjaGVkdWxlciBjYW4gYmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBv
ZiB0YXNrcyBiYXNlZCBvbiB0aGVpciByZWxhdGl2ZQorICogcHJpb3JpdGllcy4gIFNjaGVkdWxp
bmcgaXMgZG9uZSBieSBtYWludGFpbmluZyBhIGxpc3Qgb2YgdGFzayBjb250cm9sIGJsb2Nrcwor
ICogd2hpY2ggaG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3Np
bmcuCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gU2NoZWR1bGVyKCkgeworICB0aGlz
LnF1ZXVlQ291bnQgPSAwOworICB0aGlzLmhvbGRDb3VudCA9IDA7CisgIHRoaXMuYmxvY2tzID0g
bmV3IEFycmF5KE5VTUJFUl9PRl9JRFMpOworICB0aGlzLmxpc3QgPSBudWxsOworICB0aGlzLmN1
cnJlbnRUY2IgPSBudWxsOworICB0aGlzLmN1cnJlbnRJZCA9IG51bGw7Cit9CisKK3ZhciBJRF9J
RExFICAgICAgID0gMDsKK3ZhciBJRF9XT1JLRVIgICAgID0gMTsKK3ZhciBJRF9IQU5ETEVSX0Eg
ID0gMjsKK3ZhciBJRF9IQU5ETEVSX0IgID0gMzsKK3ZhciBJRF9ERVZJQ0VfQSAgID0gNDsKK3Zh
ciBJRF9ERVZJQ0VfQiAgID0gNTsKK3ZhciBOVU1CRVJfT0ZfSURTID0gNjsKKwordmFyIEtJTkRf
REVWSUNFICAgPSAwOwordmFyIEtJTkRfV09SSyAgICAgPSAxOworCisvKioKKyAqIEFkZCBhbiBp
ZGxlIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50
aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlv
cml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHBy
b2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBudW1iZXIgb2Yg
dGltZXMgdG8gc2NoZWR1bGUgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRJ
ZGxlVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCBjb3VudCkgeworICB0aGlz
LmFkZFJ1bm5pbmdUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBJZGxlVGFzayh0aGlzLCAx
LCBjb3VudCkpOworfTsKKworLyoqCisgKiBBZGQgYSB3b3JrIHRhc2sgdG8gdGhpcyBzY2hlZHVs
ZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFy
YW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9
IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICov
CitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFdvcmtlclRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9y
aXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IFdv
cmtlclRhc2sodGhpcywgSURfSEFORExFUl9BLCAwKSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhh
bmRsZXIgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRl
bnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHBy
aW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUg
cHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkSGFuZGxl
clRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2so
aWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IEhhbmRsZXJUYXNrKHRoaXMpKTsKK307CisKKy8qKgor
ICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9
IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRo
ZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Yg
d29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlw
ZS5hZGREZXZpY2VUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhp
cy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBEZXZpY2VUYXNrKHRoaXMpKQorfTsK
KworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIGFuZCBtYXJrIGl0IGFzIHJ1bm5pbmcu
CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0g
e2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1
ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBh
cmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBl
LmFkZFJ1bm5pbmdUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsK
KyAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlzLmN1cnJl
bnRUY2Iuc2V0UnVubmluZygpOworfTsKKworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNr
IHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0
aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAq
IEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQg
YnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzayB0byBhZGQKKyAqLwor
U2NoZWR1bGVyLnByb3RvdHlwZS5hZGRUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVl
dWUsIHRhc2spIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gbmV3IFRhc2tDb250cm9sQmxvY2sodGhp
cy5saXN0LCBpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKTsKKyAgdGhpcy5saXN0ID0gdGhpcy5j
dXJyZW50VGNiOworICB0aGlzLmJsb2Nrc1tpZF0gPSB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisv
KioKKyAqIEV4ZWN1dGUgdGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgKi8K
K1NjaGVkdWxlci5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3Vy
cmVudFRjYiA9IHRoaXMubGlzdDsKKyAgd2hpbGUgKHRoaXMuY3VycmVudFRjYiAhPSBudWxsKSB7
CisgICAgaWYgKHRoaXMuY3VycmVudFRjYi5pc0hlbGRPclN1c3BlbmRlZCgpKSB7CisgICAgICB0
aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmN1cnJlbnRUY2IubGluazsKKyAgICB9IGVsc2UgeworICAg
ICAgdGhpcy5jdXJyZW50SWQgPSB0aGlzLmN1cnJlbnRUY2IuaWQ7CisgICAgICB0aGlzLmN1cnJl
bnRUY2IgPSB0aGlzLmN1cnJlbnRUY2IucnVuKCk7CisgICAgfQorICB9Cit9OworCisvKioKKyAq
IFJlbGVhc2UgYSB0YXNrIHRoYXQgaXMgY3VycmVudGx5IGJsb2NrZWQgYW5kIHJldHVybiB0aGUg
bmV4dCBibG9jayB0byBydW4uCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoZSB0YXNr
IHRvIHN1c3BlbmQKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24g
KGlkKSB7CisgIHZhciB0Y2IgPSB0aGlzLmJsb2Nrc1tpZF07CisgIGlmICh0Y2IgPT0gbnVsbCkg
cmV0dXJuIHRjYjsKKyAgdGNiLm1hcmtBc05vdEhlbGQoKTsKKyAgaWYgKHRjYi5wcmlvcml0eSA+
IHRoaXMuY3VycmVudFRjYi5wcmlvcml0eSkgeworICAgIHJldHVybiB0Y2I7CisgIH0gZWxzZSB7
CisgICAgcmV0dXJuIHRoaXMuY3VycmVudFRjYjsKKyAgfQorfTsKKworLyoqCisgKiBCbG9jayB0
aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250
cm9sIGJsb2NrCisgKiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdpbGwgbm90IGJlIG1hZGUg
cnVubmFibGUgdW50aWwgaXQgaXMgZXhwbGljaXRseQorICogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3
IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuaG9sZEN1cnJl
bnQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuaG9sZENvdW50Kys7CisgIHRoaXMuY3VycmVudFRj
Yi5tYXJrQXNIZWxkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2IubGluazsKK307CisKKy8q
KgorICogU3VzcGVuZCB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhl
IG5leHQgdGFzayBjb250cm9sIGJsb2NrCisgKiB0byBydW4uICBJZiBuZXcgd29yayBpcyBhZGRl
ZCB0byB0aGUgc3VzcGVuZGVkIHRhc2sgaXQgd2lsbCBiZSBtYWRlIHJ1bm5hYmxlLgorICovCitT
Y2hlZHVsZXIucHJvdG90eXBlLnN1c3BlbmRDdXJyZW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlz
LmN1cnJlbnRUY2IubWFya0FzU3VzcGVuZGVkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7
Cit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHBhY2tldCB0byB0aGUgZW5kIG9mIHRo
ZSB3b3JrbGlzdCB1c2VkIGJ5IHRoZSB0YXNrCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tl
dCBhbmQgbWFrZSB0aGUgdGFzayBydW5uYWJsZSBpZiBpdCBpcyBjdXJyZW50bHkKKyAqIHN1c3Bl
bmRlZC4KKyAqIEBwYXJhbSB7UGFja2V0fSBwYWNrZXQgdGhlIHBhY2tldCB0byBhZGQKKyAqLwor
U2NoZWR1bGVyLnByb3RvdHlwZS5xdWV1ZSA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdmFyIHQg
PSB0aGlzLmJsb2Nrc1twYWNrZXQuaWRdOworICBpZiAodCA9PSBudWxsKSByZXR1cm4gdDsKKyAg
dGhpcy5xdWV1ZUNvdW50Kys7CisgIHBhY2tldC5saW5rID0gbnVsbDsKKyAgcGFja2V0LmlkID0g
dGhpcy5jdXJyZW50SWQ7CisgIHJldHVybiB0LmNoZWNrUHJpb3JpdHlBZGQodGhpcy5jdXJyZW50
VGNiLCBwYWNrZXQpOworfTsKKworLyoqCisgKiBBIHRhc2sgY29udHJvbCBibG9jayBtYW5hZ2Vz
IGEgdGFzayBhbmQgdGhlIHF1ZXVlIG9mIHdvcmsgcGFja2FnZXMgYXNzb2NpYXRlZAorICogd2l0
aCBpdC4KKyAqIEBwYXJhbSB7VGFza0NvbnRyb2xCbG9ja30gbGluayB0aGUgcHJlY2VkaW5nIGJs
b2NrIGluIHRoZSBsaW5rZWQgYmxvY2sgbGlzdAorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBv
ZiB0aGlzIGJsb2NrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHByaW9yaXR5IG9mIHRo
aXMgYmxvY2sKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2YgcGFja2FnZXMg
dG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRh
c2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBUYXNrQ29udHJvbEJsb2NrKGxpbmss
IGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhp
cy5pZCA9IGlkOworICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7CisgIHRoaXMucXVldWUgPSBx
dWV1ZTsKKyAgdGhpcy50YXNrID0gdGFzazsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHsKKyAgICB0
aGlzLnN0YXRlID0gU1RBVEVfU1VTUEVOREVEOworICB9IGVsc2UgeworICAgIHRoaXMuc3RhdGUg
PSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEU7CisgIH0KK30KKworLyoqCisgKiBUaGUgdGFzayBp
cyBydW5uaW5nIGFuZCBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgorICovCit2YXIgU1RBVEVfUlVO
TklORyA9IDA7CisKKy8qKgorICogVGhlIHRhc2sgaGFzIHBhY2tldHMgbGVmdCB0byBwcm9jZXNz
LgorICovCit2YXIgU1RBVEVfUlVOTkFCTEUgPSAxOworCisvKioKKyAqIFRoZSB0YXNrIGlzIG5v
dCBjdXJyZW50bHkgcnVubmluZy4gIFRoZSB0YXNrIGlzIG5vdCBibG9ja2VkIGFzIHN1Y2ggYW5k
IG1heQorKiBiZSBzdGFydGVkIGJ5IHRoZSBzY2hlZHVsZXIuCisgKi8KK3ZhciBTVEFURV9TVVNQ
RU5ERUQgPSAyOworCisvKioKKyAqIFRoZSB0YXNrIGlzIGJsb2NrZWQgYW5kIGNhbm5vdCBiZSBy
dW4gdW50aWwgaXQgaXMgZXhwbGljaXRseSByZWxlYXNlZC4KKyAqLwordmFyIFNUQVRFX0hFTEQg
PSA0OworCit2YXIgU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFID0gU1RBVEVfU1VTUEVOREVEIHwg
U1RBVEVfUlVOTkFCTEU7Cit2YXIgU1RBVEVfTk9UX0hFTEQgPSB+U1RBVEVfSEVMRDsKKworVGFz
a0NvbnRyb2xCbG9jay5wcm90b3R5cGUuc2V0UnVubmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgdGhp
cy5zdGF0ZSA9IFNUQVRFX1JVTk5JTkc7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5tYXJrQXNOb3RIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0
ZSAmIFNUQVRFX05PVF9IRUxEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFy
a0FzSGVsZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFU
RV9IRUxEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5k
ZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5zdGF0ZSAmIFNUQVRFX0hFTEQpICE9
IDAgfHwgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEKTsKK307CisKK1Rhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLm1hcmtBc1N1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5z
dGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9TVVNQRU5ERUQ7Cit9OworCitUYXNrQ29udHJvbEJs
b2NrLnByb3RvdHlwZS5tYXJrQXNSdW5uYWJsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0
ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9SVU5OQUJMRTsKK307CisKKy8qKgorICogUnVucyB0aGlz
IHRhc2ssIGlmIGl0IGlzIHJlYWR5IHRvIGJlIHJ1biwgYW5kIHJldHVybnMgdGhlIG5leHQgdGFz
ayB0byBydW4uCisgKi8KK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIHBhY2tldDsKKyAgaWYgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVE
X1JVTk5BQkxFKSB7CisgICAgcGFja2V0ID0gdGhpcy5xdWV1ZTsKKyAgICB0aGlzLnF1ZXVlID0g
cGFja2V0Lmxpbms7CisgICAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgICAgdGhpcy5z
dGF0ZSA9IFNUQVRFX1JVTk5JTkc7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBT
VEFURV9SVU5OQUJMRTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgcGFja2V0ID0gbnVsbDsKKyAg
fQorICByZXR1cm4gdGhpcy50YXNrLnJ1bihwYWNrZXQpOworfTsKKworLyoqCisgKiBBZGRzIGEg
cGFja2V0IHRvIHRoZSB3b3JrbGlzdCBvZiB0aGlzIGJsb2NrJ3MgdGFzaywgbWFya3MgdGhpcyBh
cyBydW5uYWJsZSBpZgorICogbmVjZXNzYXJ5LCBhbmQgcmV0dXJucyB0aGUgbmV4dCBydW5uYWJs
ZSBvYmplY3QgdG8gcnVuICh0aGUgb25lCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5KS4K
KyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlvcml0eUFkZCA9IGZ1bmN0
aW9uICh0YXNrLCBwYWNrZXQpIHsKKyAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgIHRo
aXMucXVldWUgPSBwYWNrZXQ7CisgICAgdGhpcy5tYXJrQXNSdW5uYWJsZSgpOworICAgIGlmICh0
aGlzLnByaW9yaXR5ID4gdGFzay5wcmlvcml0eSkgcmV0dXJuIHRoaXM7CisgIH0gZWxzZSB7Cisg
ICAgdGhpcy5xdWV1ZSA9IHBhY2tldC5hZGRUbyh0aGlzLnF1ZXVlKTsKKyAgfQorICByZXR1cm4g
dGFzazsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rp
b24gKCkgeworICByZXR1cm4gInRjYiB7ICIgKyB0aGlzLnRhc2sgKyAiQCIgKyB0aGlzLnN0YXRl
ICsgIiB9IjsKK307CisKKy8qKgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsg
aXRzZWxmIGJ1dCBjeWNsZXMgY29udHJvbCBiZXR3ZWVuIHRoZSB0d28KKyAqIGRldmljZSB0YXNr
cy4KKyAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1h
bmFnZXMgdGhpcyB0YXNrCisgKiBAcGFyYW0ge2ludH0gdjEgYSBzZWVkIHZhbHVlIHRoYXQgY29u
dHJvbHMgaG93IHRoZSBkZXZpY2UgdGFza3MgYXJlIHNjaGVkdWxlZAorICogQHBhcmFtIHtpbnR9
IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgdGhpcyB0YXNrIHNob3VsZCBiZSBzY2hlZHVsZWQK
KyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBJZGxlVGFzayhzY2hlZHVsZXIsIHYxLCBj
b3VudCkgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOwor
ICB0aGlzLmNvdW50ID0gY291bnQ7Cit9CisKK0lkbGVUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5j
dGlvbiAocGFja2V0KSB7CisgIHRoaXMuY291bnQtLTsKKyAgaWYgKHRoaXMuY291bnQgPT0gMCkg
cmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIGlmICgodGhpcy52MSAmIDEp
ID09IDApIHsKKyAgICB0aGlzLnYxID0gdGhpcy52MSA+PiAxOworICAgIHJldHVybiB0aGlzLnNj
aGVkdWxlci5yZWxlYXNlKElEX0RFVklDRV9BKTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0g
KHRoaXMudjEgPj4gMSkgXiAweEQwMDg7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVh
c2UoSURfREVWSUNFX0IpOworICB9Cit9OworCitJZGxlVGFzay5wcm90b3R5cGUudG9TdHJpbmcg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiSWRsZVRhc2siCit9OworCisvKioKKyAqIEEgdGFz
ayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRv
IHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgor
ICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdl
cyB0aGlzIHRhc2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBEZXZpY2VUYXNrKHNj
aGVkdWxlcikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51
bGw7Cit9CisKK0RldmljZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsK
KyAgaWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgaWYgKHRoaXMudjEgPT0gbnVsbCkgcmV0dXJu
IHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgICAgdmFyIHYgPSB0aGlzLnYxOwor
ICAgIHRoaXMudjEgPSBudWxsOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsK
KyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0gcGFja2V0OworICAgIHJldHVybiB0aGlzLnNjaGVk
dWxlci5ob2xkQ3VycmVudCgpOworICB9Cit9OworCitEZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0
cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJEZXZpY2VUYXNrIjsKK307CisKKy8qKgor
ICogQSB0YXNrIHRoYXQgbWFuaXB1bGF0ZXMgd29yayBwYWNrZXRzIGFuZCB0aGVuIHN1c3BlbmRz
IGl0c2VsZi4KKyAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0
aGF0IG1hbmFnZXMgdGhpcyB0YXNrCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gSGFu
ZGxlclRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0
aGlzLnYxID0gbnVsbDsKKyAgdGhpcy52MiA9IG51bGw7Cit9CisKK0hhbmRsZXJUYXNrLnByb3Rv
dHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIGlmIChwYWNrZXQgIT0gbnVsbCkgewor
ICAgIGlmIChwYWNrZXQua2luZCA9PSBLSU5EX1dPUkspIHsKKyAgICAgIHRoaXMudjEgPSBwYWNr
ZXQuYWRkVG8odGhpcy52MSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMudjIgPSBwYWNrZXQu
YWRkVG8odGhpcy52Mik7CisgICAgfQorICB9CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHsKKyAg
ICB2YXIgY291bnQgPSB0aGlzLnYxLmExOworICAgIHZhciB2OworICAgIGlmIChjb3VudCA8IERB
VEFfU0laRSkgeworICAgICAgaWYgKHRoaXMudjIgIT0gbnVsbCkgeworICAgICAgICB2ID0gdGhp
cy52MjsKKyAgICAgICAgdGhpcy52MiA9IHRoaXMudjIubGluazsKKyAgICAgICAgdi5hMSA9IHRo
aXMudjEuYTJbY291bnRdOworICAgICAgICB0aGlzLnYxLmExID0gY291bnQgKyAxOworICAgICAg
ICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgIHYgPSB0aGlzLnYxOworICAgICAgdGhpcy52MSA9IHRoaXMudjEubGluazsKKyAgICAg
IHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHRo
aXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7Cit9OworCitIYW5kbGVyVGFzay5wcm90b3R5
cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiSGFuZGxlclRhc2siOworfTsK
KworLyogLS0tICoKKyAqIFAgYSBjIGsgZSB0CisgKiAtLS0gKi8KKwordmFyIERBVEFfU0laRSA9
IDQ7CisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0
ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAorICogb2YgdGhlIHBheWxvYWQgZGF0
YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhlciBpcyB0
aGUKKyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0aGUgdGFz
a3MuCisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlua2VkIGxp
c3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBkYXRhIGFuZCB3b3JrbGlzdHMuCisg
KiBAcGFyYW0ge1BhY2tldH0gbGluayB0aGUgdGFpbCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgcGFj
a2V0cworICogQHBhcmFtIHtpbnR9IGlkIGFuIElEIGZvciB0aGlzIHBhY2tldAorICogQHBhcmFt
IHtpbnR9IGtpbmQgdGhlIHR5cGUgb2YgdGhpcyBwYWNrZXQKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitmdW5jdGlvbiBQYWNrZXQobGluaywgaWQsIGtpbmQpIHsKKyAgdGhpcy5saW5rID0gbGluazsK
KyAgdGhpcy5pZCA9IGlkOworICB0aGlzLmtpbmQgPSBraW5kOworICB0aGlzLmExID0gMDsKKyAg
dGhpcy5hMiA9IG5ldyBBcnJheShEQVRBX1NJWkUpOworfQorCisvKioKKyAqIEFkZCB0aGlzIHBh
Y2tldCB0byB0aGUgZW5kIG9mIGEgd29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0Lgor
ICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSB3b3JrbGlzdCB0byBhZGQgdGhpcyBwYWNrZXQg
dG8KKyAqLworUGFja2V0LnByb3RvdHlwZS5hZGRUbyA9IGZ1bmN0aW9uIChxdWV1ZSkgeworICB0
aGlzLmxpbmsgPSBudWxsOworICBpZiAocXVldWUgPT0gbnVsbCkgcmV0dXJuIHRoaXM7CisgIHZh
ciBwZWVrLCBuZXh0ID0gcXVldWU7CisgIHdoaWxlICgocGVlayA9IG5leHQubGluaykgIT0gbnVs
bCkKKyAgICBuZXh0ID0gcGVlazsKKyAgbmV4dC5saW5rID0gdGhpczsKKyAgcmV0dXJuIHF1ZXVl
OworfTsKKworUGFja2V0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0
dXJuICJQYWNrZXQiOworfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
Q3VycmVudEFQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9DdXJyZW50QVBJL1Jp
Y2hhcmRzU29tZVN3aWZ0L1JpY2hhcmRzU29tZVN3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzM5NjVkMzhiNWViNzlhMDE2YzU4ZmY1OGQ3Y2I3MDgyNGRiNTg5MQot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9S
aWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0wLDAgKzEsMjkwIEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24g
PSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9
IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQwMTE4MUMyNDk5ODUx
NzAwMzk4N0E5IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDAxMTgxQjI0OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCAqLzsg
fTsKKwkJMTQxNUFEMTgyNDk5QTQxNDAwNUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1
QkIyRTQgLyogcmljaGFyZHMuanMgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MDEx
ODE2MjQ5OTg1MTcwMDM5ODdBOSAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0g
IiI7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDE1QUQx
ODI0OTlBNDE0MDA1QkIyRTQgLyogcmljaGFyZHMuanMgaW4gQ29weUZpbGVzICovLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5k
IFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KKwkJMTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRz
U29tZVN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBSaWNoYXJkc1NvbWVTd2lmdDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJMTQwMTE4MUIyNDk5ODUxNzAwMzk4N0E5IC8qIG1haW4uc3dpZnQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRo
ID0gbWFpbi5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQxNUFEMTYyNDk5
ODYwNTAwNUJCMkU0IC8qIHJpY2hhcmRzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gcmljaGFyZHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQwMTE4MTUyNDk5ODUxNzAwMzk4N0E5IC8qIEZyYW1l
d29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8K
KwkJMTQwMTE4MEYyNDk5ODUxNzAwMzk4N0E5ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQkxNDAxMTgxQTI0OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNTb21l
U3dpZnQgKi8sCisJCQkJMTQwMTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAor
CQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1
MTcwMDM5ODdBOSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJMTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZVN3
aWZ0ICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTE0MDExODFBMjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVT
d2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQw
MTE4MUIyNDk5ODUxNzAwMzk4N0E5IC8qIG1haW4uc3dpZnQgKi8sCisJCQkJMTQxNUFEMTYyNDk5
ODYwNTAwNUJCMkU0IC8qIHJpY2hhcmRzLmpzICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJk
c1NvbWVTd2lmdDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJY
R3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwor
CQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNTb21lU3dpZnQgKi8gPSB7CisJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQw
MTE4MUYyNDk5ODUxNzAwMzk4N0E5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJSaWNoYXJkc1NvbWVTd2lmdCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgK
KwkJCQkxNDAxMTgxNDI0OTk4NTE3MDAzOTg3QTkgLyogU291cmNlcyAqLywKKwkJCQkxNDAxMTgx
NTI0OTk4NTE3MDAzOTg3QTkgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxNDAxMTgxNjI0OTk4NTE3
MDAzOTg3QTkgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkp
OworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBSaWNoYXJkc1NvbWVTd2lm
dDsKKwkJCXByb2R1Y3ROYW1lID0gUmljaGFyZHNTb21lU3dpZnQ7CisJCQlwcm9kdWN0UmVmZXJl
bmNlID0gMTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZVN3aWZ0ICovOwor
CQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8q
IEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKwkJMTQwMTE4MTAyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2plY3Qgb2JqZWN0ICov
ID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFN3
aWZ0VXBkYXRlQ2hlY2sgPSAxMjAwOworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMjAwOworCQkJ
CVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSA9IHsK
KwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEyLjA7CisJCQkJCX07CisJCQkJfTsKKwkJ
CX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQwMTE4MTMyNDk5ODUxNzAwMzk4N0E5
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNTb21l
U3dpZnQiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsKKwkJCWRl
dmVsb3BtZW50UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJ
CWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNlLAorCQkJKTsKKwkJCW1haW5Hcm91
cCA9IDE0MDExODBGMjQ5OTg1MTcwMDM5ODdBOTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDE0MDEx
ODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0g
IiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQkxNDAxMTgxNzI0
OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNTb21lU3dpZnQgKi8sCisJCQkpOworCQl9OworLyog
RW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTE0MDExODE0MjQ5OTg1MTcwMDM5ODdBOSAvKiBTb3VyY2VzICovID0g
eworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMTQwMTE4MUMyNDk5ODUxNzAwMzk4N0E5IC8q
IG1haW4uc3dpZnQgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJ
MTQwMTE4MUQyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hf
VVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJ
Q0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7
CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5H
X0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7
CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpD
X1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9DT01NQSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJ
CUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExf
Q09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NF
TEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19X
QVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BS
T1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJ
CQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RV
UExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwor
CQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJQ1Rf
T0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9
IE5POworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJ
T05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJ
CSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJ
CU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNUX01B
VEggPSBZRVM7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFj
b3N4OworCQkJCVNXSUZUX0FDVElWRV9DT01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7CisJ
CQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFtZSA9
IERlYnVnOworCQl9OworCQkxNDAxMTgxRTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9O
T05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lP
TiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJn
bnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VO
QUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJ
CQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQ
VFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9O
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05T
VEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lN
UExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FH
RSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5V
TV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpD
X0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFM
X0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNf
RVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVS
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElD
SU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9
IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlf
UEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJMRV9T
VFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251MTE7CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRf
VE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJ
QUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlN
VExfRU5BQkxFX0RFQlVHX0lORk8gPSBOTzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJ
CVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xlbW9k
dWxlOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJbmFt
ZSA9IFJlbGVhc2U7CisJCX07CisJCTE0MDExODIwMjQ5OTg1MTcwMDM5ODdBOSAvKiBEZWJ1ZyAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQwMTE4MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVhc2Ug
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9
ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQlu
YW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDAxMTgx
MzI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9q
ZWN0ICJSaWNoYXJkc1NvbWVTd2lmdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDAxMTgxRDI0OTk4NTE3MDAz
OTg3QTkgLyogRGVidWcgKi8sCisJCQkJMTQwMTE4MUUyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVh
c2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQwMTE4MUYyNDk5
ODUxNzAwMzk4N0E5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJSaWNoYXJkc1NvbWVTd2lmdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDAxMTgyMDI0OTk4NTE3MDAz
OTg3QTkgLyogRGVidWcgKi8sCisJCQkJMTQwMTE4MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVh
c2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZp
Z3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSAxNDAxMTgxMDI0OTk4
NTE3MDAzOTg3QTkgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFyZHNT
b21lU3dpZnQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNTb21lU3dp
ZnQueGNzY2hlbWUgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFy
ZHNTb21lU3dpZnQvUmljaGFyZHNTb21lU3dpZnQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3Nj
aGVtZXMvUmljaGFyZHNTb21lU3dpZnQueGNzY2hlbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZkZmRhNDNlNjRm
OTI2YzI2MzRjNjYwODBiOTA0YjRhMzE0N2U3NwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1Nv
bWVTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1NvbWVTd2lm
dC54Y3NjaGVtZQpAQCAtMCwwICsxLDgxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCI/PgorPFNjaGVtZQorICAgTGFzdFVwZ3JhZGVWZXJzaW9uID0gIjEyMDAiCisgICB2
ZXJzaW9uID0gIjEuNyI+CisgICA8QnVpbGRBY3Rpb24KKyAgICAgIHBhcmFsbGVsaXplQnVpbGRh
YmxlcyA9ICJZRVMiCisgICAgICBidWlsZEltcGxpY2l0RGVwZW5kZW5jaWVzID0gIllFUyI+Cisg
ICAgICA8QnVpbGRBY3Rpb25FbnRyaWVzPgorICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKKyAg
ICAgICAgICAgIGJ1aWxkRm9yVGVzdGluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1
bm5pbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JQcm9maWxpbmcgPSAiWUVTIgorICAg
ICAgICAgICAgYnVpbGRGb3JBcmNoaXZpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JB
bmFseXppbmcgPSAiWUVTIj4KKyAgICAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAg
ICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgICAg
IEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQwMTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAg
ICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc1NvbWVTd2lmdCIKKyAgICAgICAgICAg
ICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTb21lU3dpZnQiCisgICAgICAgICAgICAgICBS
ZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc1NvbWVTd2lmdC54Y29kZXBy
b2oiPgorICAgICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICAgICA8L0J1aWxk
QWN0aW9uRW50cnk+CisgICAgICA8L0J1aWxkQWN0aW9uRW50cmllcz4KKyAgIDwvQnVpbGRBY3Rp
b24+CisgICA8VGVzdEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgor
ICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0
aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJY
Y29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIHNob3VsZFVzZUxh
dW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIj4KKyAgICAgIDxUZXN0YWJsZXM+CisgICAgICA8L1Rl
c3RhYmxlcz4KKyAgIDwvVGVzdEFjdGlvbj4KKyAgIDxMYXVuY2hBY3Rpb24KKyAgICAgIGJ1aWxk
Q29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVy
ID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0
ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVy
LkxMREIiCisgICAgICBsYXVuY2hTdHlsZSA9ICIwIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0Rp
cmVjdG9yeSA9ICJOTyIKKyAgICAgIGlnbm9yZXNQZXJzaXN0ZW50U3RhdGVPbkxhdW5jaCA9ICJO
TyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIKKyAgICAgIGRlYnVnU2Vy
dmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKKyAgICAgIGFsbG93TG9jYXRpb25TaW11bGF0aW9u
ID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5u
YWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisg
ICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBC
bHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSIKKyAgICAgICAg
ICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTb21lU3dpZnQiCisgICAgICAgICAgICBCbHVl
cHJpbnROYW1lID0gIlJpY2hhcmRzU29tZVN3aWZ0IgorICAgICAgICAgICAgUmVmZXJlbmNlZENv
bnRhaW5lciA9ICJjb250YWluZXI6UmljaGFyZHNTb21lU3dpZnQueGNvZGVwcm9qIj4KKyAgICAg
ICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFi
bGU+CisgICA8L0xhdW5jaEFjdGlvbj4KKyAgIDxQcm9maWxlQWN0aW9uCisgICAgICBidWlsZENv
bmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NF
bnYgPSAiWUVTIgorICAgICAgc2F2ZWRUb29sSWRlbnRpZmllciA9ICIiCisgICAgICB1c2VDdXN0
b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5PIgorICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcg
PSAiWUVTIj4KKyAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1bm5h
YmxlRGVidWdnaW5nTW9kZSA9ICIwIj4KKyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAg
ICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJs
dWVwcmludElkZW50aWZpZXIgPSAiMTQwMTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAgICAg
ICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc1NvbWVTd2lmdCIKKyAgICAgICAgICAgIEJsdWVw
cmludE5hbWUgPSAiUmljaGFyZHNTb21lU3dpZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29u
dGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc1NvbWVTd2lmdC54Y29kZXByb2oiPgorICAgICAg
ICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJs
ZT4KKyAgIDwvUHJvZmlsZUFjdGlvbj4KKyAgIDxBbmFseXplQWN0aW9uCisgICAgICBidWlsZENv
bmZpZ3VyYXRpb24gPSAiRGVidWciPgorICAgPC9BbmFseXplQWN0aW9uPgorICAgPEFyY2hpdmVB
Y3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgorICAgICAgcmV2ZWFs
QXJjaGl2ZUluT3JnYW5pemVyID0gIllFUyI+CisgICA8L0FyY2hpdmVBY3Rpb24+CisgICA8SW5z
dGFsbEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiPgorICAgPC9J
bnN0YWxsQWN0aW9uPgorPC9TY2hlbWU+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFyZHNTb21lU3dpZnQvbWFp
bi5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc1Nv
bWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC9tYWluLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YWViOTIx
YjA5OWE1ZGE5ZWQ1ZDk1ZTJhNDcyMjYwOTBjZGRkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFy
ZHNTb21lU3dpZnQvbWFpbi5zd2lmdApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1w
b3J0IEZvdW5kYXRpb24KK2ltcG9ydCBKYXZhU2NyaXB0Q29yZQoraW1wb3J0IFF1YXJ0ekNvcmUK
KworbGV0IElEX0hBTkRMRVJfQSA9IDIKK2xldCBJRF9IQU5ETEVSX0IgPSAzCitsZXQgREFUQV9T
SVpFID0gNAorCitAb2JqYyBwcm90b2NvbCBXb3JrZXJUYXNrRXhwb3J0cyA6IEpTRXhwb3J0IHsK
KyAgICB2YXIgc2NoZWR1bGVyIDogSlNWYWx1ZSB7IGdldCB9CisgICAgdmFyIHYxIDogSW50IHsg
Z2V0IH0KKyAgICB2YXIgdjIgOiBJbnQgeyBnZXQgfQorCisgICAgaW5pdChzY2hlZHVsZXI6IEpT
VmFsdWUsIHYxOiBJbnQsIHYyOiBJbnQpCisKKyAgICBmdW5jIHJ1bihfOiBKU1ZhbHVlKS0+IE5T
T2JqZWN0CisgICAgZnVuYyB0b1N0cmluZygpIC0+IFN0cmluZworfQorCitAb2JqYyBwdWJsaWMg
Y2xhc3MgV29ya2VyVGFzayA6IE5TT2JqZWN0LCBXb3JrZXJUYXNrRXhwb3J0cyB7CisgICAgZHlu
YW1pYyB2YXIgc2NoZWR1bGVyIDogSlNWYWx1ZQorICAgIGR5bmFtaWMgdmFyIHYxIDogSW50Cisg
ICAgZHluYW1pYyB2YXIgdjIgOiBJbnQKKworICAgIHJlcXVpcmVkIGluaXQoc2NoZWR1bGVyOiBK
U1ZhbHVlLCB2MTogSW50LCB2MjogSW50KQorICAgIHsKKyAgICAgICAgc2VsZi5zY2hlZHVsZXIg
PSBzY2hlZHVsZXIKKyAgICAgICAgc2VsZi52MSA9IHYxCisgICAgICAgIHNlbGYudjIgPSB2Mgor
ICAgIH0KKworICAgIGZ1bmMgdG9TdHJpbmcoKSAtPiBTdHJpbmcKKyAgICB7CisgICAgICAgIHJl
dHVybiAiV29ya2VyVGFzayIKKyAgICB9CisKKyAgICBmdW5jIHJ1bihfIHBhY2tldDogSlNWYWx1
ZSkgLT4gTlNPYmplY3QKKyAgICB7CisgICAgICAgIGlmIHBhY2tldC5pc051bGwgfHwgcGFja2V0
LmlzVW5kZWZpbmVkIHsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5pbnZva2VN
ZXRob2QoInN1c3BlbmRDdXJyZW50Iiwgd2l0aEFyZ3VtZW50czogW10pCisgICAgICAgIH0KKwor
ICAgICAgICBzZWxmLnYxID0gSURfSEFORExFUl9BICsgSURfSEFORExFUl9CIC0gc2VsZi52MQor
ICAgICAgICBwYWNrZXQuc2V0VmFsdWUoc2VsZi52MSwgZm9yUHJvcGVydHk6ICJpZCIpCisgICAg
ICAgIHBhY2tldC5zZXRWYWx1ZSgwLCBmb3JQcm9wZXJ0eTogImExIikKKyAgICAgICAgZm9yIGkg
aW4gMC4uLkRBVEFfU0laRSB7CisgICAgICAgICAgICBzZWxmLnYyICs9IDEKKyAgICAgICAgICAg
IGlmIHNlbGYudjIgPiAyNiB7CisgICAgICAgICAgICAgICAgc2VsZi52MiA9IDEKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHBhY2tldC5mb3JQcm9wZXJ0eSgiYTIiKS5zZXRWYWx1ZShzZWxm
LnYyLCBmb3JQcm9wZXJ0eTogaSkKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VsZi5zY2hl
ZHVsZXIuaW52b2tlTWV0aG9kKCJxdWV1ZSIsIHdpdGhBcmd1bWVudHM6IFtwYWNrZXRdKQorICAg
IH0KK30KKworZ3VhcmQgbGV0IGNvbnRleHQgPSBKU0NvbnRleHQoKSBlbHNlIHsKKyAgICBleGl0
KDEpCit9CisKK2NvbnRleHQuc2V0T2JqZWN0KFdvcmtlclRhc2suc2VsZiwgZm9yS2V5ZWRTdWJz
Y3JpcHQ6ICJXb3JrZXJUYXNrIiBhcyBOU1N0cmluZykKK2NvbnRleHQuZXhjZXB0aW9uSGFuZGxl
ciA9IHsgY29udGV4dCwgZXhjZXB0aW9uIGluCisgICAgcHJpbnQoZXhjZXB0aW9uPy50b1N0cmlu
ZygpIGFzIEFueSkKKyAgICBleGl0KDEpCit9CisKK2xldCBzb3VyY2UgPSB0cnkgU3RyaW5nKGNv
bnRlbnRzT2ZGaWxlOiAicmljaGFyZHMuanMiKQorbGV0IHJlc3VsdCA9IGNvbnRleHQuZXZhbHVh
dGVTY3JpcHQoc291cmNlKQorCitsZXQgaXRlcmF0aW9ucyA9IDUwCitsZXQgc3RhcnQgPSBDQUN1
cnJlbnRNZWRpYVRpbWUoKQorZm9yIF8gaW4gMS4uLml0ZXJhdGlvbnMgeworICAgIGNvbnRleHQu
b2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQoInJ1blJpY2hhcmRzIikuY2FsbCh3aXRoQXJndW1lbnRz
OiBbXSkKK30KK2xldCBlbmQgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKQorcHJpbnQoSW50KChlbmQt
c3RhcnQpICogMTAwMCkpCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1
cnJlbnRBUEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFyZHNTb21lU3dpZnQvcmljaGFyZHMuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lU3dpZnQv
UmljaGFyZHNTb21lU3dpZnQvcmljaGFyZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk1NzNkOWFmNDQwZmRh
M2M5ZTZhNjZhOWU3MWE1ZDhmMzlkM2Y4NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVT
d2lmdC9yaWNoYXJkcy5qcwpAQCAtMCwwICsxLDQ5NyBAQAorLy8gQ29weXJpZ2h0IDIwMDYtMjAw
OCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworLy8gVGhpcyBpcyBhIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIFJpY2hhcmRzCisvLyBiZW5jaG1hcmsgZnJvbToKKy8vCisvLyAgICBodHRwOi8vd3d3LmNs
LmNhbS5hYy51ay9+bXIxMC9CZW5jaC5odG1sCisvLworLy8gVGhlIGJlbmNobWFyayB3YXMgb3Jp
Z2luYWxseSBpbXBsZW1lbnRlZCBpbiBCQ1BMIGJ5CisvLyBNYXJ0aW4gUmljaGFyZHMuCisKKwor
LyoqCisgKiBUaGUgUmljaGFyZHMgYmVuY2htYXJrIHNpbXVsYXRlcyB0aGUgdGFzayBkaXNwYXRj
aGVyIG9mIGFuCisgKiBvcGVyYXRpbmcgc3lzdGVtLgorICoqLworZnVuY3Rpb24gcnVuUmljaGFy
ZHMoKSB7CisgIHZhciBzY2hlZHVsZXIgPSBuZXcgU2NoZWR1bGVyKCk7CisgIHNjaGVkdWxlci5h
ZGRJZGxlVGFzayhJRF9JRExFLCAwLCBudWxsLCBDT1VOVCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3
IFBhY2tldChudWxsLCBJRF9XT1JLRVIsIEtJTkRfV09SSyk7CisgIHF1ZXVlID0gbmV3IFBhY2tl
dChxdWV1ZSwgIElEX1dPUktFUiwgS0lORF9XT1JLKTsKKyAgc2NoZWR1bGVyLmFkZFdvcmtlclRh
c2soSURfV09SS0VSLCAxMDAwLCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0KG51bGws
IElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwg
IElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwg
IElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVyVGFzayhJ
RF9IQU5ETEVSX0EsIDIwMDAsIHF1ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwg
SURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAg
SURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAg
SURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElE
X0hBTkRMRVJfQiwgMzAwMCwgcXVldWUpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElE
X0RFVklDRV9BLCA0MDAwLCBudWxsKTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9E
RVZJQ0VfQiwgNTAwMCwgbnVsbCk7CisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYg
KHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8CisgICAgICBz
Y2hlZHVsZXIuaG9sZENvdW50ICE9IEVYUEVDVEVEX0hPTERfQ09VTlQpIHsKKyAgICB2YXIgbXNn
ID0KKyAgICAgICAgIkVycm9yIGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAiICsgc2No
ZWR1bGVyLnF1ZXVlQ291bnQgKworICAgICAgICAiLCBob2xkQ291bnQgPSAiICsgc2NoZWR1bGVy
LmhvbGRDb3VudCArICIuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKKyAgfQorfQorCit2
YXIgQ09VTlQgPSAxMDAwOworCisvKioKKyAqIFRoZXNlIHR3byBjb25zdGFudHMgc3BlY2lmeSBo
b3cgbWFueSB0aW1lcyBhIHBhY2tldCBpcyBxdWV1ZWQgYW5kCisgKiBob3cgbWFueSB0aW1lcyBh
IHRhc2sgaXMgcHV0IG9uIGhvbGQgaW4gYSBjb3JyZWN0IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRo
ZXkgZG9uJ3QgaGF2ZSBhbnkgbWVhbmluZyBhIHN1Y2ggYnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBv
ZiBhCisgKiBjb3JyZWN0IHJ1biBzbyBpZiB0aGUgYWN0dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQg
aXMgZGlmZmVyZW50IGZyb20KKyAqIHRoZSBleHBlY3RlZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAqKi8KK3ZhciBFWFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIz
MjI7Cit2YXIgRVhQRUNURURfSE9MRF9DT1VOVCA9IDkyODsKKworCisvKioKKyAqIEEgc2NoZWR1
bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWly
IHJlbGF0aXZlCisgKiBwcmlvcml0aWVzLiAgU2NoZWR1bGluZyBpcyBkb25lIGJ5IG1haW50YWlu
aW5nIGEgbGlzdCBvZiB0YXNrIGNvbnRyb2wgYmxvY2tzCisgKiB3aGljaCBob2xkcyB0YXNrcyBh
bmQgdGhlIGRhdGEgcXVldWUgdGhleSBhcmUgcHJvY2Vzc2luZy4KKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCitmdW5jdGlvbiBTY2hlZHVsZXIoKSB7CisgIHRoaXMucXVldWVDb3VudCA9IDA7CisgIHRo
aXMuaG9sZENvdW50ID0gMDsKKyAgdGhpcy5ibG9ja3MgPSBuZXcgQXJyYXkoTlVNQkVSX09GX0lE
Uyk7CisgIHRoaXMubGlzdCA9IG51bGw7CisgIHRoaXMuY3VycmVudFRjYiA9IG51bGw7CisgIHRo
aXMuY3VycmVudElkID0gbnVsbDsKK30KKwordmFyIElEX0lETEUgICAgICAgPSAwOwordmFyIElE
X1dPUktFUiAgICAgPSAxOwordmFyIElEX0hBTkRMRVJfQSAgPSAyOwordmFyIElEX0hBTkRMRVJf
QiAgPSAzOwordmFyIElEX0RFVklDRV9BICAgPSA0OwordmFyIElEX0RFVklDRV9CICAgPSA1Owor
dmFyIE5VTUJFUl9PRl9JRFMgPSA2OworCit2YXIgS0lORF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lO
RF9XT1JLICAgICA9IDE7CisKKy8qKgorICogQWRkIGFuIGlkbGUgdGFzayB0byB0aGlzIHNjaGVk
dWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBw
YXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tl
dH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisg
KiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUg
dGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrID0gZnVuY3Rpb24gKGlk
LCBwcmlvcml0eSwgcXVldWUsIGNvdW50KSB7CisgIHRoaXMuYWRkUnVubmluZ1Rhc2soaWQsIHBy
aW9yaXR5LCBxdWV1ZSwgbmV3IElkbGVUYXNrKHRoaXMsIDEsIGNvdW50KSk7Cit9OworCisvKioK
KyAqIEFkZCBhIHdvcmsgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBp
ZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUg
dGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdv
cmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUu
YWRkV29ya2VyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMu
YWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgV29ya2VyVGFzayh0aGlzLCBJRF9IQU5E
TEVSX0EsIDApKTsKK307CisKKy8qKgorICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2No
ZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICog
QHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFj
a2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sK
KyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRIYW5kbGVyVGFzayA9IGZ1bmN0aW9uIChpZCwg
cHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBu
ZXcgSGFuZGxlclRhc2sodGhpcykpOworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sg
dG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRo
ZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICog
QHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBi
eSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2sgPSBmdW5j
dGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5
LCBxdWV1ZSwgbmV3IERldmljZVRhc2sodGhpcykpCit9OworCisvKioKKyAqIEFkZCB0aGUgc3Bl
Y2lmaWVkIHRhc2sgYW5kIG1hcmsgaXQgYXMgcnVubmluZy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0
aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFz
aydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsg
dG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRh
c2sgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5j
dGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmFkZFRhc2soaWQsIHBy
aW9yaXR5LCBxdWV1ZSwgdGFzayk7CisgIHRoaXMuY3VycmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9
OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisg
KiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2lu
dH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVl
IHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFt
IHtUYXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFk
ZFRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmN1
cnJlbnRUY2IgPSBuZXcgVGFza0NvbnRyb2xCbG9jayh0aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwg
cXVldWUsIHRhc2spOworICB0aGlzLmxpc3QgPSB0aGlzLmN1cnJlbnRUY2I7CisgIHRoaXMuYmxv
Y2tzW2lkXSA9IHRoaXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogRXhlY3V0ZSB0aGUgdGFz
a3MgbWFuYWdlZCBieSB0aGlzIHNjaGVkdWxlci4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5z
Y2hlZHVsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5saXN0Owor
ICB3aGlsZSAodGhpcy5jdXJyZW50VGNiICE9IG51bGwpIHsKKyAgICBpZiAodGhpcy5jdXJyZW50
VGNiLmlzSGVsZE9yU3VzcGVuZGVkKCkpIHsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMu
Y3VycmVudFRjYi5saW5rOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmN1cnJlbnRJZCA9IHRo
aXMuY3VycmVudFRjYi5pZDsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRj
Yi5ydW4oKTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogUmVsZWFzZSBhIHRhc2sgdGhhdCBp
cyBjdXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAq
IEBwYXJhbSB7aW50fSBpZCB0aGUgaWQgb2YgdGhlIHRhc2sgdG8gc3VzcGVuZAorICovCitTY2hl
ZHVsZXIucHJvdG90eXBlLnJlbGVhc2UgPSBmdW5jdGlvbiAoaWQpIHsKKyAgdmFyIHRjYiA9IHRo
aXMuYmxvY2tzW2lkXTsKKyAgaWYgKHRjYiA9PSBudWxsKSByZXR1cm4gdGNiOworICB0Y2IubWFy
a0FzTm90SGVsZCgpOworICBpZiAodGNiLnByaW9yaXR5ID4gdGhpcy5jdXJyZW50VGNiLnByaW9y
aXR5KSB7CisgICAgcmV0dXJuIHRjYjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdGhpcy5jdXJy
ZW50VGNiOworICB9Cit9OworCisvKioKKyAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5n
IHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4g
IFRoZSBibG9ja2VkIHRhc2sgd2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBl
eHBsaWNpdGx5CisgKiByZWxlYXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4K
KyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5ob2xkQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAg
dGhpcy5ob2xkQ291bnQrKzsKKyAgdGhpcy5jdXJyZW50VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0
dXJuIHRoaXMuY3VycmVudFRjYi5saW5rOworfTsKKworLyoqCisgKiBTdXNwZW5kIHRoZSBjdXJy
ZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxv
Y2sKKyAqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFz
ayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuc3Vz
cGVuZEN1cnJlbnQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNTdXNw
ZW5kZWQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogQWRkIHRo
ZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhl
IHRhc2sKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1
bm5hYmxlIGlmIGl0IGlzIGN1cnJlbnRseQorICogc3VzcGVuZGVkLgorICogQHBhcmFtIHtQYWNr
ZXR9IHBhY2tldCB0aGUgcGFja2V0IHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnF1
ZXVlID0gZnVuY3Rpb24gKHBhY2tldCkgeworICB2YXIgdCA9IHRoaXMuYmxvY2tzW3BhY2tldC5p
ZF07CisgIGlmICh0ID09IG51bGwpIHJldHVybiB0OworICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAg
cGFja2V0LmxpbmsgPSBudWxsOworICBwYWNrZXQuaWQgPSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0
dXJuIHQuY2hlY2tQcmlvcml0eUFkZCh0aGlzLmN1cnJlbnRUY2IsIHBhY2tldCk7Cit9OworCisv
KioKKyAqIEEgdGFzayBjb250cm9sIGJsb2NrIG1hbmFnZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUg
b2Ygd29yayBwYWNrYWdlcyBhc3NvY2lhdGVkCisgKiB3aXRoIGl0LgorICogQHBhcmFtIHtUYXNr
Q29udHJvbEJsb2NrfSBsaW5rIHRoZSBwcmVjZWRpbmcgYmxvY2sgaW4gdGhlIGxpbmtlZCBibG9j
ayBsaXN0CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJh
bSB7aW50fSBwcmlvcml0eSB0aGUgcHJpb3JpdHkgb2YgdGhpcyBibG9jaworICogQHBhcmFtIHtQ
YWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgYnkgdGhl
IHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzaworICogQGNvbnN0cnVjdG9yCisg
Ki8KK2Z1bmN0aW9uIFRhc2tDb250cm9sQmxvY2sobGluaywgaWQsIHByaW9yaXR5LCBxdWV1ZSwg
dGFzaykgeworICB0aGlzLmxpbmsgPSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRoaXMucHJp
b3JpdHkgPSBwcmlvcml0eTsKKyAgdGhpcy5xdWV1ZSA9IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0
YXNrOworICBpZiAocXVldWUgPT0gbnVsbCkgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQ
RU5ERUQ7CisgIH0gZWxzZSB7CisgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5O
QUJMRTsKKyAgfQorfQorCisvKioKKyAqIFRoZSB0YXNrIGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJl
bnRseSBzY2hlZHVsZWQuCisgKi8KK3ZhciBTVEFURV9SVU5OSU5HID0gMDsKKworLyoqCisgKiBU
aGUgdGFzayBoYXMgcGFja2V0cyBsZWZ0IHRvIHByb2Nlc3MuCisgKi8KK3ZhciBTVEFURV9SVU5O
QUJMRSA9IDE7CisKKy8qKgorICogVGhlIHRhc2sgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nLiAg
VGhlIHRhc2sgaXMgbm90IGJsb2NrZWQgYXMgc3VjaCBhbmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkg
dGhlIHNjaGVkdWxlci4KKyAqLwordmFyIFNUQVRFX1NVU1BFTkRFRCA9IDI7CisKKy8qKgorICog
VGhlIHRhc2sgaXMgYmxvY2tlZCBhbmQgY2Fubm90IGJlIHJ1biB1bnRpbCBpdCBpcyBleHBsaWNp
dGx5IHJlbGVhc2VkLgorICovCit2YXIgU1RBVEVfSEVMRCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQ
RU5ERURfUlVOTkFCTEUgPSBTVEFURV9TVVNQRU5ERUQgfCBTVEFURV9SVU5OQUJMRTsKK3ZhciBT
VEFURV9OT1RfSEVMRCA9IH5TVEFURV9IRUxEOworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5zZXRSdW5uaW5nID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklO
RzsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5j
dGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9
OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX0hFTEQ7Cit9OworCitUYXNrQ29u
dHJvbEJsb2NrLnByb3RvdHlwZS5pc0hlbGRPclN1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAg
cmV0dXJuICh0aGlzLnN0YXRlICYgU1RBVEVfSEVMRCkgIT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBT
VEFURV9TVVNQRU5ERUQpOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0Fz
U3VzcGVuZGVkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNU
QVRFX1NVU1BFTkRFRDsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1
bm5hYmxlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRF
X1JVTk5BQkxFOworfTsKKworLyoqCisgKiBSdW5zIHRoaXMgdGFzaywgaWYgaXQgaXMgcmVhZHkg
dG8gYmUgcnVuLCBhbmQgcmV0dXJucyB0aGUgbmV4dCB0YXNrIHRvIHJ1bi4KKyAqLworVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkgeworICB2YXIgcGFja2V0Owor
ICBpZiAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUpIHsKKyAgICBwYWNr
ZXQgPSB0aGlzLnF1ZXVlOworICAgIHRoaXMucXVldWUgPSBwYWNrZXQubGluazsKKyAgICBpZiAo
dGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsK
KyAgICB9IGVsc2UgeworICAgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworICAgIH0K
KyAgfSBlbHNlIHsKKyAgICBwYWNrZXQgPSBudWxsOworICB9CisgIHJldHVybiB0aGlzLnRhc2su
cnVuKHBhY2tldCk7Cit9OworCisvKioKKyAqIEFkZHMgYSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0
IG9mIHRoaXMgYmxvY2sncyB0YXNrLCBtYXJrcyB0aGlzIGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNl
c3NhcnksIGFuZCByZXR1cm5zIHRoZSBuZXh0IHJ1bm5hYmxlIG9iamVjdCB0byBydW4gKHRoZSBv
bmUKKyAqIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkpLgorICovCitUYXNrQ29udHJvbEJsb2Nr
LnByb3RvdHlwZS5jaGVja1ByaW9yaXR5QWRkID0gZnVuY3Rpb24gKHRhc2ssIHBhY2tldCkgewor
ICBpZiAodGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAg
ICB0aGlzLm1hcmtBc1J1bm5hYmxlKCk7CisgICAgaWYgKHRoaXMucHJpb3JpdHkgPiB0YXNrLnBy
aW9yaXR5KSByZXR1cm4gdGhpczsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0
LmFkZFRvKHRoaXMucXVldWUpOworICB9CisgIHJldHVybiB0YXNrOworfTsKKworVGFza0NvbnRy
b2xCbG9jay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAidGNi
IHsgIiArIHRoaXMudGFzayArICJAIiArIHRoaXMuc3RhdGUgKyAiIH0iOworfTsKKworLyoqCisg
KiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250
cm9sIGJldHdlZW4gdGhlIHR3bworICogZGV2aWNlIHRhc2tzLgorICogQHBhcmFtIHtTY2hlZHVs
ZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBw
YXJhbSB7aW50fSB2MSBhIHNlZWQgdmFsdWUgdGhhdCBjb250cm9scyBob3cgdGhlIGRldmljZSB0
YXNrcyBhcmUgc2NoZWR1bGVkCisgKiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0
aW1lcyB0aGlzIHRhc2sgc2hvdWxkIGJlIHNjaGVkdWxlZAorICogQGNvbnN0cnVjdG9yCisgKi8K
K2Z1bmN0aW9uIElkbGVUYXNrKHNjaGVkdWxlciwgdjEsIGNvdW50KSB7CisgIHRoaXMuc2NoZWR1
bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gdjE7CisgIHRoaXMuY291bnQgPSBjb3VudDsK
K30KKworSWRsZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhp
cy5jb3VudC0tOworICBpZiAodGhpcy5jb3VudCA9PSAwKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIu
aG9sZEN1cnJlbnQoKTsKKyAgaWYgKCh0aGlzLnYxICYgMSkgPT0gMCkgeworICAgIHRoaXMudjEg
PSB0aGlzLnYxID4+IDE7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVW
SUNFX0EpOworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSAodGhpcy52MSA+PiAxKSBeIDB4RDAw
ODsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQik7CisgIH0K
K307CisKK0lkbGVUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0
dXJuICJJZGxlVGFzayIKK307CisKKy8qKgorICogQSB0YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxm
IGFmdGVyIGVhY2ggdGltZSBpdCBoYXMgYmVlbiBydW4gdG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcg
Zm9yIGRhdGEgZnJvbSBhbiBleHRlcm5hbCBkZXZpY2UuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0g
c2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0
cnVjdG9yCisgKi8KK2Z1bmN0aW9uIERldmljZVRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2No
ZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gbnVsbDsKK30KKworRGV2aWNlVGFzay5w
cm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgeworICBpZiAocGFja2V0ID09IG51bGwp
IHsKKyAgICBpZiAodGhpcy52MSA9PSBudWxsKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVu
ZEN1cnJlbnQoKTsKKyAgICB2YXIgdiA9IHRoaXMudjE7CisgICAgdGhpcy52MSA9IG51bGw7Cisg
ICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICB9IGVsc2UgeworICAgIHRoaXMu
djEgPSBwYWNrZXQ7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7Cisg
IH0KK307CisKK0RldmljZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewor
ICByZXR1cm4gIkRldmljZVRhc2siOworfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBtYW5pcHVs
YXRlcyB3b3JrIHBhY2tldHMgYW5kIHRoZW4gc3VzcGVuZHMgaXRzZWxmLgorICogQHBhcmFtIHtT
Y2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sK
KyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBIYW5kbGVyVGFzayhzY2hlZHVsZXIpIHsK
KyAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSBudWxsOworICB0aGlz
LnYyID0gbnVsbDsKK30KKworSGFuZGxlclRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChw
YWNrZXQpIHsKKyAgaWYgKHBhY2tldCAhPSBudWxsKSB7CisgICAgaWYgKHBhY2tldC5raW5kID09
IEtJTkRfV09SSykgeworICAgICAgdGhpcy52MSA9IHBhY2tldC5hZGRUbyh0aGlzLnYxKTsKKyAg
ICB9IGVsc2UgeworICAgICAgdGhpcy52MiA9IHBhY2tldC5hZGRUbyh0aGlzLnYyKTsKKyAgICB9
CisgIH0KKyAgaWYgKHRoaXMudjEgIT0gbnVsbCkgeworICAgIHZhciBjb3VudCA9IHRoaXMudjEu
YTE7CisgICAgdmFyIHY7CisgICAgaWYgKGNvdW50IDwgREFUQV9TSVpFKSB7CisgICAgICBpZiAo
dGhpcy52MiAhPSBudWxsKSB7CisgICAgICAgIHYgPSB0aGlzLnYyOworICAgICAgICB0aGlzLnYy
ID0gdGhpcy52Mi5saW5rOworICAgICAgICB2LmExID0gdGhpcy52MS5hMltjb3VudF07CisgICAg
ICAgIHRoaXMudjEuYTEgPSBjb3VudCArIDE7CisgICAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxl
ci5xdWV1ZSh2KTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgdiA9IHRoaXMudjE7Cisg
ICAgICB0aGlzLnYxID0gdGhpcy52MS5saW5rOworICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVy
LnF1ZXVlKHYpOworICAgIH0KKyAgfQorICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1
cnJlbnQoKTsKK307CisKK0hhbmRsZXJUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9u
ICgpIHsKKyAgcmV0dXJuICJIYW5kbGVyVGFzayI7Cit9OworCisvKiAtLS0gKgorICogUCBhIGMg
ayBlIHQKKyAqIC0tLSAqLworCit2YXIgREFUQV9TSVpFID0gNDsKKworLyoqCisgKiBBIHNpbXBs
ZSBwYWNrYWdlIG9mIGRhdGEgdGhhdCBpcyBtYW5pcHVsYXRlZCBieSB0aGUgdGFza3MuICBUaGUg
ZXhhY3QgbGF5b3V0CisgKiBvZiB0aGUgcGF5bG9hZCBkYXRhIGNhcnJpZWQgYnkgYSBwYWNrZXQg
aXMgbm90IGltcG9ydGFpbnQsIGFuZCBuZWl0aGVyIGlzIHRoZQorICogbmF0dXJlIG9mIHRoZSB3
b3JrIHBlcmZvcm1lZCBvbiBwYWNrZXRzIGJ5IHRoZSB0YXNrcy4KKyAqCisgKiBCZXNpZGVzIGNh
cnJ5aW5nIGRhdGEsIHBhY2tldHMgZm9ybSBsaW5rZWQgbGlzdHMgYW5kIGFyZSBoZW5jZSB1c2Vk
IGJvdGggYXMKKyAqIGRhdGEgYW5kIHdvcmtsaXN0cy4KKyAqIEBwYXJhbSB7UGFja2V0fSBsaW5r
IHRoZSB0YWlsIG9mIHRoZSBsaW5rZWQgbGlzdCBvZiBwYWNrZXRzCisgKiBAcGFyYW0ge2ludH0g
aWQgYW4gSUQgZm9yIHRoaXMgcGFja2V0CisgKiBAcGFyYW0ge2ludH0ga2luZCB0aGUgdHlwZSBv
ZiB0aGlzIHBhY2tldAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFBhY2tldChsaW5r
LCBpZCwga2luZCkgeworICB0aGlzLmxpbmsgPSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRo
aXMua2luZCA9IGtpbmQ7CisgIHRoaXMuYTEgPSAwOworICB0aGlzLmEyID0gbmV3IEFycmF5KERB
VEFfU0laRSk7Cit9CisKKy8qKgorICogQWRkIHRoaXMgcGFja2V0IHRvIHRoZSBlbmQgb2YgYSB3
b3JrbGlzdCwgYW5kIHJldHVybiB0aGUgd29ya2xpc3QuCisgKiBAcGFyYW0ge1BhY2tldH0gcXVl
dWUgdGhlIHdvcmtsaXN0IHRvIGFkZCB0aGlzIHBhY2tldCB0bworICovCitQYWNrZXQucHJvdG90
eXBlLmFkZFRvID0gZnVuY3Rpb24gKHF1ZXVlKSB7CisgIHRoaXMubGluayA9IG51bGw7CisgIGlm
IChxdWV1ZSA9PSBudWxsKSByZXR1cm4gdGhpczsKKyAgdmFyIHBlZWssIG5leHQgPSBxdWV1ZTsK
KyAgd2hpbGUgKChwZWVrID0gbmV4dC5saW5rKSAhPSBudWxsKQorICAgIG5leHQgPSBwZWVrOwor
ICBuZXh0LmxpbmsgPSB0aGlzOworICByZXR1cm4gcXVldWU7Cit9OworCitQYWNrZXQucHJvdG90
eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIlBhY2tldCI7Cit9OwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzQy9S
aWNoYXJkc0MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc0MvUmljaGFyZHNDLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWYxZTNmZjIxNzkyMmIzYTU5MjNmY2Y4OTAxNmQ0NGY3NDRmMTNj
NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNl
cy9SaWNoYXJkc0MvUmljaGFyZHNDLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCAr
MSwzMDAgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3Nl
cyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA1MDsKKwlvYmplY3RzID0geworCisvKiBCZWdp
biBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkxNEYzQjBDNjI1NkFDRjVCMDBBQzg0MjEgLyog
cmljaGFyZHMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RjNCMEM1MjU2QUNGNUEwMEFDODQyMSAvKiByaWNoYXJkcy5jICovOyB9OworLyogRW5kIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovID0g
eworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDEyOworCQkJZHN0UGF0aCA9ICIiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIy
RTQgLyogUmljaGFyZHNDICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSBSaWNoYXJkc0M7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CTE0RjNCMEM1MjU2QUNGNUEwMEFDODQyMSAvKiByaWNoYXJkcy5jICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmM7IHBhdGggPSByaWNoYXJkcy5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJFNCAvKiBG
cmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9u
ICovCisJCTE0MTVBRDE5MjQ5OUJDNUIwMDVCQjJFNCA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFEMjQyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRz
QyAqLywKKwkJCQkxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVjdHMgKi8sCisJCQkp
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQxNUFEMjMyNDk5QkM1QzAw
NUJCMkU0IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNDICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc0MgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0RjNCMEM1MjU2QUNGNUEwMEFDODQy
MSAvKiByaWNoYXJkcy5jICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc0M7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMTQxNUFEMjEyNDk5QkM1QzAw
NUJCMkU0IC8qIFJpY2hhcmRzQyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQyOTI0OTlCQzVDMDA1QkIyRTQgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzQyIgKi87
CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291
cmNlcyAqLywKKwkJCQkxNDE1QUQxRjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAqLywK
KwkJCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJ
CWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5h
bWUgPSBSaWNoYXJkc0M7CisJCQlwcm9kdWN0TmFtZSA9IFJpY2hhcmRzTW9zdGx5U3dpZnQ7CisJ
CQlwcm9kdWN0UmVmZXJlbmNlID0gMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRz
QyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJ
CX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJv
amVjdCBzZWN0aW9uICovCisJCTE0MTVBRDFBMjQ5OUJDNUIwMDVCQjJFNCAvKiBQcm9qZWN0IG9i
amVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJ
CUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMTIwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTIw
MDsKKwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIy
RTQgPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMi4wOworCQkJCQkJTGFzdFN3
aWZ0TWlncmF0aW9uID0gMTIwMDsKKwkJCQkJfTsKKwkJCQl9OworCQkJfTsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQxRDI0OTlCQzVCMDA1QkIyRTQgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc0MiICovOworCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJ
CQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQll
biwKKwkJCQlCYXNlLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MTVBRDE5MjQ5OUJDNUIwMDVC
QjJFNDsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQ
cm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIi
OworCQkJdGFyZ2V0cyA9ICgKKwkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFy
ZHNDICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQxRTI0OTlCQzVD
MDA1QkIyRTQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0
RjNCMEM2MjU2QUNGNUIwMEFDODQyMSAvKiByaWNoYXJkcy5jIGluIFNvdXJjZXMgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBF
bmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29u
ZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTE0MTVBRDI3MjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFM
WVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09O
VkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFS
RCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNM
QU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlF
UzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxP
Q0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9P
QkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lT
QV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVO
VFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJT
SU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19M
SVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1Mg
PSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktf
SEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
U1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJ
TElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBk
d2FyZjsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlFTkFCTEVf
VEVTVEFCSUxJVFkgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsK
KwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9
IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VT
U09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCki
LAorCQkJCSk7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJ
CQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5f
VU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FV
VE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBJTkNMVURF
X1NPVVJDRTsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCU9OTFlfQUNUSVZFX0FSQ0gg
PSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlTV0lGVF9BQ1RJVkVfQ09NUElMQVRJ
T05fQ09ORElUSU9OUyA9IERFQlVHOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICIt
T25vbmUiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxNUFEMjgyNDk5QkM1
QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0g
Tk87CisJCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFMWVpF
Ul9OVU1CRVJfT0JKRUNUX0NPTlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19D
WFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkg
PSAibGliYysrIjsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19F
TkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1BID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0RFUFJFQ0FURURfT0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9E
T0NVTUVOVEFUSU9OX0NPTU1FTlRTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJT
SU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lO
Q0xVREVfSU5fRlJBTUVXT1JLX0hFQURFUiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdFX0xP
T1BfQU5BTFlTSVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X1VOR1VBUkRFRF9BVkFJTEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19XQVJO
X1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhP
RF9NQVRDSCA9IFlFUzsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdfSU5G
T1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJRU5BQkxFX05TX0FTU0VS
VElPTlMgPSBOTzsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tT
ID0gWUVTOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJ
CUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VO
REVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRP
UyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gTk87CisJCQkJ
TVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0NP
TVBJTEFUSU9OX01PREUgPSB3aG9sZW1vZHVsZTsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVW
RUwgPSAiLU8iOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDE1QUQyQTI0
OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZ
RVM7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCUxEX1JVTlBBVEhfU0VB
UkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIkBleGVjdXRhYmxlX3Bh
dGgvLi4vRnJhbWV3b3JrcyIsCisJCQkJCSJAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3JrcyIsCisJ
CQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZUX09Q
VElNSVpBVElPTl9MRVZFTCA9ICItT25vbmUiOworCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7CisJ
CQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQg
LyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDT0RF
X1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMgPSAo
CisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiQGV4ZWN1dGFibGVfcGF0aC8uLi9GcmFtZXdv
cmtzIiwKKwkJCQkJIkBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzIiwKKwkJCQkpOworCQkJCVBS
T0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJh
dGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAq
LworCQkxNDE1QUQxRDI0OTlCQzVCMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc0MiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQxNUFEMjcyNDk5QkM1
QzAwNUJCMkU0IC8qIERlYnVnICovLAorCQkJCTE0MTVBRDI4MjQ5OUJDNUMwMDVCQjJFNCAvKiBS
ZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0MTVBRDI5
MjQ5OUJDNUMwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiUmljaGFyZHNDIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDJBMjQ5OUJDNUMwMDVCQjJF
NCAvKiBEZWJ1ZyAqLywKKwkJCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAq
LywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJh
dGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDE0MTVBRDFBMjQ5OUJDNUIw
MDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc0MvUmljaGFyZHNDLnhjb2RlcHJvai94
Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzQy54Y3NjaGVtZSBiL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc0MvUmljaGFyZHNDLnhjb2RlcHJvai94Y3No
YXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzQy54Y3NjaGVtZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDYyZWNh
YWY5NjAzNDU1YjE1ODlkN2E2NTM1Y2I5ZTA5NWEyNjJlCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzQy9SaWNoYXJkc0MueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNDLnhjc2NoZW1lCkBAIC0wLDAg
KzEsODEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2NoZW1l
CisgICBMYXN0VXBncmFkZVZlcnNpb24gPSAiMTIwMCIKKyAgIHZlcnNpb24gPSAiMS43Ij4KKyAg
IDxCdWlsZEFjdGlvbgorICAgICAgcGFyYWxsZWxpemVCdWlsZGFibGVzID0gIllFUyIKKyAgICAg
IGJ1aWxkSW1wbGljaXREZXBlbmRlbmNpZXMgPSAiWUVTIj4KKyAgICAgIDxCdWlsZEFjdGlvbkVu
dHJpZXM+CisgICAgICAgICA8QnVpbGRBY3Rpb25FbnRyeQorICAgICAgICAgICAgYnVpbGRGb3JU
ZXN0aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZRVMiCisgICAg
ICAgICAgICBidWlsZEZvclByb2ZpbGluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFy
Y2hpdmluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFuYWx5emluZyA9ICJZRVMiPgor
ICAgICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgQnVpbGRhYmxl
SWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmll
ciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICAgICBCdWlsZGFibGVO
YW1lID0gIlJpY2hhcmRzQyIKKyAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFy
ZHNDIgorICAgICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6Umlj
aGFyZHNDLnhjb2RlcHJvaiI+CisgICAgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAg
ICAgICAgIDwvQnVpbGRBY3Rpb25FbnRyeT4KKyAgICAgIDwvQnVpbGRBY3Rpb25FbnRyaWVzPgor
ICAgPC9CdWlsZEFjdGlvbj4KKyAgIDxUZXN0QWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRp
b24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5E
ZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJ
ZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAg
ICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZRVMiPgorICAgICAgPFRlc3RhYmxl
cz4KKyAgICAgIDwvVGVzdGFibGVzPgorICAgPC9UZXN0QWN0aW9uPgorICAgPExhdW5jaEFjdGlv
bgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWREZWJ1
Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIi
CisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5k
YXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIGxhdW5jaFN0eWxlID0gIjAiCisgICAgICB1c2VD
dXN0b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5PIgorICAgICAgaWdub3Jlc1BlcnNpc3RlbnRTdGF0
ZU9uTGF1bmNoID0gIk5PIgorICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgor
ICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgorICAgICAgYWxsb3dMb2Nh
dGlvblNpbXVsYXRpb24gPSAiWUVTIj4KKyAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUK
KyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4KKyAgICAgICAgIDxCdWlsZGFi
bGVSZWZlcmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIK
KyAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQxNUFEMjEyNDk5QkM1QzAwNUJC
MkU0IgorICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc0MiCisgICAgICAgICAg
ICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzQyIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250
YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzQy54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWls
ZGFibGVSZWZlcmVuY2U+CisgICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgIDwv
TGF1bmNoQWN0aW9uPgorICAgPFByb2ZpbGVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlv
biA9ICJSZWxlYXNlIgorICAgICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZRVMi
CisgICAgICBzYXZlZFRvb2xJZGVudGlmaWVyID0gIiIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdE
aXJlY3RvcnkgPSAiTk8iCisgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiPgor
ICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dp
bmdNb2RlID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAg
QnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRl
bnRpZmllciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFi
bGVOYW1lID0gIlJpY2hhcmRzQyIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFy
ZHNDIgorICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6UmljaGFy
ZHNDLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwv
QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9Qcm9maWxlQWN0aW9uPgorICAgPEFuYWx5
emVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CisgICA8L0FuYWx5
emVBY3Rpb24+CisgICA8QXJjaGl2ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0g
IlJlbGVhc2UiCisgICAgICByZXZlYWxBcmNoaXZlSW5Pcmdhbml6ZXIgPSAiWUVTIj4KKyAgIDwv
QXJjaGl2ZUFjdGlvbj4KKyAgIDxJbnN0YWxsQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRp
b24gPSAiUmVsZWFzZSI+CisgICA8L0luc3RhbGxBY3Rpb24+Cis8L1NjaGVtZT4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc0MvUmljaGFy
ZHNDL3JpY2hhcmRzLmMgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmlj
aGFyZHNDL1JpY2hhcmRzQy9yaWNoYXJkcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwYTZhNTg1YzY5NTUzMTAx
Y2U4NDZiYmFmN2UzMzcxOWYyZmJhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNDL1JpY2hhcmRzQy9yaWNoYXJkcy5jCkBA
IC0wLDAgKzEsMzk3IEBACisvKiAgQyB2ZXJzaW9uIG9mIHRoZSBzeXN0ZW1zIHByb2dyYW1taW5n
IGxhbmd1YWdlIGJlbmNobWFyaworKiogIEF1dGhvcjogIE0uIEouIEpvcmRhbiAgQ2FtYnJpZGdl
IENvbXB1dGVyIExhYm9yYXRvcnkuIAorKiogIAorKiogIE1vZGlmaWVkIGJ5OiAgTS4gUmljaGFy
ZHMsIE5vdiAxOTk2CisqKiAgICB0byBiZSBBTlNJIEMgYW5kIHJ1bm5hYmxlIG9uIDY0IGJpdCBt
YWNoaW5lcyArIG90aGVyIG1pbm9yIGNoYW5nZXMKKyoqICBNb2RpZmllZCBieTogIE0uIFJpY2hh
cmRzLCAyMCBPY3QgMTk5OAorKiogICAgbWFkZSBtaW5vciBjb3JyZWN0aW9ucyB0byBpbXByb3Zl
IEFOU0kgY29tcGxpYW5jZSAoc3VnZ2VzdGVkCisqKiAgICBieSBEYXZpZCBMZXZpbmUpCisqLwor
CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KKworI2lmIDEKKyNkZWZpbmUgICAgICAgICAgICAgICAgQ291bnQgICAgICAgICAg
IDEwMDAKKyNkZWZpbmUgICAgICAgICAgICAgICAgUXBrdGNvdW50dmFsICAgIDIzMjIKKyNkZWZp
bmUgICAgICAgICAgICAgICAgSG9sZGNvdW50dmFsICAgIDkyOAorI2VuZGlmCisKKyNkZWZpbmUg
ICAgICAgICAgICAgICAgVFJVRSAgICAgICAgICAgIDEKKyNkZWZpbmUgICAgICAgICAgICAgICAg
RkFMU0UgICAgICAgICAgIDAKKyNkZWZpbmUgICAgICAgICAgICAgICAgTUFYSU5UICAgICAgICAg
IDMyNzY3CisKKyNkZWZpbmUgICAgICAgICAgICAgICAgQlVGU0laRSAgICAgICAgIDMKKyNkZWZp
bmUgICAgICAgICAgICAgICAgSV9JRExFICAgICAgICAgIDEKKyNkZWZpbmUgICAgICAgICAgICAg
ICAgSV9XT1JLICAgICAgICAgIDIKKyNkZWZpbmUgICAgICAgICAgICAgICAgSV9IQU5ETEVSQSAg
ICAgIDMKKyNkZWZpbmUgICAgICAgICAgICAgICAgSV9IQU5ETEVSQiAgICAgIDQKKyNkZWZpbmUg
ICAgICAgICAgICAgICAgSV9ERVZBICAgICAgICAgIDUKKyNkZWZpbmUgICAgICAgICAgICAgICAg
SV9ERVZCICAgICAgICAgIDYKKyNkZWZpbmUgICAgICAgICAgICAgICAgUEtUQklUICAgICAgICAg
IDEKKyNkZWZpbmUgICAgICAgICAgICAgICAgV0FJVEJJVCAgICAgICAgIDIKKyNkZWZpbmUgICAg
ICAgICAgICAgICAgSE9MREJJVCAgICAgICAgIDQKKyNkZWZpbmUgICAgICAgICAgICAgICAgTk9U
UEtUQklUICAgICAgICExCisjZGVmaW5lICAgICAgICAgICAgICAgIE5PVFdBSVRCSVQgICAgICAh
MgorI2RlZmluZSAgICAgICAgICAgICAgICBOT1RIT0xEQklUICAgICAgMFhGRkZCCisKKyNkZWZp
bmUgICAgICAgICAgICAgICAgU19SVU4gICAgICAgICAgIDAKKyNkZWZpbmUgICAgICAgICAgICAg
ICAgU19SVU5QS1QgICAgICAgIDEKKyNkZWZpbmUgICAgICAgICAgICAgICAgU19XQUlUICAgICAg
ICAgIDIKKyNkZWZpbmUgICAgICAgICAgICAgICAgU19XQUlUUEtUICAgICAgIDMKKyNkZWZpbmUg
ICAgICAgICAgICAgICAgU19IT0xEICAgICAgICAgIDQKKyNkZWZpbmUgICAgICAgICAgICAgICAg
U19IT0xEUEtUICAgICAgIDUKKyNkZWZpbmUgICAgICAgICAgICAgICAgU19IT0xEV0FJVCAgICAg
IDYKKyNkZWZpbmUgICAgICAgICAgICAgICAgU19IT0xEV0FJVFBLVCAgIDcKKworI2RlZmluZSAg
ICAgICAgICAgICAgICBLX0RFViAgICAgICAgICAgMTAwMAorI2RlZmluZSAgICAgICAgICAgICAg
ICBLX1dPUksgICAgICAgICAgMTAwMQorCitzdHJ1Y3QgcGFja2V0Cit7CisgICAgc3RydWN0IHBh
Y2tldCAgKnBfbGluazsKKyAgICBpbnQgICAgICAgICAgICAgcF9pZDsKKyAgICBpbnQgICAgICAg
ICAgICAgcF9raW5kOworICAgIGludCAgICAgICAgICAgICBwX2ExOworICAgIGNoYXIgICAgICAg
ICAgICBwX2EyW0JVRlNJWkUrMV07Cit9OworCitzdHJ1Y3QgdGFzaworeworICAgIHN0cnVjdCB0
YXNrICAgICp0X2xpbms7CisgICAgaW50ICAgICAgICAgICAgIHRfaWQ7CisgICAgaW50ICAgICAg
ICAgICAgIHRfcHJpOworICAgIHN0cnVjdCBwYWNrZXQgICp0X3drcTsKKyAgICBpbnQgICAgICAg
ICAgICAgdF9zdGF0ZTsKKyAgICBzdHJ1Y3QgdGFzayAgICAqKCp0X2ZuKShzdHJ1Y3QgcGFja2V0
ICopOworICAgIGxvbmcgICAgICAgICAgICB0X3YxOworICAgIGxvbmcgICAgICAgICAgICB0X3Yy
OworfTsKKworY2hhciAgYWxwaGFiZXRbMjhdID0gIjBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WiI7CitzdHJ1Y3QgdGFzayAqdGFza3RhYlsxMV0gID0gIHsoc3RydWN0IHRhc2sgKikxMCwwLDAs
MCwwLDAsMCwwLDAsMCwwfTsKK3N0cnVjdCB0YXNrICp0YXNrbGlzdCAgICA9ICAwOworc3RydWN0
IHRhc2sgKnRjYjsKK2xvbmcgICAgdGFza2lkOworbG9uZyAgICB2MTsKK2xvbmcgICAgdjI7Citp
bnQgICAgIHFwa3Rjb3VudCAgICA9ICAwOworaW50ICAgICBob2xkY291bnQgICAgPSAgMDsKK2lu
dCAgICAgdHJhY2luZyAgICAgID0gIDA7CitpbnQgICAgIGxheW91dCAgICAgICA9ICAwOworCit2
b2lkIGFwcGVuZChzdHJ1Y3QgcGFja2V0ICpwa3QsIHN0cnVjdCBwYWNrZXQgKnB0cik7CisKK3Zv
aWQgY3JlYXRldGFzayhpbnQgaWQsCisgICAgICAgICAgICAgICAgaW50IHByaSwKKyAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcGFja2V0ICp3a3EsCisgICAgICAgICAgICAgICAgaW50IHN0YXRlLAor
ICAgICAgICAgICAgICAgIHN0cnVjdCB0YXNrICooKmZuKShzdHJ1Y3QgcGFja2V0ICopLAorICAg
ICAgICAgICAgICAgIGxvbmcgdjEsCisgICAgICAgICAgICAgICAgbG9uZyB2MikKK3sKKyAgICBz
dHJ1Y3QgdGFzayAqdCA9IChzdHJ1Y3QgdGFzayAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHRhc2sp
KTsKKworICAgIHRhc2t0YWJbaWRdID0gdDsKKyAgICB0LT50X2xpbmsgICA9IHRhc2tsaXN0Owor
ICAgIHQtPnRfaWQgICAgID0gaWQ7CisgICAgdC0+dF9wcmkgICAgPSBwcmk7CisgICAgdC0+dF93
a3EgICAgPSB3a3E7CisgICAgdC0+dF9zdGF0ZSAgPSBzdGF0ZTsKKyAgICB0LT50X2ZuICAgICA9
IGZuOworICAgIHQtPnRfdjEgICAgID0gdjE7CisgICAgdC0+dF92MiAgICAgPSB2MjsKKyAgICB0
YXNrbGlzdCAgICA9IHQ7Cit9CisKK3N0cnVjdCBwYWNrZXQgKnBrdChzdHJ1Y3QgcGFja2V0ICps
aW5rLCBpbnQgaWQsIGludCBraW5kKQoreworICAgIGludCBpOworICAgIHN0cnVjdCBwYWNrZXQg
KnAgPSAoc3RydWN0IHBhY2tldCAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHBhY2tldCkpOworCisg
ICAgZm9yIChpPTA7IGk8PUJVRlNJWkU7IGkrKykKKyAgICAgICAgcC0+cF9hMltpXSA9IDA7CisK
KyAgICBwLT5wX2xpbmsgPSBsaW5rOworICAgIHAtPnBfaWQgPSBpZDsKKyAgICBwLT5wX2tpbmQg
PSBraW5kOworICAgIHAtPnBfYTEgPSAwOworCisgICAgcmV0dXJuIChwKTsKK30KKwordm9pZCB0
cmFjZShjaGFyIGEpCit7CisgICBpZiAoIC0tbGF5b3V0IDw9IDAgKQorICAgeworICAgICAgICBs
YXlvdXQgPSA1MDsKKyAgICB9CisKK30KKworaW50IHNjaGVkdWxlKCkKK3sKKyAgICB3aGlsZSAo
dGNiICE9IDApCisgICAgeworICAgICAgICBzdHJ1Y3QgcGFja2V0ICpwa3Q7CisgICAgICAgIHN0
cnVjdCB0YXNrICpuZXd0Y2I7CisKKyAgICAgICAgcGt0PTA7CisKKyAgICAgICAgc3dpdGNoICgg
dGNiLT50X3N0YXRlICkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBTX1dBSVRQS1Q6Cisg
ICAgICAgICAgICAgICAgcGt0ID0gdGNiLT50X3drcTsKKyAgICAgICAgICAgICAgICB0Y2ItPnRf
d2txID0gcGt0LT5wX2xpbms7CisgICAgICAgICAgICAgICAgdGNiLT50X3N0YXRlID0gdGNiLT50
X3drcSA9PSAwID8gU19SVU4gOiBTX1JVTlBLVDsKKworICAgICAgICAgICAgY2FzZSBTX1JVTjoK
KyAgICAgICAgICAgIGNhc2UgU19SVU5QS1Q6CisgICAgICAgICAgICAgICAgdGFza2lkID0gdGNi
LT50X2lkOworICAgICAgICAgICAgICAgIHYxID0gdGNiLT50X3YxOworICAgICAgICAgICAgICAg
IHYyID0gdGNiLT50X3YyOworICAgICAgICAgICAgICAgIGlmICh0cmFjaW5nKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRyYWNlKHRhc2tpZCsnMCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBuZXd0Y2IgPSAoKih0Y2ItPnRfZm4pKShwa3QpOworICAgICAgICAgICAgICAg
IHRjYi0+dF92MSA9IHYxOworICAgICAgICAgICAgICAgIHRjYi0+dF92MiA9IHYyOworICAgICAg
ICAgICAgICAgIHRjYiA9IG5ld3RjYjsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSBTX1dBSVQ6CisgICAgICAgICAgICBjYXNlIFNfSE9MRDoKKyAgICAgICAgICAg
IGNhc2UgU19IT0xEUEtUOgorICAgICAgICAgICAgY2FzZSBTX0hPTERXQUlUOgorICAgICAgICAg
ICAgY2FzZSBTX0hPTERXQUlUUEtUOgorICAgICAgICAgICAgICAgIHRjYiA9IHRjYi0+dF9saW5r
OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9
CisKK3N0cnVjdCB0YXNrICp3YWl0Xyh2b2lkKQoreworICAgIHRjYi0+dF9zdGF0ZSB8PSBXQUlU
QklUOworICAgIHJldHVybiAodGNiKTsKK30KKworc3RydWN0IHRhc2sgKmhvbGRzZWxmKHZvaWQp
Cit7CisgICAgKytob2xkY291bnQ7CisgICAgdGNiLT50X3N0YXRlIHw9IEhPTERCSVQ7CisgICAg
cmV0dXJuICh0Y2ItPnRfbGluaykgOworfQorCitzdHJ1Y3QgdGFzayAqZmluZHRjYihpbnQgaWQp
Cit7CisgICAgc3RydWN0IHRhc2sgKnQgPSAwOworCisgICAgaWYgKDE8PWlkICYmIGlkPD0obG9u
Zyl0YXNrdGFiWzBdKQorICAgIHQgPSB0YXNrdGFiW2lkXTsKKyAgICByZXR1cm4odCk7Cit9CisK
K3N0cnVjdCB0YXNrICpyZWxlYXNlKGludCBpZCkKK3sKKyAgICBzdHJ1Y3QgdGFzayAqdDsKKwor
ICAgIHQgPSBmaW5kdGNiKGlkKTsKKyAgICBpZiAoIHQ9PTAgKSByZXR1cm4gKDApOworCisgICAg
dC0+dF9zdGF0ZSAmPSBOT1RIT0xEQklUOworICAgIGlmICggdC0+dF9wcmkgPiB0Y2ItPnRfcHJp
ICkgcmV0dXJuICh0KTsKKworICAgIHJldHVybiAodGNiKSA7Cit9CisKKworc3RydWN0IHRhc2sg
KnFwa3Qoc3RydWN0IHBhY2tldCAqcGt0KQoreworICAgIHN0cnVjdCB0YXNrICp0OworCisgICAg
dCA9IGZpbmR0Y2IocGt0LT5wX2lkKTsKKyAgICBpZiAodD09MCkgcmV0dXJuICh0KTsKKworICAg
IHFwa3Rjb3VudCsrOworCisgICAgcGt0LT5wX2xpbmsgPSAwOworICAgIHBrdC0+cF9pZCA9IChp
bnQpdGFza2lkOworCisgICBpZiAodC0+dF93a3E9PTApCisgICAgeworICAgICAgICB0LT50X3dr
cSA9IHBrdDsKKyAgICAgICAgdC0+dF9zdGF0ZSB8PSBQS1RCSVQ7CisgICAgICAgIGlmICh0LT50
X3ByaSA+IHRjYi0+dF9wcmkpIHJldHVybiAodCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIGFwcGVuZChwa3QsIChzdHJ1Y3QgcGFja2V0ICopJih0LT50X3drcSkpOworICAgIH0K
KworICAgIHJldHVybiAodGNiKTsKK30KKworc3RydWN0IHRhc2sgKmlkbGVmbihzdHJ1Y3QgcGFj
a2V0ICpwa3QpCit7CisgICAgaWYgKCAtLXYyPT0wICkgcmV0dXJuICggaG9sZHNlbGYoKSApOwor
CisgICAgaWYgKCAodjEmMSkgPT0gMCApCisgICAgeworICAgICAgICB2MSA9ICggdjE+PjEpICYg
TUFYSU5UOworICAgICAgICByZXR1cm4gKCByZWxlYXNlKElfREVWQSkgKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgdjEgPSAoICh2MT4+MSkgJiBNQVhJTlQpIF4gMFhEMDA4Owor
ICAgICAgICByZXR1cm4gKCByZWxlYXNlKElfREVWQikgKTsKKyAgICB9Cit9CisKK3N0cnVjdCB0
YXNrICp3b3JrZm4oc3RydWN0IHBhY2tldCAqcGt0KQoreworICAgIGlmICggcGt0PT0wICkgcmV0
dXJuICggd2FpdF8oKSApOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIGludCBpOworCisgICAg
ICAgIHYxID0gSV9IQU5ETEVSQSArIElfSEFORExFUkIgLSB2MTsKKyAgICAgICAgcGt0LT5wX2lk
ID0gKGludCl2MTsKKworICAgICAgICBwa3QtPnBfYTEgPSAwOworICAgICAgICBmb3IgKGk9MDsg
aTw9QlVGU0laRTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB2MisrOworICAgICAgICAg
ICAgaWYgKCB2MiA+IDI2ICkgdjIgPSAxOworICAgICAgICAgICAgKHBrdC0+cF9hMilbaV0gPSBh
bHBoYWJldFt2Ml07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICggcXBrdChwa3QpICk7Cisg
ICAgfQorfQorCitzdHJ1Y3QgdGFzayAqaGFuZGxlcmZuKHN0cnVjdCBwYWNrZXQgKnBrdCkKK3sK
KyAgaWYgKCBwa3QhPTApIHsKKyAgICBhcHBlbmQocGt0LCAoc3RydWN0IHBhY2tldCAqKShwa3Qt
PnBfa2luZD09S19XT1JLID8gJnYxIDogJnYyKSk7CisgIH0KKworICBpZiAoIHYxIT0wICkgewor
ICAgIGludCBjb3VudDsKKyAgICBzdHJ1Y3QgcGFja2V0ICp3b3JrcGt0ID0gKHN0cnVjdCBwYWNr
ZXQgKil2MTsKKyAgICBjb3VudCA9IHdvcmtwa3QtPnBfYTE7CisKKyAgICBpZiAoIGNvdW50ID4g
QlVGU0laRSApIHsKKyAgICAgIHYxID0gKGxvbmcpKCgoc3RydWN0IHBhY2tldCAqKXYxKS0+cF9s
aW5rKTsKKyAgICAgIHJldHVybiAoIHFwa3Qod29ya3BrdCkgKTsKKyAgICB9CisKKyAgICBpZiAo
IHYyIT0wICkgeworICAgICAgc3RydWN0IHBhY2tldCAqZGV2cGt0OworCisgICAgICBkZXZwa3Qg
PSAoc3RydWN0IHBhY2tldCAqKXYyOworICAgICAgdjIgPSAobG9uZykoKChzdHJ1Y3QgcGFja2V0
ICopdjIpLT5wX2xpbmspOworICAgICAgZGV2cGt0LT5wX2ExID0gd29ya3BrdC0+cF9hMltjb3Vu
dF07CisgICAgICB3b3JrcGt0LT5wX2ExID0gY291bnQrMTsKKyAgICAgIHJldHVybiggcXBrdChk
ZXZwa3QpICk7CisgICAgfQorICB9CisgIHJldHVybiB3YWl0XygpOworfQorCitzdHJ1Y3QgdGFz
ayAqZGV2Zm4oc3RydWN0IHBhY2tldCAqcGt0KQoreworICAgIGlmICggcGt0PT0wICkKKyAgICB7
CisgICAgICAgIGlmICggdjE9PTAgKSByZXR1cm4gKCB3YWl0XygpICk7CisgICAgICAgIHBrdCA9
IChzdHJ1Y3QgcGFja2V0ICopdjE7CisgICAgICAgIHYxID0gMDsKKyAgICAgICAgcmV0dXJuICgg
cXBrdChwa3QpICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHYxID0gKGxvbmcp
cGt0OworICAgICAgICBpZiAodHJhY2luZykgdHJhY2UocGt0LT5wX2ExKTsKKyAgICAgICAgcmV0
dXJuICggaG9sZHNlbGYoKSApOworICAgIH0KK30KKwordm9pZCBhcHBlbmQoc3RydWN0IHBhY2tl
dCAqcGt0LCBzdHJ1Y3QgcGFja2V0ICpwdHIpCit7CisgICAgcGt0LT5wX2xpbmsgPSAwOworCisg
ICAgd2hpbGUgKCBwdHItPnBfbGluayApIHB0ciA9IHB0ci0+cF9saW5rOworCisgICAgcHRyLT5w
X2xpbmsgPSBwa3Q7Cit9CisKK3ZvaWQgc2V0dXAoKQoreworICAgIHN0cnVjdCBwYWNrZXQgKndr
cSA9IDA7CisKKyAgICBjcmVhdGV0YXNrKElfSURMRSwgMCwgd2txLCBTX1JVTiwgaWRsZWZuLCAx
LCBDb3VudCk7CisKKyAgICB3a3EgPSBwa3QoMCwgMCwgS19XT1JLKTsKKyAgICB3a3EgPSBwa3Qo
d2txLCAwLCBLX1dPUkspOworCisgICAgY3JlYXRldGFzayhJX1dPUkssIDEwMDAsIHdrcSwgU19X
QUlUUEtULCB3b3JrZm4sIElfSEFORExFUkEsIDApOworCisgICAgd2txID0gcGt0KDAsIElfREVW
QSwgS19ERVYpOworICAgIHdrcSA9IHBrdCh3a3EsIElfREVWQSwgS19ERVYpOworICAgIHdrcSA9
IHBrdCh3a3EsIElfREVWQSwgS19ERVYpOworCisgICAgY3JlYXRldGFzayhJX0hBTkRMRVJBLCAy
MDAwLCB3a3EsIFNfV0FJVFBLVCwgaGFuZGxlcmZuLCAwLCAwKTsKKworICAgIHdrcSA9IHBrdCgw
LCBJX0RFVkIsIEtfREVWKTsKKyAgICB3a3EgPSBwa3Qod2txLCBJX0RFVkIsIEtfREVWKTsKKyAg
ICB3a3EgPSBwa3Qod2txLCBJX0RFVkIsIEtfREVWKTsKKworICAgIGNyZWF0ZXRhc2soSV9IQU5E
TEVSQiwgMzAwMCwgd2txLCBTX1dBSVRQS1QsIGhhbmRsZXJmbiwgMCwgMCk7CisKKyAgICB3a3Eg
PSAwOworICAgIGNyZWF0ZXRhc2soSV9ERVZBLCA0MDAwLCB3a3EsIFNfV0FJVCwgZGV2Zm4sIDAs
IDApOworICAgIGNyZWF0ZXRhc2soSV9ERVZCLCA1MDAwLCB3a3EsIFNfV0FJVCwgZGV2Zm4sIDAs
IDApOworCisgICAgdGNiID0gdGFza2xpc3Q7CisKKyAgICBxcGt0Y291bnQgPSBob2xkY291bnQg
PSAwOworCisgICAgdHJhY2luZyA9IEZBTFNFOworICAgIGxheW91dCA9IDA7Cit9CisKK2ludCBn
ZXRRcGt0Y291bnQoKQoreworICAgIHJldHVybiAgcXBrdGNvdW50OworfQorCitpbnQgZ2V0SG9s
ZGNvdW50KCkKK3sKKyAgICByZXR1cm4gaG9sZGNvdW50OworfQorCitpbnQgbWFpbigpCit7Cisg
ICAgY29uc3QgdW5zaWduZWQgaXRlcmF0aW9ucyA9IDUwOworICAgIGNvbnN0IENGVGltZUludGVy
dmFsIHN0YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICBzZXR1cCgpOworICAgICAgICBzY2hl
ZHVsZSgpOworICAgICAgICBpZiAocXBrdGNvdW50ICE9IFFwa3Rjb3VudHZhbCB8fCBob2xkY291
bnQgIT0gSG9sZGNvdW50dmFsKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9y
IGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAlZCwgaG9sZENvdW50ID0gJWQuXG4iLCBx
cGt0Y291bnQsIGhvbGRjb3VudCk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisK
KyAgICB9CisgICAgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZW5kID0gQ0FDdXJyZW50TWVkaWFUaW1l
KCk7CisgICAgcHJpbnRmKCIlZFxuIiwgKGludCkoKGVuZC1zdGFydCkgKiAxMDAwKSk7CisgICAg
cmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVm
ZXJlbmNlcy9SaWNoYXJkc0MvUmljaGFyZHNDL3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzQy9SaWNoYXJkc0MvcmljaGFyZHMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTk3MDI4ODkxNzAyY2NjNzc1MDZmNTJlYjgyM2YxMGFhOTRlMWUzZgotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJk
c0MvUmljaGFyZHNDL3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2Z1
bmN0aW9uIGNyZWF0ZVdvcmtmbih3YWl0LCBxcGt0LCBJX0hBTkRMRVJBLCBJX0hBTkRMRVJCLCBC
VUZTSVpFLCBhbHBoYWJldCkgeworICAgIC8vc3RydWN0IHRhc2sgKndvcmtmbihzdHJ1Y3QgcGFj
a2V0ICpwa3QpCisgICAgcmV0dXJuIGZ1bmN0aW9uKHBrdCwgdjEsIHYyKSB7CisgICAgICAgIGlm
ICghcGt0KQorICAgICAgICAgICAgcmV0dXJuIHdhaXQoKTsKKyAgICAgICAgdmFyIHYxID0gSV9I
QU5ETEVSQSArIElfSEFORExFUkIgLSB2MTsKKyAgICAgICAgdmFyIGRhdGEgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gQlVGU0laRTsgaSsrKSB7CisgICAgICAgICAgICB2Misr
OworICAgICAgICAgICAgaWYgKCB2MiA+IDI2ICkgdjIgPSAxOworICAgICAgICAgICAgZGF0YVtp
XSA9IGFscGhhYmV0W3YyXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gW3Fwa3QocGt0KSwg
djEsIHYyLCAwLCBkYXRhXTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNKUy9SaWNoYXJkc0pTLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZmY3MWE4YmVlMjYwNTIyZTNhMjA1YjM1MWUwOGMyYzhhNWExNmI4Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRz
SlMvUmljaGFyZHNKUy5qcwpAQCAtMCwwICsxLDU0MSBAQAorLy8gQ29weXJpZ2h0IDIwMDYtMjAw
OCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworLy8gVGhpcyBpcyBhIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIFJpY2hhcmRzCisvLyBiZW5jaG1hcmsgZnJvbToKKy8vCisvLyAgICBodHRwOi8vd3d3LmNs
LmNhbS5hYy51ay9+bXIxMC9CZW5jaC5odG1sCisvLworLy8gVGhlIGJlbmNobWFyayB3YXMgb3Jp
Z2luYWxseSBpbXBsZW1lbnRlZCBpbiBCQ1BMIGJ5CisvLyBNYXJ0aW4gUmljaGFyZHMuCisKKwor
LyoqCisgKiBUaGUgUmljaGFyZHMgYmVuY2htYXJrIHNpbXVsYXRlcyB0aGUgdGFzayBkaXNwYXRj
aGVyIG9mIGFuCisgKiBvcGVyYXRpbmcgc3lzdGVtLgorICoqLworZnVuY3Rpb24gcnVuUmljaGFy
ZHMoKSB7CisgIHZhciBzY2hlZHVsZXIgPSBuZXcgU2NoZWR1bGVyKCk7CisgIHNjaGVkdWxlci5h
ZGRJZGxlVGFzayhJRF9JRExFLCAwLCBudWxsLCBDT1VOVCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3
IFBhY2tldChudWxsLCBJRF9XT1JLRVIsIEtJTkRfV09SSyk7CisgIHF1ZXVlID0gbmV3IFBhY2tl
dChxdWV1ZSwgIElEX1dPUktFUiwgS0lORF9XT1JLKTsKKyAgc2NoZWR1bGVyLmFkZFdvcmtlclRh
c2soSURfV09SS0VSLCAxMDAwLCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0KG51bGws
IElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwg
IElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwg
IElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVyVGFzayhJ
RF9IQU5ETEVSX0EsIDIwMDAsIHF1ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwg
SURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAg
SURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAg
SURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElE
X0hBTkRMRVJfQiwgMzAwMCwgcXVldWUpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElE
X0RFVklDRV9BLCA0MDAwLCBudWxsKTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9E
RVZJQ0VfQiwgNTAwMCwgbnVsbCk7CisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYg
KHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8CisgICAgICBz
Y2hlZHVsZXIuaG9sZENvdW50ICE9IEVYUEVDVEVEX0hPTERfQ09VTlQpIHsKKyAgICB2YXIgbXNn
ID0KKyAgICAgICAgIkVycm9yIGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAiICsgc2No
ZWR1bGVyLnF1ZXVlQ291bnQgKworICAgICAgICAiLCBob2xkQ291bnQgPSAiICsgc2NoZWR1bGVy
LmhvbGRDb3VudCArICIuIjsKKyAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKKyAgfQorfQorCit2
YXIgQ09VTlQgPSAxMDAwOworCisvKioKKyAqIFRoZXNlIHR3byBjb25zdGFudHMgc3BlY2lmeSBo
b3cgbWFueSB0aW1lcyBhIHBhY2tldCBpcyBxdWV1ZWQgYW5kCisgKiBob3cgbWFueSB0aW1lcyBh
IHRhc2sgaXMgcHV0IG9uIGhvbGQgaW4gYSBjb3JyZWN0IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRo
ZXkgZG9uJ3QgaGF2ZSBhbnkgbWVhbmluZyBhIHN1Y2ggYnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBv
ZiBhCisgKiBjb3JyZWN0IHJ1biBzbyBpZiB0aGUgYWN0dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQg
aXMgZGlmZmVyZW50IGZyb20KKyAqIHRoZSBleHBlY3RlZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAqKi8KK3ZhciBFWFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIz
MjI7Cit2YXIgRVhQRUNURURfSE9MRF9DT1VOVCA9IDkyODsKKworCisvKioKKyAqIEEgc2NoZWR1
bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWly
IHJlbGF0aXZlCisgKiBwcmlvcml0aWVzLiAgU2NoZWR1bGluZyBpcyBkb25lIGJ5IG1haW50YWlu
aW5nIGEgbGlzdCBvZiB0YXNrIGNvbnRyb2wgYmxvY2tzCisgKiB3aGljaCBob2xkcyB0YXNrcyBh
bmQgdGhlIGRhdGEgcXVldWUgdGhleSBhcmUgcHJvY2Vzc2luZy4KKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCitmdW5jdGlvbiBTY2hlZHVsZXIoKSB7CisgIHRoaXMucXVldWVDb3VudCA9IDA7CisgIHRo
aXMuaG9sZENvdW50ID0gMDsKKyAgdGhpcy5ibG9ja3MgPSBuZXcgQXJyYXkoTlVNQkVSX09GX0lE
Uyk7CisgIHRoaXMubGlzdCA9IG51bGw7CisgIHRoaXMuY3VycmVudFRjYiA9IG51bGw7CisgIHRo
aXMuY3VycmVudElkID0gbnVsbDsKK30KKwordmFyIElEX0lETEUgICAgICAgPSAwOwordmFyIElE
X1dPUktFUiAgICAgPSAxOwordmFyIElEX0hBTkRMRVJfQSAgPSAyOwordmFyIElEX0hBTkRMRVJf
QiAgPSAzOwordmFyIElEX0RFVklDRV9BICAgPSA0OwordmFyIElEX0RFVklDRV9CICAgPSA1Owor
dmFyIE5VTUJFUl9PRl9JRFMgPSA2OworCit2YXIgS0lORF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lO
RF9XT1JLICAgICA9IDE7CisKKy8qKgorICogQWRkIGFuIGlkbGUgdGFzayB0byB0aGlzIHNjaGVk
dWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBw
YXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tl
dH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisg
KiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUg
dGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrID0gZnVuY3Rpb24gKGlk
LCBwcmlvcml0eSwgcXVldWUsIGNvdW50KSB7CisgIHRoaXMuYWRkUnVubmluZ1Rhc2soaWQsIHBy
aW9yaXR5LCBxdWV1ZSwgbmV3IElkbGVUYXNrKHRoaXMsIDEsIGNvdW50KSk7Cit9OworCisvKioK
KyAqIEFkZCBhIHdvcmsgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBp
ZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUg
dGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdv
cmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUu
YWRkV29ya2VyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMu
YWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgV29ya2VyVGFzayh0aGlzLCBJRF9IQU5E
TEVSX0EsIDApKTsKK307CisKKy8qKgorICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2No
ZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICog
QHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFj
a2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sK
KyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRIYW5kbGVyVGFzayA9IGZ1bmN0aW9uIChpZCwg
cHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBu
ZXcgSGFuZGxlclRhc2sodGhpcykpOworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sg
dG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRo
ZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICog
QHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBi
eSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2sgPSBmdW5j
dGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5
LCBxdWV1ZSwgbmV3IERldmljZVRhc2sodGhpcykpCit9OworCisvKioKKyAqIEFkZCB0aGUgc3Bl
Y2lmaWVkIHRhc2sgYW5kIG1hcmsgaXQgYXMgcnVubmluZy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0
aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFz
aydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsg
dG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRh
c2sgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5j
dGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmFkZFRhc2soaWQsIHBy
aW9yaXR5LCBxdWV1ZSwgdGFzayk7CisgIHRoaXMuY3VycmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9
OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisg
KiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2lu
dH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVl
IHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFt
IHtUYXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFk
ZFRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmN1
cnJlbnRUY2IgPSBuZXcgVGFza0NvbnRyb2xCbG9jayh0aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwg
cXVldWUsIHRhc2spOworICB0aGlzLmxpc3QgPSB0aGlzLmN1cnJlbnRUY2I7CisgIHRoaXMuYmxv
Y2tzW2lkXSA9IHRoaXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogRXhlY3V0ZSB0aGUgdGFz
a3MgbWFuYWdlZCBieSB0aGlzIHNjaGVkdWxlci4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5z
Y2hlZHVsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5saXN0Owor
ICB3aGlsZSAodGhpcy5jdXJyZW50VGNiICE9IG51bGwpIHsKKyAgICBpZiAodGhpcy5jdXJyZW50
VGNiLmlzSGVsZE9yU3VzcGVuZGVkKCkpIHsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMu
Y3VycmVudFRjYi5saW5rOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmN1cnJlbnRJZCA9IHRo
aXMuY3VycmVudFRjYi5pZDsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRj
Yi5ydW4oKTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogUmVsZWFzZSBhIHRhc2sgdGhhdCBp
cyBjdXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAq
IEBwYXJhbSB7aW50fSBpZCB0aGUgaWQgb2YgdGhlIHRhc2sgdG8gc3VzcGVuZAorICovCitTY2hl
ZHVsZXIucHJvdG90eXBlLnJlbGVhc2UgPSBmdW5jdGlvbiAoaWQpIHsKKyAgdmFyIHRjYiA9IHRo
aXMuYmxvY2tzW2lkXTsKKyAgaWYgKHRjYiA9PSBudWxsKSByZXR1cm4gdGNiOworICB0Y2IubWFy
a0FzTm90SGVsZCgpOworICBpZiAodGNiLnByaW9yaXR5ID4gdGhpcy5jdXJyZW50VGNiLnByaW9y
aXR5KSB7CisgICAgcmV0dXJuIHRjYjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdGhpcy5jdXJy
ZW50VGNiOworICB9Cit9OworCisvKioKKyAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5n
IHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4g
IFRoZSBibG9ja2VkIHRhc2sgd2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBl
eHBsaWNpdGx5CisgKiByZWxlYXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4K
KyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5ob2xkQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAg
dGhpcy5ob2xkQ291bnQrKzsKKyAgdGhpcy5jdXJyZW50VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0
dXJuIHRoaXMuY3VycmVudFRjYi5saW5rOworfTsKKworLyoqCisgKiBTdXNwZW5kIHRoZSBjdXJy
ZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxv
Y2sKKyAqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFz
ayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuc3Vz
cGVuZEN1cnJlbnQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNTdXNw
ZW5kZWQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogQWRkIHRo
ZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhl
IHRhc2sKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1
bm5hYmxlIGlmIGl0IGlzIGN1cnJlbnRseQorICogc3VzcGVuZGVkLgorICogQHBhcmFtIHtQYWNr
ZXR9IHBhY2tldCB0aGUgcGFja2V0IHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnF1
ZXVlID0gZnVuY3Rpb24gKHBhY2tldCkgeworICB2YXIgdCA9IHRoaXMuYmxvY2tzW3BhY2tldC5p
ZF07CisgIGlmICh0ID09IG51bGwpIHJldHVybiB0OworICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAg
cGFja2V0LmxpbmsgPSBudWxsOworICBwYWNrZXQuaWQgPSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0
dXJuIHQuY2hlY2tQcmlvcml0eUFkZCh0aGlzLmN1cnJlbnRUY2IsIHBhY2tldCk7Cit9OworCisv
KioKKyAqIEEgdGFzayBjb250cm9sIGJsb2NrIG1hbmFnZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUg
b2Ygd29yayBwYWNrYWdlcyBhc3NvY2lhdGVkCisgKiB3aXRoIGl0LgorICogQHBhcmFtIHtUYXNr
Q29udHJvbEJsb2NrfSBsaW5rIHRoZSBwcmVjZWRpbmcgYmxvY2sgaW4gdGhlIGxpbmtlZCBibG9j
ayBsaXN0CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJh
bSB7aW50fSBwcmlvcml0eSB0aGUgcHJpb3JpdHkgb2YgdGhpcyBibG9jaworICogQHBhcmFtIHtQ
YWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgYnkgdGhl
IHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzaworICogQGNvbnN0cnVjdG9yCisg
Ki8KK2Z1bmN0aW9uIFRhc2tDb250cm9sQmxvY2sobGluaywgaWQsIHByaW9yaXR5LCBxdWV1ZSwg
dGFzaykgeworICB0aGlzLmxpbmsgPSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRoaXMucHJp
b3JpdHkgPSBwcmlvcml0eTsKKyAgdGhpcy5xdWV1ZSA9IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0
YXNrOworICBpZiAocXVldWUgPT0gbnVsbCkgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQ
RU5ERUQ7CisgIH0gZWxzZSB7CisgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5O
QUJMRTsKKyAgfQorfQorCisvKioKKyAqIFRoZSB0YXNrIGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJl
bnRseSBzY2hlZHVsZWQuCisgKi8KK3ZhciBTVEFURV9SVU5OSU5HID0gMDsKKworLyoqCisgKiBU
aGUgdGFzayBoYXMgcGFja2V0cyBsZWZ0IHRvIHByb2Nlc3MuCisgKi8KK3ZhciBTVEFURV9SVU5O
QUJMRSA9IDE7CisKKy8qKgorICogVGhlIHRhc2sgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nLiAg
VGhlIHRhc2sgaXMgbm90IGJsb2NrZWQgYXMgc3VjaCBhbmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkg
dGhlIHNjaGVkdWxlci4KKyAqLwordmFyIFNUQVRFX1NVU1BFTkRFRCA9IDI7CisKKy8qKgorICog
VGhlIHRhc2sgaXMgYmxvY2tlZCBhbmQgY2Fubm90IGJlIHJ1biB1bnRpbCBpdCBpcyBleHBsaWNp
dGx5IHJlbGVhc2VkLgorICovCit2YXIgU1RBVEVfSEVMRCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQ
RU5ERURfUlVOTkFCTEUgPSBTVEFURV9TVVNQRU5ERUQgfCBTVEFURV9SVU5OQUJMRTsKK3ZhciBT
VEFURV9OT1RfSEVMRCA9IH5TVEFURV9IRUxEOworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5zZXRSdW5uaW5nID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklO
RzsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5j
dGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9
OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX0hFTEQ7Cit9OworCitUYXNrQ29u
dHJvbEJsb2NrLnByb3RvdHlwZS5pc0hlbGRPclN1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAg
cmV0dXJuICh0aGlzLnN0YXRlICYgU1RBVEVfSEVMRCkgIT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBT
VEFURV9TVVNQRU5ERUQpOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0Fz
U3VzcGVuZGVkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNU
QVRFX1NVU1BFTkRFRDsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1
bm5hYmxlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRF
X1JVTk5BQkxFOworfTsKKworLyoqCisgKiBSdW5zIHRoaXMgdGFzaywgaWYgaXQgaXMgcmVhZHkg
dG8gYmUgcnVuLCBhbmQgcmV0dXJucyB0aGUgbmV4dCB0YXNrIHRvIHJ1bi4KKyAqLworVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkgeworICB2YXIgcGFja2V0Owor
ICBpZiAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUpIHsKKyAgICBwYWNr
ZXQgPSB0aGlzLnF1ZXVlOworICAgIHRoaXMucXVldWUgPSBwYWNrZXQubGluazsKKyAgICBpZiAo
dGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsK
KyAgICB9IGVsc2UgeworICAgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworICAgIH0K
KyAgfSBlbHNlIHsKKyAgICBwYWNrZXQgPSBudWxsOworICB9CisgIHJldHVybiB0aGlzLnRhc2su
cnVuKHBhY2tldCk7Cit9OworCisvKioKKyAqIEFkZHMgYSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0
IG9mIHRoaXMgYmxvY2sncyB0YXNrLCBtYXJrcyB0aGlzIGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNl
c3NhcnksIGFuZCByZXR1cm5zIHRoZSBuZXh0IHJ1bm5hYmxlIG9iamVjdCB0byBydW4gKHRoZSBv
bmUKKyAqIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkpLgorICovCitUYXNrQ29udHJvbEJsb2Nr
LnByb3RvdHlwZS5jaGVja1ByaW9yaXR5QWRkID0gZnVuY3Rpb24gKHRhc2ssIHBhY2tldCkgewor
ICBpZiAodGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAg
ICB0aGlzLm1hcmtBc1J1bm5hYmxlKCk7CisgICAgaWYgKHRoaXMucHJpb3JpdHkgPiB0YXNrLnBy
aW9yaXR5KSByZXR1cm4gdGhpczsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0
LmFkZFRvKHRoaXMucXVldWUpOworICB9CisgIHJldHVybiB0YXNrOworfTsKKworVGFza0NvbnRy
b2xCbG9jay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAidGNi
IHsgIiArIHRoaXMudGFzayArICJAIiArIHRoaXMuc3RhdGUgKyAiIH0iOworfTsKKworLyoqCisg
KiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250
cm9sIGJldHdlZW4gdGhlIHR3bworICogZGV2aWNlIHRhc2tzLgorICogQHBhcmFtIHtTY2hlZHVs
ZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBw
YXJhbSB7aW50fSB2MSBhIHNlZWQgdmFsdWUgdGhhdCBjb250cm9scyBob3cgdGhlIGRldmljZSB0
YXNrcyBhcmUgc2NoZWR1bGVkCisgKiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0
aW1lcyB0aGlzIHRhc2sgc2hvdWxkIGJlIHNjaGVkdWxlZAorICogQGNvbnN0cnVjdG9yCisgKi8K
K2Z1bmN0aW9uIElkbGVUYXNrKHNjaGVkdWxlciwgdjEsIGNvdW50KSB7CisgIHRoaXMuc2NoZWR1
bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gdjE7CisgIHRoaXMuY291bnQgPSBjb3VudDsK
K30KKworSWRsZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhp
cy5jb3VudC0tOworICBpZiAodGhpcy5jb3VudCA9PSAwKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIu
aG9sZEN1cnJlbnQoKTsKKyAgaWYgKCh0aGlzLnYxICYgMSkgPT0gMCkgeworICAgIHRoaXMudjEg
PSB0aGlzLnYxID4+IDE7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVW
SUNFX0EpOworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSAodGhpcy52MSA+PiAxKSBeIDB4RDAw
ODsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQik7CisgIH0K
K307CisKK0lkbGVUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0
dXJuICJJZGxlVGFzayIKK307CisKKy8qKgorICogQSB0YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxm
IGFmdGVyIGVhY2ggdGltZSBpdCBoYXMgYmVlbiBydW4gdG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcg
Zm9yIGRhdGEgZnJvbSBhbiBleHRlcm5hbCBkZXZpY2UuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0g
c2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0
cnVjdG9yCisgKi8KK2Z1bmN0aW9uIERldmljZVRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2No
ZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gbnVsbDsKK30KKworRGV2aWNlVGFzay5w
cm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgeworICBpZiAocGFja2V0ID09IG51bGwp
IHsKKyAgICBpZiAodGhpcy52MSA9PSBudWxsKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVu
ZEN1cnJlbnQoKTsKKyAgICB2YXIgdiA9IHRoaXMudjE7CisgICAgdGhpcy52MSA9IG51bGw7Cisg
ICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICB9IGVsc2UgeworICAgIHRoaXMu
djEgPSBwYWNrZXQ7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7Cisg
IH0KK307CisKK0RldmljZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewor
ICByZXR1cm4gIkRldmljZVRhc2siOworfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBtYW5pcHVs
YXRlcyB3b3JrIHBhY2tldHMuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBz
Y2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQHBhcmFtIHtpbnR9IHYxIGEgc2Vl
ZCB1c2VkIHRvIHNwZWNpZnkgaG93IHdvcmsgcGFja2V0cyBhcmUgbWFuaXB1bGF0ZWQKKyAqIEBw
YXJhbSB7aW50fSB2MiBhbm90aGVyIHNlZWQgdXNlZCB0byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tl
dHMgYXJlIG1hbmlwdWxhdGVkCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gV29ya2Vy
VGFzayhzY2hlZHVsZXIsIHYxLCB2MikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsK
KyAgdGhpcy52MSA9IHYxOworICB0aGlzLnYyID0gdjI7Cit9CisKK1dvcmtlclRhc2sucHJvdG90
eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBhY2tldCA9PSBudWxsKSB7Cisg
ICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgIH0gZWxzZSB7Cisg
ICAgaWYgKHRoaXMudjEgPT0gSURfSEFORExFUl9BKSB7CisgICAgICB0aGlzLnYxID0gSURfSEFO
RExFUl9COworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9BOworICAg
IH0KKyAgICBwYWNrZXQuaWQgPSB0aGlzLnYxOworICAgIHBhY2tldC5hMSA9IDA7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBEQVRBX1NJWkU7IGkrKykgeworICAgICAgdGhpcy52MisrOworICAg
ICAgaWYgKHRoaXMudjIgPiAyNikgdGhpcy52MiA9IDE7CisgICAgICBwYWNrZXQuYTJbaV0gPSB0
aGlzLnYyOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUocGFja2V0KTsK
KyAgfQorfTsKKworV29ya2VyVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiAiV29ya2VyVGFzayI7Cit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IG1hbmlw
dWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYuCisgKiBAcGFyYW0g
e1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFz
aworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIEhhbmRsZXJUYXNrKHNjaGVkdWxlcikg
eworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7CisgIHRo
aXMudjIgPSBudWxsOworfQorCitIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24g
KHBhY2tldCkgeworICBpZiAocGFja2V0ICE9IG51bGwpIHsKKyAgICBpZiAocGFja2V0LmtpbmQg
PT0gS0lORF9XT1JLKSB7CisgICAgICB0aGlzLnYxID0gcGFja2V0LmFkZFRvKHRoaXMudjEpOwor
ICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnYyID0gcGFja2V0LmFkZFRvKHRoaXMudjIpOworICAg
IH0KKyAgfQorICBpZiAodGhpcy52MSAhPSBudWxsKSB7CisgICAgdmFyIGNvdW50ID0gdGhpcy52
MS5hMTsKKyAgICB2YXIgdjsKKyAgICBpZiAoY291bnQgPCBEQVRBX1NJWkUpIHsKKyAgICAgIGlm
ICh0aGlzLnYyICE9IG51bGwpIHsKKyAgICAgICAgdiA9IHRoaXMudjI7CisgICAgICAgIHRoaXMu
djIgPSB0aGlzLnYyLmxpbms7CisgICAgICAgIHYuYTEgPSB0aGlzLnYxLmEyW2NvdW50XTsKKyAg
ICAgICAgdGhpcy52MS5hMSA9IGNvdW50ICsgMTsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1
bGVyLnF1ZXVlKHYpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2ID0gdGhpcy52MTsK
KyAgICAgIHRoaXMudjEgPSB0aGlzLnYxLmxpbms7CisgICAgICByZXR1cm4gdGhpcy5zY2hlZHVs
ZXIucXVldWUodik7CisgICAgfQorICB9CisgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5k
Q3VycmVudCgpOworfTsKKworSGFuZGxlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rp
b24gKCkgeworICByZXR1cm4gIkhhbmRsZXJUYXNrIjsKK307CisKKy8qIC0tLSAqCisgKiBQIGEg
YyBrIGUgdAorICogLS0tICovCisKK3ZhciBEQVRBX1NJWkUgPSA0OworCisvKioKKyAqIEEgc2lt
cGxlIHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRo
ZSBleGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tl
dCBpcyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2YgdGhl
IHdvcmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lkZXMg
Y2FycnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVz
ZWQgYm90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3RzLgorICogQHBhcmFtIHtQYWNrZXR9IGxp
bmsgdGhlIHRhaWwgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIHBhY2tldHMKKyAqIEBwYXJhbSB7aW50
fSBpZCBhbiBJRCBmb3IgdGhpcyBwYWNrZXQKKyAqIEBwYXJhbSB7aW50fSBraW5kIHRoZSB0eXBl
IG9mIHRoaXMgcGFja2V0CisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gUGFja2V0KGxp
bmssIGlkLCBraW5kKSB7CisgIHRoaXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsKKyAg
dGhpcy5raW5kID0ga2luZDsKKyAgdGhpcy5hMSA9IDA7CisgIHRoaXMuYTIgPSBuZXcgQXJyYXko
REFUQV9TSVpFKTsKK30KKworLyoqCisgKiBBZGQgdGhpcyBwYWNrZXQgdG8gdGhlIGVuZCBvZiBh
IHdvcmtsaXN0LCBhbmQgcmV0dXJuIHRoZSB3b3JrbGlzdC4KKyAqIEBwYXJhbSB7UGFja2V0fSBx
dWV1ZSB0aGUgd29ya2xpc3QgdG8gYWRkIHRoaXMgcGFja2V0IHRvCisgKi8KK1BhY2tldC5wcm90
b3R5cGUuYWRkVG8gPSBmdW5jdGlvbiAocXVldWUpIHsKKyAgdGhpcy5saW5rID0gbnVsbDsKKyAg
aWYgKHF1ZXVlID09IG51bGwpIHJldHVybiB0aGlzOworICB2YXIgcGVlaywgbmV4dCA9IHF1ZXVl
OworICB3aGlsZSAoKHBlZWsgPSBuZXh0LmxpbmspICE9IG51bGwpCisgICAgbmV4dCA9IHBlZWs7
CisgIG5leHQubGluayA9IHRoaXM7CisgIHJldHVybiBxdWV1ZTsKK307CisKK1BhY2tldC5wcm90
b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiUGFja2V0IjsKK307CisK
KworY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpCitmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgcnVuUmljaGFyZHMoKTsKK2NvbnN0IGVuZCA9IERhdGUubm93KCkKK3ByaW50KGVuZCAt
IHN0YXJ0KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNl
cy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRz
T2JqQy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMmVkMmQ1NmUyYjJi
OWI3ODc3YzEwN2Y3ZWY3Nzg4MDgyZjdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMzQ4IEBACisvLyAhJCpVVEY4KiQhCit7
CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9u
ID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
KwkJMTRCQUUyREEyNTY5RTlDNTAwNjM2N0NGIC8qIERldmljZVRhc2subSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkFFMkQ5MjU2OUU5QzUwMDYzNjdD
RiAvKiBEZXZpY2VUYXNrLm0gKi87IH07CisJCTE0QkFFMkRFMjU2OUVCMTYwMDYzNjdDRiAvKiBU
YXNrLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJB
RTJERDI1NjlFQjE2MDA2MzY3Q0YgLyogVGFzay5tICovOyB9OworCQkxNEJBRTJFMjI1NjlFQ0M5
MDA2MzY3Q0YgLyogU2NoZWR1bGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNEJBRTJFMTI1NjlFQ0M5MDA2MzY3Q0YgLyogU2NoZWR1bGVyLm0gKi87
IH07CisJCTE0QkFFMkU5MjU2OUVEMkYwMDYzNjdDRiAvKiBXb3JrZXJUYXNrLm0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJBRTJFODI1NjlFRDJGMDA2
MzY3Q0YgLyogV29ya2VyVGFzay5tICovOyB9OworCQkxNEJBRTJFRTI1NjlFRDU1MDA2MzY3Q0Yg
LyogSGFuZGxlclRhc2subSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0QkFFMkVEMjU2OUVENTUwMDYzNjdDRiAvKiBIYW5kbGVyVGFzay5tICovOyB9Owor
CQkxNEJBRTJGMzI1NjlFRDdCMDA2MzY3Q0YgLyogSWRsZVRhc2subSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkFFMkYyMjU2OUVEN0IwMDYzNjdDRiAv
KiBJZGxlVGFzay5tICovOyB9OworCQkxNEJBRTJGODI1NjlFREEwMDA2MzY3Q0YgLyogUGFja2V0
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJBRTJG
NzI1NjlFREEwMDA2MzY3Q0YgLyogUGFja2V0Lm0gKi87IH07CisJCTE0QkFFMkZEMjU2QTFENTgw
MDYzNjdDRiAvKiBtYWluLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEJBRTJGQzI1NkExRDU4MDA2MzY3Q0YgLyogbWFpbi5tICovOyB9OworCQkxNEJB
RTMwMDI1NkExRDY3MDA2MzY3Q0YgLyogcmljaGFyZHMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkFFMkZGMjU2QTFENjcwMDYzNjdDRiAvKiByaWNo
YXJkcy5tICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQyMDI0OTlCQzVDMDA1
QkIyRTQgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9ICIiOworCQkJZHN0U3Vi
Zm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwor
CQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNPYmpDICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1
dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJkc09iakM7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTE0QkFFMkQ4MjU2OUU5QzUwMDYzNjdDRiAv
KiBEZXZpY2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZVRhc2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRDkyNTY5RTlDNTAwNjM2N0NGIC8qIERldmljZVRhc2su
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5vYmpjOyBwYXRoID0gRGV2aWNlVGFzay5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNEJBRTJEQzI1NjlFQjE2MDA2MzY3Q0YgLyogVGFzay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkREMjU2OUVCMTYw
MDYzNjdDRiAvKiBUYXNrLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFRhc2subTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRTAyNTY5RUNDOTAwNjM2N0NGIC8qIFNjaGVkdWxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTRCQUUyRTEyNTY5RUNDOTAwNjM2N0NGIC8qIFNjaGVkdWxlci5tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBTY2hlZHVsZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRTcy
NTY5RUQyRjAwNjM2N0NGIC8qIFdvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyVGFz
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJFODI1NjlFRDJGMDA2MzY3
Q0YgLyogV29ya2VyVGFzay5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXb3JrZXJUYXNrLm07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkVDMjU2OUVENTUwMDYzNjdDRiAvKiBIYW5k
bGVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNEJBRTJFRDI1NjlFRDU1MDA2MzY3Q0YgLyogSGFuZGxlclRhc2subSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5vYmpjOyBwYXRoID0gSGFuZGxlclRhc2subTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTRCQUUyRjEyNTY5RUQ3QjAwNjM2N0NGIC8qIElkbGVUYXNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElkbGVUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkYyMjU2
OUVEN0IwMDYzNjdDRiAvKiBJZGxlVGFzay5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBJZGxlVGFzay5t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJGNjI1NjlFREEwMDA2MzY3Q0Yg
LyogUGFja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNEJBRTJGNzI1NjlFREEwMDA2MzY3Q0YgLyogUGFja2V0Lm0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2Jq
YzsgcGF0aCA9IFBhY2tldC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJG
QzI1NkExRDU4MDA2MzY3Q0YgLyogbWFpbi5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBtYWluLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkZGMjU2QTFENjcwMDYzNjdDRiAvKiBy
aWNoYXJkcy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSByaWNoYXJkcy5tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNEJBRTMwNDI1NkEyMDI3MDA2MzY3Q0YgLyogRGV2aWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJFNCAvKiBGcmFtZXdvcmtz
ICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0
MTVBRDE5MjQ5OUJDNUIwMDVCQjJFNCA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMTQxNUFEMjQyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzT2JqQyAqLywK
KwkJCQkxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQxNUFEMjMyNDk5QkM1QzAwNUJCMkU0
IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNPYmpDICovLAorCQkJKTsK
KwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc09iakMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0QkFFMzA0MjU2QTIwMjcwMDYzNjdD
RiAvKiBEZXZpY2UuaCAqLywKKwkJCQkxNEJBRTJEODI1NjlFOUM1MDA2MzY3Q0YgLyogRGV2aWNl
VGFzay5oICovLAorCQkJCTE0QkFFMkQ5MjU2OUU5QzUwMDYzNjdDRiAvKiBEZXZpY2VUYXNrLm0g
Ki8sCisJCQkJMTRCQUUyRUMyNTY5RUQ1NTAwNjM2N0NGIC8qIEhhbmRsZXJUYXNrLmggKi8sCisJ
CQkJMTRCQUUyRUQyNTY5RUQ1NTAwNjM2N0NGIC8qIEhhbmRsZXJUYXNrLm0gKi8sCisJCQkJMTRC
QUUyRjEyNTY5RUQ3QjAwNjM2N0NGIC8qIElkbGVUYXNrLmggKi8sCisJCQkJMTRCQUUyRjIyNTY5
RUQ3QjAwNjM2N0NGIC8qIElkbGVUYXNrLm0gKi8sCisJCQkJMTRCQUUyRkMyNTZBMUQ1ODAwNjM2
N0NGIC8qIG1haW4ubSAqLywKKwkJCQkxNEJBRTJGNjI1NjlFREEwMDA2MzY3Q0YgLyogUGFja2V0
LmggKi8sCisJCQkJMTRCQUUyRjcyNTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5tICovLAorCQkJ
CTE0QkFFMkZGMjU2QTFENjcwMDYzNjdDRiAvKiByaWNoYXJkcy5tICovLAorCQkJCTE0QkFFMkUw
MjU2OUVDQzkwMDYzNjdDRiAvKiBTY2hlZHVsZXIuaCAqLywKKwkJCQkxNEJBRTJFMTI1NjlFQ0M5
MDA2MzY3Q0YgLyogU2NoZWR1bGVyLm0gKi8sCisJCQkJMTRCQUUyREMyNTY5RUIxNjAwNjM2N0NG
IC8qIFRhc2suaCAqLywKKwkJCQkxNEJBRTJERDI1NjlFQjE2MDA2MzY3Q0YgLyogVGFzay5tICov
LAorCQkJCTE0QkFFMkU3MjU2OUVEMkYwMDYzNjdDRiAvKiBXb3JrZXJUYXNrLmggKi8sCisJCQkJ
MTRCQUUyRTgyNTY5RUQyRjAwNjM2N0NGIC8qIFdvcmtlclRhc2subSAqLywKKwkJCSk7CisJCQlw
YXRoID0gUmljaGFyZHNPYmpDOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8q
IEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0
aW9uICovCisJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc09iakMgKi8gPSB7
CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQxNUFEMjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJkc09iakMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJ
CQkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMUYy
NDk5QkM1QzAwNUJCMkU0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMTQxNUFEMjAyNDk5QkM1QzAw
NUJCMkU0IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsK
KwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUmljaGFyZHNPYmpDOworCQkJ
cHJvZHVjdE5hbWUgPSBSaWNoYXJkc01vc3RseVN3aWZ0OworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc09iakMgKi87CisJCQlwcm9kdWN0
VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OworLyogRW5kIFBCWE5h
dGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLwor
CQkxNDE1QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlp
c2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0U3dpZnRVcGRhdGVD
aGVjayA9IDEyMDA7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDEyMDA7CisJCQkJVGFyZ2V0QXR0
cmlidXRlcyA9IHsKKwkJCQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0ID0geworCQkJCQkJQ3Jl
YXRlZE9uVG9vbHNWZXJzaW9uID0gMTIuMDsKKwkJCQkJCUxhc3RTd2lmdE1pZ3JhdGlvbiA9IDEy
MDA7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYUHJvamVjdCAiUmljaGFyZHNPYmpDIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0g
Ilhjb2RlIDkuMyI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IGVuOworCQkJaGFzU2Nhbm5lZEZv
ckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJCQkJQmFzZSwK
KwkJCSk7CisJCQltYWluR3JvdXAgPSAxNDE1QUQxOTI0OTlCQzVCMDA1QkIyRTQ7CisJCQlwcm9k
dWN0UmVmR3JvdXAgPSAxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVjdHMgKi87CisJ
CQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMg
PSAoCisJCQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzT2JqQyAqLywKKwkJ
CSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0IC8q
IFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNEJBRTJEQTI1NjlF
OUM1MDA2MzY3Q0YgLyogRGV2aWNlVGFzay5tIGluIFNvdXJjZXMgKi8sCisJCQkJMTRCQUUyRUUy
NTY5RUQ1NTAwNjM2N0NGIC8qIEhhbmRsZXJUYXNrLm0gaW4gU291cmNlcyAqLywKKwkJCQkxNEJB
RTJGMzI1NjlFRDdCMDA2MzY3Q0YgLyogSWRsZVRhc2subSBpbiBTb3VyY2VzICovLAorCQkJCTE0
QkFFMkZEMjU2QTFENTgwMDYzNjdDRiAvKiBtYWluLm0gaW4gU291cmNlcyAqLywKKwkJCQkxNEJB
RTJGODI1NjlFREEwMDA2MzY3Q0YgLyogUGFja2V0Lm0gaW4gU291cmNlcyAqLywKKwkJCQkxNEJB
RTMwMDI1NkExRDY3MDA2MzY3Q0YgLyogcmljaGFyZHMubSBpbiBTb3VyY2VzICovLAorCQkJCTE0
QkFFMkUyMjU2OUVDQzkwMDYzNjdDRiAvKiBTY2hlZHVsZXIubSBpbiBTb3VyY2VzICovLAorCQkJ
CTE0QkFFMkRFMjU2OUVCMTYwMDYzNjdDRiAvKiBUYXNrLm0gaW4gU291cmNlcyAqLywKKwkJCQkx
NEJBRTJFOTI1NjlFRDJGMDA2MzY3Q0YgLyogV29ya2VyVGFzay5tIGluIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07Cisv
KiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxk
Q29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTE0MTVBRDI3MjQ5OUJDNUMwMDVCQjJFNCAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19B
TkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1Rf
Q09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFO
REFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJ
CUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9
IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
QkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9D
T05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRF
RF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpD
X0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09N
TUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVD
VVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JK
Q19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xB
U1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdP
UktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlM
QUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09E
RSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOwor
CQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQg
PSBkd2FyZjsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlFTkFC
TEVfVEVTVEFCSUxJVFkgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUx
MTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NL
UyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJP
Q0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRl
ZCkiLAorCQkJCSk7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dB
Uk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVE
X0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBJTkNM
VURFX1NPVVJDRTsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCU9OTFlfQUNUSVZFX0FS
Q0ggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlTV0lGVF9BQ1RJVkVfQ09NUElM
QVRJT05fQ09ORElUSU9OUyA9IERFQlVHOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9
ICItT25vbmUiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxNUFEMjgyNDk5
QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhT
ID0gTk87CisJCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFM
WVpFUl9OVU1CRVJfT0JKRUNUX0NPTlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFO
R19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJB
UlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFO
R19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1B
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0RFUFJFQ0FURURfT0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FS
Tl9ET0NVTUVOVEFUSU9OX0NPTU1FTlRTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9E
WSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9O
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVE
X0lOQ0xVREVfSU5fRlJBTUVXT1JLX0hFQURFUiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdF
X0xPT1BfQU5BTFlTSVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX1VOR1VBUkRFRF9BVkFJTEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19X
QVJOX1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01F
VEhPRF9NQVRDSCA9IFlFUzsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdf
SU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJRU5BQkxFX05TX0FT
U0VSVElPTlMgPSBOTzsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJ
CQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdDQ19OT19DT01NT05fQkxP
Q0tTID0gWUVTOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJO
X1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9B
VVRPUyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gTk87CisJ
CQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZU
X0NPTVBJTEFUSU9OX01PREUgPSB3aG9sZW1vZHVsZTsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05f
TEVWRUwgPSAiLU8iOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDE1QUQy
QTI0OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMg
PSBZRVM7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCUxEX1JVTlBBVEhf
U0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIkBleGVjdXRhYmxl
X3BhdGgvLi4vRnJhbWV3b3JrcyIsCisJCQkJCSJAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3JrcyIs
CisJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZU
X09QVElNSVpBVElPTl9MRVZFTCA9ICItT25vbmUiOworCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7
CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIy
RTQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlD
T0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMg
PSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiQGV4ZWN1dGFibGVfcGF0aC8uLi9GcmFt
ZXdvcmtzIiwKKwkJCQkJIkBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzIiwKKwkJCQkpOworCQkJ
CVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUu
MDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmln
dXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlv
biAqLworCQkxNDE1QUQxRDI0OTlCQzVCMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc09iakMiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQxNUFEMjcy
NDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAorCQkJCTE0MTVBRDI4MjQ5OUJDNUMwMDVCQjJF
NCAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0
MTVBRDI5MjQ5OUJDNUMwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAiUmljaGFyZHNPYmpDIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDJBMjQ5OUJD
NUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLywKKwkJCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQgLyog
UmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhD
Q29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDE0MTVBRDFB
MjQ5OUJDNUIwMDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNP
YmpDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzT2JqQy54Y3NjaGVt
ZSBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmlj
aGFyZHNPYmpDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzT2JqQy54
Y3NjaGVtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NDk2YzEyZDdiMDM3MTliZWIzYmQ0Njk1NTk4N2JlNWZlM2Nl
MDhkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVu
Y2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3Nj
aGVtZXMvUmljaGFyZHNPYmpDLnhjc2NoZW1lCkBAIC0wLDAgKzEsODEgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2NoZW1lCisgICBMYXN0VXBncmFkZVZlcnNp
b24gPSAiMTIwMCIKKyAgIHZlcnNpb24gPSAiMS43Ij4KKyAgIDxCdWlsZEFjdGlvbgorICAgICAg
cGFyYWxsZWxpemVCdWlsZGFibGVzID0gIllFUyIKKyAgICAgIGJ1aWxkSW1wbGljaXREZXBlbmRl
bmNpZXMgPSAiWUVTIj4KKyAgICAgIDxCdWlsZEFjdGlvbkVudHJpZXM+CisgICAgICAgICA8QnVp
bGRBY3Rpb25FbnRyeQorICAgICAgICAgICAgYnVpbGRGb3JUZXN0aW5nID0gIllFUyIKKyAgICAg
ICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclByb2Zp
bGluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFyY2hpdmluZyA9ICJZRVMiCisgICAg
ICAgICAgICBidWlsZEZvckFuYWx5emluZyA9ICJZRVMiPgorICAgICAgICAgICAgPEJ1aWxkYWJs
ZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5
IgorICAgICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDE1QUQyMTI0OTlCQzVD
MDA1QkIyRTQiCisgICAgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRzT2JqQyIK
KyAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNPYmpDIgorICAgICAgICAg
ICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6UmljaGFyZHNPYmpDLnhjb2Rl
cHJvaiI+CisgICAgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgICAgIDwvQnVp
bGRBY3Rpb25FbnRyeT4KKyAgICAgIDwvQnVpbGRBY3Rpb25FbnRyaWVzPgorICAgPC9CdWlsZEFj
dGlvbj4KKyAgIDxUZXN0QWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWci
CisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5k
YXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0g
Ilhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgc2hvdWxkVXNl
TGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZRVMiPgorICAgICAgPFRlc3RhYmxlcz4KKyAgICAgIDwv
VGVzdGFibGVzPgorICAgPC9UZXN0QWN0aW9uPgorICAgPExhdW5jaEFjdGlvbgorICAgICAgYnVp
bGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZp
ZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBzZWxl
Y3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNo
ZXIuTExEQiIKKyAgICAgIGxhdW5jaFN0eWxlID0gIjAiCisgICAgICB1c2VDdXN0b21Xb3JraW5n
RGlyZWN0b3J5ID0gIk5PIgorICAgICAgaWdub3Jlc1BlcnNpc3RlbnRTdGF0ZU9uTGF1bmNoID0g
Ik5PIgorICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgorICAgICAgZGVidWdT
ZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgorICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRp
b24gPSAiWUVTIj4KKyAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1
bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4KKyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UK
KyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAg
IEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IgorICAgICAg
ICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc09iakMiCisgICAgICAgICAgICBCbHVlcHJp
bnROYW1lID0gIlJpY2hhcmRzT2JqQyIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIg
PSAiY29udGFpbmVyOlJpY2hhcmRzT2JqQy54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFi
bGVSZWZlcmVuY2U+CisgICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgIDwvTGF1
bmNoQWN0aW9uPgorICAgPFByb2ZpbGVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9
ICJSZWxlYXNlIgorICAgICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZRVMiCisg
ICAgICBzYXZlZFRvb2xJZGVudGlmaWVyID0gIiIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJl
Y3RvcnkgPSAiTk8iCisgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiPgorICAg
ICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdN
b2RlID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVp
bGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRp
ZmllciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVO
YW1lID0gIlJpY2hhcmRzT2JqQyIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFy
ZHNPYmpDIgorICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6Umlj
aGFyZHNPYmpDLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAg
ICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9Qcm9maWxlQWN0aW9uPgorICAg
PEFuYWx5emVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CisgICA8
L0FuYWx5emVBY3Rpb24+CisgICA8QXJjaGl2ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0
aW9uID0gIlJlbGVhc2UiCisgICAgICByZXZlYWxBcmNoaXZlSW5Pcmdhbml6ZXIgPSAiWUVTIj4K
KyAgIDwvQXJjaGl2ZUFjdGlvbj4KKyAgIDxJbnN0YWxsQWN0aW9uCisgICAgICBidWlsZENvbmZp
Z3VyYXRpb24gPSAiUmVsZWFzZSI+CisgICA8L0luc3RhbGxBY3Rpb24+Cis8L1NjaGVtZT4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09i
akMvUmljaGFyZHNPYmpDL0RldmljZS5oIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZl
cmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvRGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcz
NGQwZjRkNmRlZjMzY2U0MDhiZWI0OTg3YjE1MGVmNDM0Y2ZiMwotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFy
ZHNPYmpDL0RldmljZS5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgorCit0eXBlZGVmIE5TX0VOVU0odW5zaWduZWQsIERldmlj
ZSkgeworICAgIEEsCisgICAgQgorfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL0RldmljZVRhc2suaCBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFy
ZHNPYmpDL0RldmljZVRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzE5NjRiMjI2NWJhMmRlMzM4YTc1MDEy
YjFiMmM5MWE1ODMxMWMyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvRGV2aWNlVGFzay5oCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgIkRldmljZS5oIgorI2ltcG9ydCAi
UGFja2V0LmgiCisjaW1wb3J0ICJUYXNrLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisvKioKKyAqIEEgdGFzayB0aGF0
IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVs
YXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICovCitA
aW50ZXJmYWNlIERldmljZVRhc2sgOiBUYXNrCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24sIHJlYWRvbmx5KSBEZXZpY2UgZGV2aWNlOworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9u
ZywgbnVsbGFibGUpIFBhY2tldCAqcGVuZGluZ1BhY2tldDsKKworKyAoaW5zdGFuY2V0eXBlKWNy
ZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBkZXZpY2U6KERldmljZSlk
ZXZpY2UgcHJpb3JpdHk6KFByaW9yaXR5KXByaW9yaXR5OworLSAobnVsbGFibGUgVGFzayAqKXJ1
bjoobnVsbGFibGUgUGFja2V0ICopcGFja2V0OworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1Jp
Y2hhcmRzT2JqQy9SaWNoYXJkc09iakMvRGV2aWNlVGFzay5tIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvRGV2aWNlVGFzay5t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNkZDk1NWExNjEyYzNkOGU1MTkyMDE4NDc3ODg1ZWIxOTFjYWJjMzgKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmlj
aGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9EZXZpY2VUYXNrLm0KQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKyNpbXBvcnQgIkRldmljZVRhc2suaCIKKworQGltcGxlbWVudGF0aW9uIERldmljZVRh
c2sKKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNj
aGVkdWxlciBkZXZpY2U6KERldmljZSkgZGV2aWNlIHByaW9yaXR5OihQcmlvcml0eSlwcmlvcml0
eQoreworICAgIERldmljZVRhc2sgKnRhc2sgPSBbc3VwZXIgY3JlYXRlV2l0aFNjaGVkdWxlcjpz
Y2hlZHVsZXIgcHJpb3JpdHk6cHJpb3JpdHkgcXVldWU6bmlsXTsKKyAgICB0YXNrLT5fZGV2aWNl
ID0gZGV2aWNlOworICAgIFt0YXNrLnNjaGVkdWxlciBhZGRUYXNrOnRhc2tdOworICAgIHJldHVy
biB0YXNrOworfQorCisKKy0gKG51bGxhYmxlIFRhc2sgKilydW46KG51bGxhYmxlIFBhY2tldCAq
KXBhY2tldAoreworICAgIGlmICghcGFja2V0KSB7CisgICAgICAgIGlmICghc2VsZi5wZW5kaW5n
UGFja2V0KQorICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnNjaGVkdWxlciB3YWl0Q3VycmVudF07
CisgICAgICAgIFBhY2tldCAqcGFja2V0ID0gc2VsZi5wZW5kaW5nUGFja2V0OworICAgICAgICBf
cGVuZGluZ1BhY2tldCA9IG5pbDsKKyAgICAgICAgcmV0dXJuIFtzZWxmLnNjaGVkdWxlciBoYW5k
bGU6cGFja2V0XTsKKyAgICB9CisKKyAgICBfcGVuZGluZ1BhY2tldCA9IHBhY2tldDsKKyAgICBy
ZXR1cm4gW3NlbGYuc2NoZWR1bGVyIGhvbGRDdXJyZW50XTsKK30KKworCitAZW5kCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1Jp
Y2hhcmRzT2JqQy9IYW5kbGVyVGFzay5oIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZl
cmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvSGFuZGxlclRhc2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hYmMzYjUxNzA5MzRkNjhjZTE2OGNkOWMwMGYxNGQ1YzM0YTg1YWMwCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9S
aWNoYXJkc09iakMvSGFuZGxlclRhc2suaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aW1wb3J0ICJEZXZpY2VUYXNrLmgiCisjaW1wb3J0ICJQYWNrZXQuaCIKKyNpbXBvcnQgIlRhc2su
aCIKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKKy8qKgorICogQSB0YXNrIHRoYXQgbWFuaXB1bGF0ZXMgd29yayBwYWNrZXRz
IGFuZCB0aGVuIHN1c3BlbmRzIGl0c2VsZi4KKyAqLworQGludGVyZmFjZSBIYW5kbGVyVGFzayA6
IFRhc2sKKworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgcmVhZG9ubHkpIERldmljZSBk
ZXZpY2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCByZWFkb25seSwgbnVsbGFibGUp
IFBhY2tldCAqd29ya1F1ZXVlOworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgcmVhZG9u
bHksIG51bGxhYmxlKSBQYWNrZXQgKmRldmljZVF1ZXVlOworCisrIChpbnN0YW5jZXR5cGUpY3Jl
YXRlV2l0aFNjaGVkdWxlcjooU2NoZWR1bGVyICopc2NoZWR1bGVyIGRldmljZTooRGV2aWNlKWRl
dmljZSBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHkgcXVldWU6KFBhY2tldCAqKXF1ZXVlOwor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvSGFuZGxl
clRhc2subSBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09i
akMvUmljaGFyZHNPYmpDL0hhbmRsZXJUYXNrLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVmNDRhN2ExNjhiMjA4
M2VjZWM1MTJjNDU1ZThlOTRmYjNkYTFiMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL0hhbmRs
ZXJUYXNrLm0KQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiSGFuZGxlclRh
c2suaCIKKworQGltcGxlbWVudGF0aW9uIEhhbmRsZXJUYXNrCisgICAgCisrIChpbnN0YW5jZXR5
cGUpY3JlYXRlV2l0aFNjaGVkdWxlcjooU2NoZWR1bGVyICopc2NoZWR1bGVyIGRldmljZTooRGV2
aWNlKWRldmljZSBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHkgcXVldWU6KFBhY2tldCAqKXF1
ZXVlCit7CisgICAgSGFuZGxlclRhc2sgKnRhc2sgPSBbc3VwZXIgY3JlYXRlV2l0aFNjaGVkdWxl
cjpzY2hlZHVsZXIgcHJpb3JpdHk6cHJpb3JpdHkgcXVldWU6cXVldWVdOworICAgIHRhc2stPl9k
ZXZpY2UgPSBkZXZpY2U7CisgICAgW3NjaGVkdWxlciBhZGRUYXNrOnRhc2tdOworICAgIHJldHVy
biB0YXNrOworfQorCistIChudWxsYWJsZSBUYXNrICopcnVuOihudWxsYWJsZSBQYWNrZXQgKilw
YWNrZXQKK3sKKyAgICBpZiAocGFja2V0KSB7CisgICAgICAgIGlmIChbcGFja2V0IGlzS2luZE9m
Q2xhc3M6W1dvcmtQYWNrZXQgY2xhc3NdXSkKKyAgICAgICAgICAgIF93b3JrUXVldWUgPSBbcGFj
a2V0IGFkZFRvUXVldWU6c2VsZi53b3JrUXVldWVdOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBfZGV2aWNlUXVldWUgPSBbcGFja2V0IGFkZFRvUXVldWU6c2VsZi5kZXZpY2VRdWV1ZV07Cisg
ICAgfQorICAgIGlmIChzZWxmLndvcmtRdWV1ZSkgeworICAgICAgICBXb3JrUGFja2V0ICp3b3Jr
UGFja2V0ID0gKFdvcmtQYWNrZXQgKilzZWxmLndvcmtRdWV1ZTsKKyAgICAgICAgaWYgKHdvcmtQ
YWNrZXQucHJvY2Vzc2VkIDwgV29ya1BhY2tldC5zaXplKSB7CisgICAgICAgICAgICBpZiAoc2Vs
Zi5kZXZpY2VRdWV1ZSkgeworICAgICAgICAgICAgICAgIERldmljZVBhY2tldCAqZGV2aWNlUGFj
a2V0ID0gKERldmljZVBhY2tldCAqKXNlbGYuZGV2aWNlUXVldWU7CisgICAgICAgICAgICAgICAg
X2RldmljZVF1ZXVlID0gZGV2aWNlUGFja2V0Lmxpbms7CisgICAgICAgICAgICAgICAgZGV2aWNl
UGFja2V0LmxldHRlckluZGV4ID0gW3dvcmtQYWNrZXQuZGF0YVt3b3JrUGFja2V0LnByb2Nlc3Nl
ZF0gaW50VmFsdWVdOworICAgICAgICAgICAgICAgICsrd29ya1BhY2tldC5wcm9jZXNzZWQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnNjaGVkdWxlciBxdWV1ZTpkZXZpY2VQYWNrZXRd
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgX3dvcmtRdWV1
ZSA9IHdvcmtQYWNrZXQubGluazsKKyAgICAgICAgICAgIHJldHVybiBbc2VsZi5zY2hlZHVsZXIg
cXVldWU6d29ya1BhY2tldF07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFtzZWxmLnNj
aGVkdWxlciB3YWl0Q3VycmVudF07Cit9CisKKworQGVuZApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvSWRs
ZVRhc2suaCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09i
akMvUmljaGFyZHNPYmpDL0lkbGVUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkzYmY5ZWIxZGE2YjIxZDE4
N2VjMGQwMDI2ODQ3ZGZhZmFlNDI5ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL0lkbGVUYXNr
LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiVGFzay5oIgorCisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworLyoqCisgKiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5
Y2xlcyBjb250cm9sIGJldHdlZW4gdGhlIHR3byBkZXZpY2UgdGFza3MuCisgKi8KK0BpbnRlcmZh
Y2UgSWRsZVRhc2sgOiBUYXNrCisKKysgKGluc3RhbmNldHlwZSljcmVhdGVXaXRoU2NoZWR1bGVy
OihTY2hlZHVsZXIgKilzY2hlZHVsZXIgcHJpb3JpdHk6KFByaW9yaXR5KXByaW9yaXR5OworCitA
ZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvSWRsZVRhc2su
bSBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmlj
aGFyZHNPYmpDL0lkbGVUYXNrLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUzMjk3YjA5ZGUwNTRmZGIxN2YwYWEx
OGZkZTk1YWQ2MWMyOWY5MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL0lkbGVUYXNrLm0KQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiSWRsZVRhc2suaCIKKworQGltcGxl
bWVudGF0aW9uIElkbGVUYXNrIHsKKyAgICB1bnNpZ25lZCBfaGFzaDsKKyAgICB1bnNpZ25lZCBf
Y291bnQ7Cit9CisKKysgKGluc3RhbmNldHlwZSljcmVhdGVXaXRoU2NoZWR1bGVyOihTY2hlZHVs
ZXIgKilzY2hlZHVsZXIgcHJpb3JpdHk6KFByaW9yaXR5KXByaW9yaXR5Cit7CisgICAgSWRsZVRh
c2sgKnRhc2sgPSBbc3VwZXIgY3JlYXRlV2l0aFNjaGVkdWxlcjpzY2hlZHVsZXIgcHJpb3JpdHk6
cHJpb3JpdHkgcXVldWU6bmlsXTsKKyAgICB0YXNrLT5faGFzaCA9IDE7CisgICAgdGFzay0+X2Nv
dW50ID0gMTAwMDsKKyAgICBbdGFzayByZXN1bWVdOworICAgIFtzY2hlZHVsZXIgYWRkVGFzazp0
YXNrXTsKKyAgICByZXR1cm4gdGFzazsKK30KKworLSAobnVsbGFibGUgVGFzayAqKXJ1bjooUGFj
a2V0ICopcGFja2V0Cit7CisgICAgaWYgKCEtLV9jb3VudCkKKyAgICAgICAgcmV0dXJuIFtzZWxm
LnNjaGVkdWxlciBob2xkQ3VycmVudF07CisKKyAgICBpZiAoIShfaGFzaCAmIDEpKSB7CisgICAg
ICAgIF9oYXNoID4+PSAxOworICAgICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIHJlbGVhc2VE
ZXZpY2U6QV07CisgICAgfQorCisgICAgX2hhc2ggPj49IDE7CisgICAgX2hhc2ggXj0gMHhEMDA4
OworICAgIHJldHVybiBbc2VsZi5zY2hlZHVsZXIgcmVsZWFzZURldmljZTpCXTsKK30KKworCitA
ZW5kCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmlj
aGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9QYWNrZXQuaCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVu
Y2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL1BhY2tldC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ4NWRkZjU3ODU2M2IwMzc5NDFlODg1ZGYzZGI1ZDUyNTJjZGE0NzAKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpD
L1JpY2hhcmRzT2JqQy9QYWNrZXQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1w
b3J0ICJEZXZpY2UuaCIKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRh
IHRoYXQgaXMgbWFuaXB1bGF0ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAorICog
b2YgdGhlIHBheWxvYWQgZGF0YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50
LCBhbmQgbmVpdGhlciBpcyB0aGUKKyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24g
cGFja2V0cyBieSB0aGUgdGFza3MuCisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNr
ZXRzIGZvcm0gbGlua2VkIGxpc3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBkYXRh
IGFuZCB3b3JrbGlzdHMuCisgKi8KK0BpbnRlcmZhY2UgUGFja2V0IDogTlNPYmplY3QKKworQHBy
b3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgRGV2aWNlIGRldmljZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBzdHJvbmcsIG51bGxhYmxlKSBQYWNrZXQgKmxpbms7CisKKysgKGluc3RhbmNldHlw
ZSljcmVhdGU6KERldmljZSlkZXZpY2Ugd2l0aExpbms6KG51bGxhYmxlIFBhY2tldCAqKWxpbms7
CistIChub25udWxsIFBhY2tldCAqKWFkZFRvUXVldWU6KG51bGxhYmxlIFBhY2tldCAqKXF1ZXVl
OworCitAZW5kCisKK0BpbnRlcmZhY2UgRGV2aWNlUGFja2V0IDogUGFja2V0CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBsZXR0ZXJJbmRleDsKKworKyAoaW5zdGFuY2V0eXBl
KWNyZWF0ZTooRGV2aWNlKWRldmljZSB3aXRoTGluazoobnVsbGFibGUgUGFja2V0ICopbGluazsK
KworQGVuZAorCitAaW50ZXJmYWNlIFdvcmtQYWNrZXQgOiBQYWNrZXQKKworQHByb3BlcnR5IChu
b25hdG9taWMsIGFzc2lnbikgaW50IHByb2Nlc3NlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBz
dHJvbmcsIHJlYWRvbmx5KSBOU011dGFibGVBcnJheSAqZGF0YTsKKworKyAoaW5zdGFuY2V0eXBl
KWNyZWF0ZVdpdGhMaW5rOihudWxsYWJsZSBQYWNrZXQgKilsaW5rOworKyAodW5zaWduZWQpc2l6
ZTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL1Bh
Y2tldC5tIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2Jq
Qy9SaWNoYXJkc09iakMvUGFja2V0Lm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkxOTE4YjRiNTg0MTgxZjUwOWQ5
ZTNiZjA4ZjRmYTFlOGVmMjAyYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL1BhY2tldC5tCkBA
IC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgIlBhY2tldC5oIgorCitAaW1wbGVt
ZW50YXRpb24gUGFja2V0CisKKysgKGluc3RhbmNldHlwZSljcmVhdGU6KERldmljZSlkZXZpY2Ug
d2l0aExpbms6KFBhY2tldCAqKWxpbmsKK3sKKyAgICBQYWNrZXQgKnBhY2tldCA9IFtbc2VsZiBh
bGxvY10gaW5pdF07CisgICAgcGFja2V0LmRldmljZSA9IGRldmljZTsKKyAgICBwYWNrZXQubGlu
ayA9IGxpbms7CisgICAgcmV0dXJuIHBhY2tldDsKK30KKworLSAoUGFja2V0ICopYWRkVG9RdWV1
ZTooUGFja2V0ICopcXVldWUKK3sKKyAgICBzZWxmLmxpbmsgPSBuaWw7CisgICAgaWYgKCFxdWV1
ZSkKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgUGFja2V0KiBuZXh0ID0gcXVldWU7CisgICAg
d2hpbGUgKG5leHQubGluaykKKyAgICAgICAgbmV4dCA9IG5leHQubGluazsKKyAgICBuZXh0Lmxp
bmsgPSBzZWxmOworICAgIHJldHVybiBxdWV1ZTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gRGV2aWNlUGFja2V0CisKKysgKGluc3RhbmNldHlwZSljcmVhdGU6KERldmljZSlkZXZpY2Ug
d2l0aExpbms6KFBhY2tldCAqKWxpbmsKK3sKKyAgICBEZXZpY2VQYWNrZXQgKnBhY2tldCA9IFtz
dXBlciBjcmVhdGU6ZGV2aWNlIHdpdGhMaW5rOmxpbmtdOworICAgIHBhY2tldC5sZXR0ZXJJbmRl
eCA9IDA7CisgICAgcmV0dXJuIHBhY2tldDsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V29ya1BhY2tldAorCisrIChpbnN0YW5jZXR5cGUpY3JlYXRlV2l0aExpbms6KFBhY2tldCAqKWxp
bmsKK3sKKyAgICBXb3JrUGFja2V0ICpwYWNrZXQgPSBbc3VwZXIgY3JlYXRlOkEgd2l0aExpbms6
bGlua107CisgICAgcGFja2V0LnByb2Nlc3NlZCA9IDA7CisgICAgcGFja2V0LT5fZGF0YSA9IEBb
QDAsIEAwLCBAMCwgQDBdLm11dGFibGVDb3B5OworICAgIHJldHVybiBwYWNrZXQ7Cit9CisKKysg
KHVuc2lnbmVkKXNpemUKK3sKKyAgICByZXR1cm4gNDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJk
c09iakMvU2NoZWR1bGVyLmggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMv
UmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9TY2hlZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODhhNzlk
MGEyNDRkYjM3NzUwZmU0YzI3MzY3YTg3ODJhNzkwZDgyCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09i
akMvU2NoZWR1bGVyLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiUGFj
a2V0LmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAY2xhc3MgVGFzazsKKworLyoqCisqIEEgc2NoZWR1bGVyIGNhbiBi
ZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZl
CisqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0
IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyogd2hpY2ggaG9sZHMgdGFza3MgYW5kIHRoZSBkYXRh
IHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisqLworQGludGVyZmFjZSBTY2hlZHVsZXIgOiBO
U09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCByZWFkb25seSkgdW5zaWdu
ZWQgcXVldWVDb3VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHJlYWRvbmx5KSB1
bnNpZ25lZCBob2xkQ291bnQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCByZWFkb25s
eSwgbnVsbGFibGUpIFRhc2sgKmN1cnJlbnRUYXNrOworQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZywgcmVhZG9ubHksIG51bGxhYmxlKSBUYXNrICpsaXN0OworCisvKioKKyogRXhlY3V0ZSB0
aGUgdGFza3MgbWFuYWdlZCBieSB0aGlzIHNjaGVkdWxlci4KKyovCistICh2b2lkKXNjaGVkdWxl
OworCisvKioKKyogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyov
CistICh2b2lkKWFkZFRhc2s6KFRhc2sgKil0YXNrOworCisvKioKKyogUmVsZWFzZSBhIHRhc2sg
dGhhdCBpcyBjdXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1
bi4KKyovCistIChudWxsYWJsZSBUYXNrICopcmVsZWFzZURldmljZTooRGV2aWNlKWRldmljZTsK
KworLyoqCisqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0
aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyogdG8gcnVuLiAgVGhlIGJsb2NrZWQgdGFzayB3
aWxsIG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0IGlzIGV4cGxpY2l0bHkKKyogcmVsZWFz
ZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisqLworLSAobnVsbGFibGUgVGFz
ayAqKWhvbGRDdXJyZW50OworCisvKioKKyogU3VzcGVuZCB0aGUgY3VycmVudGx5IGV4ZWN1dGlu
ZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJsb2NrCisqIHRvIHJ1bi4g
IElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJlIG1h
ZGUgcnVubmFibGUuCisqLworLSAobnVsbGFibGUgVGFzayAqKXdhaXRDdXJyZW50OworCisvKioK
KyogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVz
ZWQgYnkgdGhlIHRhc2sKKyogYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5kIG1ha2UgdGhl
IHRhc2sgcnVubmFibGUgaWYgaXQgaXMgY3VycmVudGx5CisqIHN1c3BlbmRlZC4KKyovCistIChu
dWxsYWJsZSBUYXNrICopcXVldWU6KFBhY2tldCAqKXBhY2tldDsKKworLSAobnVsbGFibGUgVGFz
ayAqKWhhbmRsZTooUGFja2V0ICopcGFja2V0OworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1Jp
Y2hhcmRzT2JqQy9SaWNoYXJkc09iakMvU2NoZWR1bGVyLm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9TY2hlZHVsZXIubQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NDZlOTUxZGI0OTdjYWI4MDRlNjgyMjA2ZDU5YjJhY2NmNjNkMWYwCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hh
cmRzT2JqQy9SaWNoYXJkc09iakMvU2NoZWR1bGVyLm0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNpbXBvcnQgIlNjaGVkdWxlci5oIgorCisjaW1wb3J0ICJEZXZpY2VUYXNrLmgiCisj
aW1wb3J0ICJIYW5kbGVyVGFzay5oIgorI2ltcG9ydCAiVGFzay5oIgorI2ltcG9ydCAiV29ya2Vy
VGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gU2NoZWR1bGVyCisgICAgCistICh2b2lkKXNjaGVk
dWxlCit7CisgICAgX2N1cnJlbnRUYXNrID0gc2VsZi5saXN0OworICAgIFRhc2sgKnRhc2s7Cisg
ICAgd2hpbGUgKCh0YXNrID0gc2VsZi5jdXJyZW50VGFzaykpIHsKKyAgICAgICAgUGFja2V0ICpw
YWNrZXQgPSBuaWw7CisgICAgICAgIHN3aXRjaCAodGFzay5zdGF0ZSkgeworICAgICAgICBjYXNl
IFdhaXRpbmdXaXRoUGFja2V0OgorICAgICAgICAgICAgcGFja2V0ID0gW3Rhc2sgdGFrZVBhY2tl
dF07CisgICAgICAgIGNhc2UgUnVuOgorICAgICAgICBjYXNlIFJ1bldpdGhQYWNrZXQ6CisgICAg
ICAgICAgICBfY3VycmVudFRhc2sgPSBbdGFzayBydW46cGFja2V0XTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgX2N1cnJlbnRUYXNrID0gdGFzay5u
ZXh0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisgICAgCistICh2
b2lkKWFkZFRhc2s6KFRhc2sgKil0YXNrCit7CisgICAgdGFzay5uZXh0ID0gc2VsZi5saXN0Owor
ICAgIF9saXN0ID0gdGFzazsKK30KKworLSAobnVsbGFibGUgVGFzayAqKXJlbGVhc2VEZXZpY2U6
KERldmljZSlkZXZpY2UKK3sKKyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2ZpbmQ6XmJvb2woVGFz
ayAqdGFzaykgeworICAgICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbRGV2aWNlVGFz
ayBjbGFzc11dICYmICgoRGV2aWNlVGFzayopdGFzaykuZGV2aWNlID09IGRldmljZTsKKyAgICB9
XTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybiBuaWw7CisgICAgW3Rhc2sgcmVsZWFz
ZV9dOworICAgIGlmICh0YXNrLnByaW9yaXR5ID4gc2VsZi5jdXJyZW50VGFzay5wcmlvcml0eSkK
KyAgICAgICAgcmV0dXJuIHRhc2s7CisgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2s7Cit9CisK
Ky0gKG51bGxhYmxlIFRhc2sgKilob2xkQ3VycmVudAoreworICAgICsrX2hvbGRDb3VudDsKKyAg
ICBbc2VsZi5jdXJyZW50VGFzayBob2xkXTsKKyAgICByZXR1cm4gW3NlbGYuY3VycmVudFRhc2sg
bmV4dF07Cit9CisKKy0gKG51bGxhYmxlIFRhc2sgKil3YWl0Q3VycmVudAoreworICAgIFtzZWxm
LmN1cnJlbnRUYXNrIHdhaXRdOworICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrOworfQorCist
IChudWxsYWJsZSBUYXNrICopcXVldWU6KFBhY2tldCAqKXBhY2tldAoreworICAgIGJvb2wgKF5w
cmVkaWNhdGUpKFRhc2sgKik7CisgICAgaWYgKFtwYWNrZXQgaXNLaW5kT2ZDbGFzczpbRGV2aWNl
UGFja2V0IGNsYXNzXV0pIHsKKyAgICAgICAgcHJlZGljYXRlID0gXmJvb2woVGFzayAqdGFzaykg
eworICAgICAgICAgICAgcmV0dXJuIFt0YXNrIGlzS2luZE9mQ2xhc3M6W0RldmljZVRhc2sgY2xh
c3NdXSAmJiAoKERldmljZVRhc2sgKil0YXNrKS5kZXZpY2UgPT0gcGFja2V0LmRldmljZTsKKyAg
ICAgICAgfTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcmVkaWNhdGUgPSBeYm9vbChUYXNrICp0
YXNrKSB7CisgICAgICAgICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbV29ya2VyVGFz
ayBjbGFzc11dOworICAgICAgICB9OworICAgIH0KKyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2Zp
bmQ6cHJlZGljYXRlXTsKKyAgICByZXR1cm4gW3NlbGYgX3F1ZXVlSW1wbDp0YXNrIHBhY2tldDpw
YWNrZXRdOworfQorCistIChudWxsYWJsZSBUYXNrICopaGFuZGxlOihQYWNrZXQgKilwYWNrZXQK
K3sKKyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2ZpbmQ6XmJvb2woVGFzayAqdGFzaykgeworICAg
ICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbSGFuZGxlclRhc2sgY2xhc3NdXSAmJiAo
KEhhbmRsZXJUYXNrKil0YXNrKS5kZXZpY2UgPT0gcGFja2V0LmRldmljZTsKKyAgICB9XTsKKyAg
ICByZXR1cm4gW3NlbGYgX3F1ZXVlSW1wbDp0YXNrIHBhY2tldDpwYWNrZXRdOworfQorCisKKy0g
KG51bGxhYmxlIFRhc2sgKilfcXVldWVJbXBsOihudWxsYWJsZSBUYXNrKil0YXNrIHBhY2tldDoo
UGFja2V0ICopcGFja2V0Cit7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgICsrX3F1ZXVlQ291bnQ7CisgICAgcGFja2V0LmxpbmsgPSBuaWw7CisgICAgcmV0dXJuIFt0
YXNrIGNoZWNrUHJpb3JpdHlBZGQ6c2VsZi5jdXJyZW50VGFzayBwYWNrZXQ6cGFja2V0XTsKK30K
KworLSAobnVsbGFibGUgVGFzayAqKV9maW5kOihib29sICheKShUYXNrICopKXByZWRpY2F0ZQor
eworICAgIFRhc2sgKnRhc2sgPSBzZWxmLmxpc3Q7CisgICAgd2hpbGUgKHRhc2spIHsKKyAgICAg
ICAgaWYgKHByZWRpY2F0ZSh0YXNrKSkKKyAgICAgICAgICAgIHJldHVybiB0YXNrOworICAgICAg
ICB0YXNrID0gdGFzay5uZXh0OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCitAZW5kCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNP
YmpDL1JpY2hhcmRzT2JqQy9UYXNrLmggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVy
ZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9UYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY5MWU0
MzVkOWQwNDI1NDBkODc5NzJlYzRkMjhhZTY5M2ZhMDA5NwotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNP
YmpDL1Rhc2suaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJQYWNrZXQu
aCIKKyNpbXBvcnQgIlNjaGVkdWxlci5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwordHlwZWRlZiBOU19FTlVNKHVuc2ln
bmVkLCBQcmlvcml0eSkgeworICAgIElkbGUgPSAwLAorICAgIFdvcmtlciA9IDEwMDAsCisgICAg
SGFuZGxlckEgPSAyMDAwLAorICAgIEhhbmRsZXJCID0gMzAwMCwKKyAgICBEZXZpY2VBID0gNDAw
MCwKKyAgICBEZXZpY2VCID0gNTAwMCwKK307CisKK3R5cGVkZWYgTlNfRU5VTSh1bnNpZ25lZCwg
U3RhdGUpIHsKKyAgICBSdW4gPSAwLAorICAgIEhhc1BhY2tldCA9IDEgPDwgMCwKKyAgICBXYWl0
aW5nID0gMSA8PCAxLAorICAgIEhlbGQgPSAxIDw8IDIsCisgICAgCisgICAgUnVuV2l0aFBhY2tl
dCA9IFJ1biB8IEhhc1BhY2tldCwKKyAgICBXYWl0aW5nV2l0aFBhY2tldCA9IFdhaXRpbmcgfCBI
YXNQYWNrZXQsCit9OworCitAaW50ZXJmYWNlIFRhc2sgOiBOU09iamVjdAorCitAcHJvcGVydHkg
KG5vbmF0b21pYywgc3Ryb25nLCByZWFkb25seSkgU2NoZWR1bGVyICpzY2hlZHVsZXI7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduLCByZWFkb25seSkgUHJpb3JpdHkgcHJpb3JpdHk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCBudWxsYWJsZSkgVGFzayAqbmV4dDsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkgUGFja2V0ICpxdWV1
ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHJlYWRvbmx5KSBTdGF0ZSBzdGF0ZTsK
KworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVk
dWxlciBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHkgcXVldWU6KG51bGxhYmxlIFBhY2tldCAq
KXF1ZXVlOworLSAobnVsbGFibGUgVGFzayAqKXJ1bjoobnVsbGFibGUgUGFja2V0ICopcGFja2V0
OworLSAodm9pZClyZWxlYXNlXzsKKy0gKHZvaWQpaG9sZDsKKy0gKHZvaWQpd2FpdDsKKy0gKHZv
aWQpcmVzdW1lOworLSAoUGFja2V0ICopdGFrZVBhY2tldDsKKy0gKFRhc2sgKiljaGVja1ByaW9y
aXR5QWRkOihUYXNrICopdGFzayBwYWNrZXQ6KFBhY2tldCAqKXBhY2tldDsKK0BlbmQKKworTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9UYXNrLm0gYi9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9UYXNr
Lm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWNhOGI0NWY2YTIyNTQ5NDhhMzc0NGE1MzEyOTIyZDY4ZTBmYTE3Ywot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9S
aWNoYXJkc09iakMvUmljaGFyZHNPYmpDL1Rhc2subQpAQCAtMCwwICsxLDg4IEBACisvKgorKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgIlRhc2suaCIK
KworQGltcGxlbWVudGF0aW9uIFRhc2sKKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hl
ZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHkg
cXVldWU6KG51bGxhYmxlIFBhY2tldCAqKXF1ZXVlCit7CisgICAgVGFzayAqdGFzayA9IFtbc3Vw
ZXIgYWxsb2NdIGluaXRdOworICAgIHRhc2stPl9zY2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgICAg
dGFzay0+X3ByaW9yaXR5ID0gcHJpb3JpdHk7CisgICAgdGFzay0+X3F1ZXVlID0gcXVldWU7Cisg
ICAgaWYgKHF1ZXVlKQorICAgICAgICB0YXNrLT5fc3RhdGUgfD0gSGFzUGFja2V0OworICAgIHJl
dHVybiB0YXNrOworfQorCisKKy0gKG51bGxhYmxlIFRhc2sgKilydW46KG51bGxhYmxlIFBhY2tl
dCAqKXBhY2tldAoreworICAgIE5TTG9nKEAiVGhpcyBtZXRob2QgbXVzdCBiZSBvdmVycmlkZGVu
Iik7CisgICAgZXhpdCgxKTsKK30KKworLSAodm9pZClyZWxlYXNlXworeworICAgIF9zdGF0ZSAm
PSB+SGVsZDsKK30KKworLSAodm9pZClob2xkCit7CisgICAgX3N0YXRlIHw9IEhlbGQ7Cit9CisK
Ky0gKHZvaWQpd2FpdAoreworICAgIF9zdGF0ZSB8PSBXYWl0aW5nOworfQorCistICh2b2lkKXJl
c3VtZQoreworICAgIF9zdGF0ZSAmPSB+V2FpdGluZzsKK30KKworLSAoUGFja2V0ICopdGFrZVBh
Y2tldAoreworICAgIFBhY2tldCAqcGFja2V0ID0gc2VsZi5xdWV1ZTsKKyAgICBfcXVldWUgPSBw
YWNrZXQubGluazsKKyAgICBfc3RhdGUgPSBzZWxmLnF1ZXVlID8gUnVuV2l0aFBhY2tldCA6IFJ1
bjsKKyAgICByZXR1cm4gcGFja2V0OworfQorCistIChUYXNrICopY2hlY2tQcmlvcml0eUFkZDoo
VGFzayAqKXRhc2sgcGFja2V0OihQYWNrZXQgKilwYWNrZXQKK3sKKyAgICBpZiAoIXNlbGYucXVl
dWUpIHsKKyAgICAgICAgX3F1ZXVlID0gcGFja2V0OworICAgICAgICBfc3RhdGUgfD0gSGFzUGFj
a2V0OworICAgICAgICBpZiAoc2VsZi5wcmlvcml0eSA+IHRhc2sucHJpb3JpdHkpCisgICAgICAg
ICAgICByZXR1cm4gc2VsZjsKKyAgICB9IGVsc2UKKyAgICAgICAgX3F1ZXVlID0gW3BhY2tldCBh
ZGRUb1F1ZXVlOnNlbGYucXVldWVdOworICAgIHJldHVybiB0YXNrOworfQorCitAZW5kCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpD
L1JpY2hhcmRzT2JqQy9Xb3JrZXJUYXNrLmggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jl
ZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9Xb3JrZXJUYXNrLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWJlY2JhOWRlMTgyZmI0Y2FkY2RiZDQzMDc2NDNkODgwMjQ3YzkyMwotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMv
UmljaGFyZHNPYmpDL1dvcmtlclRhc2suaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aW1wb3J0ICJUYXNrLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdvcmtlclRhc2sgOiBUYXNrCisK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHJlYWRvbmx5KSBEZXZpY2UgZGV2aWNlOwor
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgcmVhZG9ubHkpIGludCBsZXR0ZXJJbmRleDsK
KworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVk
dWxlciBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHkgcXVldWU6KG51bGxhYmxlIFBhY2tldCAq
KXF1ZXVlOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09i
akMvV29ya2VyVGFzay5tIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1Jp
Y2hhcmRzT2JqQy9SaWNoYXJkc09iakMvV29ya2VyVGFzay5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxY2E4OGFl
Mzc3MjMyMTE5ZmFiNWUwMDhlODNiNjIyMDRlNTI3MDYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2Jq
Qy9Xb3JrZXJUYXNrLm0KQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiV29y
a2VyVGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gV29ya2VyVGFzaworCisrIChpbnN0YW5jZXR5
cGUpY3JlYXRlV2l0aFNjaGVkdWxlcjooU2NoZWR1bGVyICopc2NoZWR1bGVyIHByaW9yaXR5OihQ
cmlvcml0eSlwcmlvcml0eSBxdWV1ZTooUGFja2V0ICopcXVldWUKK3sKKyAgICBXb3JrZXJUYXNr
ICp0YXNrID0gW3N1cGVyIGNyZWF0ZVdpdGhTY2hlZHVsZXI6c2NoZWR1bGVyIHByaW9yaXR5OnBy
aW9yaXR5IHF1ZXVlOnF1ZXVlXTsKKyAgICB0YXNrLT5fZGV2aWNlID0gQTsKKyAgICBbc2NoZWR1
bGVyIGFkZFRhc2s6dGFza107CisgICAgcmV0dXJuIHRhc2s7Cit9CisKKy0gKFRhc2sgKilydW46
KFBhY2tldCAqKXBhY2tldAoreworICAgIGlmICghcGFja2V0KQorICAgICAgICByZXR1cm4gW3Nl
bGYuc2NoZWR1bGVyIHdhaXRDdXJyZW50XTsKKworICAgIF9kZXZpY2UgPSBzZWxmLmRldmljZSA9
PSBBID8gQiA6IEE7CisgICAgTlNBc3NlcnQoW3BhY2tldCBpc0tpbmRPZkNsYXNzOltXb3JrUGFj
a2V0IGNsYXNzXV0sIEAiIik7CisgICAgV29ya1BhY2tldCAqd29yayA9IChXb3JrUGFja2V0ICop
cGFja2V0OworICAgIHdvcmsuZGV2aWNlID0gc2VsZi5kZXZpY2U7CisgICAgd29yay5wcm9jZXNz
ZWQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXb3JrUGFja2V0LnNpemU7ICsr
aSkgeworICAgICAgICBpZiAoKytfbGV0dGVySW5kZXggPiAyNikKKyAgICAgICAgICAgIF9sZXR0
ZXJJbmRleCA9IDE7CisgICAgICAgIHdvcmsuZGF0YVtpXSA9IEAoc2VsZi5sZXR0ZXJJbmRleCk7
CisgICAgfQorICAgIHJldHVybiBbc2VsZi5zY2hlZHVsZXIgaGFuZGxlOndvcmtdOworfQorCitA
ZW5kCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmlj
aGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9tYWluLm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9tYWluLm0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzBkMjNhMzA4MzdlODAyNDRjNDJiYzliYjZlMzBlNGUxZmJiMWJlMQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmlj
aGFyZHNPYmpDL21haW4ubQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJE
ZXZpY2VUYXNrLmgiCisjaW1wb3J0ICJIYW5kbGVyVGFzay5oIgorI2ltcG9ydCAiSWRsZVRhc2su
aCIKKyNpbXBvcnQgIlBhY2tldC5oIgorI2ltcG9ydCAiU2NoZWR1bGVyLmgiCisjaW1wb3J0ICJX
b3JrZXJUYXNrLmgiCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgRVhQRUNURURfUVVFVUVfQ09VTlQgPSAyMzIyOworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKK3ZvaWQgcnVuUmljaGFy
ZHMoKQoreworICAgIFNjaGVkdWxlciAqc2NoZWR1bGVyID0gW1tTY2hlZHVsZXIgYWxsb2NdIGlu
aXRdOworCisgICAgW0lkbGVUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6c2NoZWR1bGVyIHByaW9y
aXR5OklkbGVdOworCisgICAgeworICAgICAgICBXb3JrUGFja2V0ICpxdWV1ZSA9IFtXb3JrUGFj
a2V0IGNyZWF0ZVdpdGhMaW5rOm5pbF07CisgICAgICAgIHF1ZXVlID0gW1dvcmtQYWNrZXQgY3Jl
YXRlV2l0aExpbms6cXVldWVdOworICAgICAgICBbV29ya2VyVGFzayBjcmVhdGVXaXRoU2NoZWR1
bGVyOnNjaGVkdWxlciBwcmlvcml0eTpXb3JrZXIgcXVldWU6cXVldWVdOworICAgIH0KKworICAg
IHsKKyAgICAgICAgRGV2aWNlUGFja2V0ICpxdWV1ZSA9IFtEZXZpY2VQYWNrZXQgY3JlYXRlOkEg
d2l0aExpbms6bmlsXTsKKyAgICAgICAgcXVldWUgPSBbRGV2aWNlUGFja2V0IGNyZWF0ZTpBIHdp
dGhMaW5rOiBxdWV1ZV07CisgICAgICAgIHF1ZXVlID0gW0RldmljZVBhY2tldCBjcmVhdGU6QSB3
aXRoTGluazogcXVldWVdOworICAgICAgICBbSGFuZGxlclRhc2sgY3JlYXRlV2l0aFNjaGVkdWxl
cjpzY2hlZHVsZXIgZGV2aWNlOkEgcHJpb3JpdHk6SGFuZGxlckEgcXVldWU6cXVldWVdOworICAg
IH0KKworICAgIHsKKyAgICAgICAgRGV2aWNlUGFja2V0ICpxdWV1ZSA9IFtEZXZpY2VQYWNrZXQg
Y3JlYXRlOkIgd2l0aExpbms6bmlsXTsKKyAgICAgICAgcXVldWUgPSBbRGV2aWNlUGFja2V0IGNy
ZWF0ZTpCIHdpdGhMaW5rOnF1ZXVlXTsKKyAgICAgICAgcXVldWUgPSBbRGV2aWNlUGFja2V0IGNy
ZWF0ZTpCIHdpdGhMaW5rOnF1ZXVlXTsKKyAgICAgICAgW0hhbmRsZXJUYXNrIGNyZWF0ZVdpdGhT
Y2hlZHVsZXI6c2NoZWR1bGVyIGRldmljZTpCIHByaW9yaXR5OkhhbmRsZXJCIHF1ZXVlOnF1ZXVl
XTsKKyAgICB9CisKKyAgICBbRGV2aWNlVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVyOnNjaGVkdWxl
ciBkZXZpY2U6QSBwcmlvcml0eTpEZXZpY2VBXTsKKyAgICBbRGV2aWNlVGFzayBjcmVhdGVXaXRo
U2NoZWR1bGVyOnNjaGVkdWxlciBkZXZpY2U6QiBwcmlvcml0eTpEZXZpY2VCXTsKKworICAgIFtz
Y2hlZHVsZXIgc2NoZWR1bGVdOworCisgICAgaWYgKHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVY
UEVDVEVEX1FVRVVFX0NPVU5UIHx8IHNjaGVkdWxlci5ob2xkQ291bnQgIT0gRVhQRUNURURfSE9M
RF9DT1VOVCkgeworICAgICAgICBOU0xvZyhAIkVycm9yIGR1cmluZyBleGVjdXRpb246IHF1ZXVl
Q291bnQgPSAlZCwgaG9sZENvdW50ID0gJWQuIiwgc2NoZWR1bGVyLnF1ZXVlQ291bnQsIHNjaGVk
dWxlci5ob2xkQ291bnQpOworICAgICAgICBleGl0KDEpOworICAgIH0KK30KKworCitpbnQgbWFp
bigpCit7CisgICAgY29uc3QgdW5zaWduZWQgaXRlcmF0aW9ucyA9IDUwOworICAgIGNvbnN0IENG
VGltZUludGVydmFsIHN0YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7ICsraSkKKyAgICAgICAgcnVuUmljaGFyZHMoKTsK
KyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBlbmQgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKKyAg
ICBwcmludGYoIiVkIiwgKGludCkoKGVuZC1zdGFydCkgKiAxMDAwKSk7CisgICAgcmV0dXJuIDA7
Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmlj
aGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9yaWNoYXJkcy5tIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvcmljaGFyZHMubQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYWViYmQzYzE4MTYyOGMyM2U4YmZmNDY4ZWYyZWUzYzkxN2JhNjVhCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRz
T2JqQy9SaWNoYXJkc09iakMvcmljaGFyZHMubQpAQCAtMCwwICsxLDI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRz
U3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNzUyM2I5OGFmMDM3NDg0M2Qw
NzMyNzUxYmM4Yjc3YmRkYmVkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwzMTggQEAKKy8vICEkKlVURjgqJCEKK3sKKwlh
cmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA1
MDsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkx
NDBBQUM0MDI0OUIwMUQxMDAwMUYxMUUgLyogUGFja2V0LnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFFIC8q
IFBhY2tldC5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDEyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hh
cmRzLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQwQUFDMzkyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0ICovOyB9OworCQkxNDBB
QUM0MjI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0EyNDlCMDFEMTAwMDFGMTFFIC8q
IFNjaGVkdWxlci5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDMyNDlCMDFEMTAwMDFGMTFFIC8qIFRh
c2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDBBQUMzQjI0OUIwMUQxMDAwMUYxMUUgLyogVGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDQy
NDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVU
YXNrLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0NTI0OUIwMUQxMDAwMUYxMUUgLyogSGFuZGxlclRh
c2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyogSGFuZGxlclRhc2suc3dpZnQgKi87IH07CisJCTE0
MEFBQzQ2MjQ5QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFF
IC8qIFdvcmtlclRhc2suc3dpZnQgKi87IH07CisJCTE0MEFBQzQ3MjQ5QjAxRDEwMDAxRjExRSAv
KiBEZXZpY2VUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQwQUFDM0YyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQgKi87
IH07CisJCTE0MTVBRDI2MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0IGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxNUFEMjUyNDk5QkM1QzAwNUJC
MkU0IC8qIG1haW4uc3dpZnQgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MTVBRDIw
MjQ5OUJDNUMwMDVCQjJFNCAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0gIiI7
CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCisJCTE0MEFBQzM4MjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gUGFja2V0LnN3aWZ0OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzOTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMu
c3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gcmljaGFyZHMuc3dpZnQ7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNBMjQ5QjAxRDEwMDAxRjExRSAv
KiBTY2hlZHVsZXIuc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gU2No
ZWR1bGVyLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzQjI0OUIw
MUQxMDAwMUYxMUUgLyogVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBh
dGggPSBUYXNrLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzQzI0
OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3
aWZ0OyBwYXRoID0gSWRsZVRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0MEFBQzNEMjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBIYW5kbGVyVGFzay5zd2lmdDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2su
c3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gV29ya2VyVGFzay5zd2lm
dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0YyNDlCMDFEMTAwMDFGMTFF
IC8qIERldmljZVRhc2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0g
RGV2aWNlVGFzay5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQxNUFEMjIy
NDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFJpY2hhcmRzU3dpZnQ7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTE0MTVBRDI1MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3
aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5zd2lmdDsgcGF0aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KKwkJMTQxNUFEMTkyNDk5QkM1QjAwNUJCMkU0ID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyNDI0OTlCQzVDMDA1QkIyRTQgLyogUmlj
aGFyZHNTd2lmdCAqLywKKwkJCQkxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVjdHMg
Ki8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQxNUFEMjMy
NDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNT
d2lmdCAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OworCQkxNDE1QUQyNDI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNTd2lm
dCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwQUFD
M0YyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQgKi8sCisJCQkJMTQwQUFDM0Qy
NDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0ICovLAorCQkJCTE0MEFBQzNDMjQ5
QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLywKKwkJCQkxNDE1QUQyNTI0OTlCQzVD
MDA1QkIyRTQgLyogbWFpbi5zd2lmdCAqLywKKwkJCQkxNDBBQUMzODI0OUIwMUQxMDAwMUYxMUUg
LyogUGFja2V0LnN3aWZ0ICovLAorCQkJCTE0MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNo
YXJkcy5zd2lmdCAqLywKKwkJCQkxNDBBQUMzQTI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVy
LnN3aWZ0ICovLAorCQkJCTE0MEFBQzNCMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICov
LAorCQkJCTE0MEFBQzNFMjQ5QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovLAor
CQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc1N3aWZ0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2
ZVRhcmdldCBzZWN0aW9uICovCisJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJk
c1N3aWZ0ICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDE0MTVBRDI5MjQ5OUJDNUMwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNTd2lmdCIgKi87CisJCQlidWls
ZFBoYXNlcyA9ICgKKwkJCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291cmNlcyAqLywK
KwkJCQkxNDE1QUQxRjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxNDE1
QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVs
ZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBSaWNo
YXJkc1N3aWZ0OworCQkJcHJvZHVjdE5hbWUgPSBSaWNoYXJkc1N3aWZ0OworCQkJcHJvZHVjdFJl
ZmVyZW5jZSA9IDE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc1N3aWZ0ICovOwor
CQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8q
IEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKwkJMTQxNUFEMUEyNDk5QkM1QjAwNUJCMkU0IC8qIFByb2plY3Qgb2JqZWN0ICov
ID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFN3
aWZ0VXBkYXRlQ2hlY2sgPSAxMjAwOworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMjAwOworCQkJ
CVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCA9IHsK
KwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEyLjA7CisJCQkJCX07CisJCQkJfTsKKwkJ
CX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNTd2lm
dCIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSA5LjMiOworCQkJZGV2ZWxv
cG1lbnRSZWdpb24gPSBlbjsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25v
d25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJCUJhc2UsCisJCQkpOworCQkJbWFpbkdyb3VwID0g
MTQxNUFEMTkyNDk5QkM1QjAwNUJCMkU0OworCQkJcHJvZHVjdFJlZkdyb3VwID0gMTQxNUFEMjMy
NDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsK
KwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTE0MTVBRDIxMjQ5OUJD
NUMwMDVCQjJFNCAvKiBSaWNoYXJkc1N3aWZ0ICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQ
cm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0MEFBQzQ3MjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VU
YXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDUyNDlCMDFEMTAwMDFGMTFFIC8q
IEhhbmRsZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDQyNDlCMDFEMTAw
MDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMjYyNDk5
QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLywKKwkJCQkxNDBBQUM0MDI0
OUIwMUQxMDAwMUYxMUUgLyogUGFja2V0LnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFD
NDEyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJ
MTQwQUFDNDIyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCBpbiBTb3VyY2VzICov
LAorCQkJCTE0MEFBQzQzMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0IGluIFNvdXJjZXMg
Ki8sCisJCQkJMTQwQUFDNDYyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgaW4g
U291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQxNUFEMjcyNDk5QkM1
QzAwNUJCMkU0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5P
OworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJf
TlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hY
X0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0g
ImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5B
QkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9D
VU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNM
VURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09Q
X0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9V
TkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9V
TlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0Rf
TUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9S
TUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0g
WUVTOworCQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19O
T19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwor
CQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJ
CQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09O
VkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJP
UjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJO
X1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVT
RURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwor
CQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVC
VUdfSU5GTyA9IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJ
T05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZU
X0FDVElWRV9DT01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7CisJCQkJU1dJRlRfT1BUSU1J
WkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9Owor
CQkxNDE1QUQyODI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VB
UkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOwor
CQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNT
SVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlD
TEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0g
WUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVf
T0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFT
SU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9O
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsK
KwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9O
VUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJ
Tl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xB
TkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklD
VF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZF
OworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBO
TzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJ
CQlFTkFCTEVfTlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dT
RU5EID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJR0ND
X05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7
CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9V
TklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VE
X0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJ
CQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVH
X0lORk8gPSBOTzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJU1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xlbW9kdWxlOworCQkJCVNXSUZU
X09QVElNSVpBVElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTE0MTVBRDJBMjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJ
R05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJ
fTsKKwkJMTQxNUFEMkIyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9T
SUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1F
KSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsK
KwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDE1QUQxRDI0OTlCQzVCMDA1QkIy
RTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc1N3
aWZ0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDI3MjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLywK
KwkJCQkxNDE1QUQyODI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDE1QUQyOTI0OTlCQzVDMDA1QkIyRTQgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzU3dpZnQi
ICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCisJCQkJMTQxNUFEMkEyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAorCQkJ
CTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICov
CisJfTsKKwlyb290T2JqZWN0ID0gMTQxNUFEMUEyNDk5QkM1QjAwNUJCMkU0IC8qIFByb2plY3Qg
b2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZl
cmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRh
L3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNz
aGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUx
MGM3NjA0OTU2YzZiMGEwZDk4ZDMyMTM1YTY4ZGZmMzA1NjUzODcKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU3dpZnQu
eGNzY2hlbWUKQEAgLTAsMCArMSw4MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
VVRGLTgiPz4KKzxTY2hlbWUKKyAgIExhc3RVcGdyYWRlVmVyc2lvbiA9ICIxMjAwIgorICAgdmVy
c2lvbiA9ICIxLjciPgorICAgPEJ1aWxkQWN0aW9uCisgICAgICBwYXJhbGxlbGl6ZUJ1aWxkYWJs
ZXMgPSAiWUVTIgorICAgICAgYnVpbGRJbXBsaWNpdERlcGVuZGVuY2llcyA9ICJZRVMiPgorICAg
ICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KKyAgICAgICAgIDxCdWlsZEFjdGlvbkVudHJ5CisgICAg
ICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JSdW5u
aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUHJvZmlsaW5nID0gIllFUyIKKyAgICAg
ICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQW5h
bHl6aW5nID0gIllFUyI+CisgICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAg
ICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICAgICBC
bHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAg
ICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTd2lmdCIKKyAgICAgICAgICAgICAgIEJs
dWVwcmludE5hbWUgPSAiUmljaGFyZHNTd2lmdCIKKyAgICAgICAgICAgICAgIFJlZmVyZW5jZWRD
b250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU3dpZnQueGNvZGVwcm9qIj4KKyAgICAgICAg
ICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5Pgor
ICAgICAgPC9CdWlsZEFjdGlvbkVudHJpZXM+CisgICA8L0J1aWxkQWN0aW9uPgorICAgPFRlc3RB
Y3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIHNlbGVjdGVk
RGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5M
TERCIgorICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJG
b3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdz
RW52ID0gIllFUyI+CisgICAgICA8VGVzdGFibGVzPgorICAgICAgPC9UZXN0YWJsZXM+CisgICA8
L1Rlc3RBY3Rpb24+CisgICA8TGF1bmNoQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24g
PSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1
Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVu
dGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAg
bGF1bmNoU3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8i
CisgICAgICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1
Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24g
PSAiaW50ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAg
ICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdN
b2RlID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVp
bGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRp
ZmllciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVO
YW1lID0gIlJpY2hhcmRzU3dpZnQiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hh
cmRzU3dpZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpS
aWNoYXJkc1N3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4K
KyAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9MYXVuY2hBY3Rpb24+Cisg
ICA8UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisg
ICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9v
bElkZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIK
KyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxl
UHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+Cisg
ICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlm
aWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVB
RDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFy
ZHNTd2lmdCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTd2lmdCIKKyAg
ICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU3dpZnQu
eGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWls
ZGFibGVQcm9kdWN0UnVubmFibGU+CisgICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFj
dGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFj
dGlvbj4KKyAgIDxBcmNoaXZlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVs
ZWFzZSIKKyAgICAgIHJldmVhbEFyY2hpdmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNo
aXZlQWN0aW9uPgorICAgPEluc3RhbGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9
ICJSZWxlYXNlIj4KKyAgIDwvSW5zdGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFy
ZHNTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZl
cmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ5MjBhNWFkNDQyZGYxZWM2YTg3N2NhMDQwOWRjNDNiMTE1ZDk1OTgKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNT
d2lmdC9SaWNoYXJkc1N3aWZ0L0RldmljZVRhc2suc3dpZnQKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKworZW51bSBEZXZpY2UgeworICAgIGNhc2UgQQorICAgIGNhc2UgQgorfQorCisvKioK
KyAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJl
ZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwg
ZGV2aWNlLgorICovCitjbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7CisgICAgbGV0IGRldmljZTog
RGV2aWNlCisgICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQYWNrZXQ/ID0gbmlsCisKKyAg
ICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNl
LCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IERldmljZVRh
c2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlvcml0eTogcHJpb3Jp
dHkpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVy
cmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBp
ZiBwYWNrZXQgPT0gbmlsIHsKKyAgICAgICAgICAgIGd1YXJkIGxldCBwYWNrZXQgPSBzZWxmLnBl
bmRpbmdQYWNrZXQgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVy
LndhaXRDdXJyZW50KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNlbGYucGVuZGluZ1Bh
Y2tldCA9IG5pbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhhbmRsZShwYWNr
ZXQ6IHBhY2tldCkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYucGVuZGluZ1BhY2tldCA9IChw
YWNrZXQgYXMhIERldmljZVBhY2tldCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhv
bGRDdXJyZW50KCkKKyAgICB9CisKKyAgICBwcml2YXRlIGluaXQoc2NoZWR1bGVyOiBTY2hlZHVs
ZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBz
ZWxmLmRldmljZSA9IGRldmljZQorICAgICAgICBzdXBlci5pbml0KHNjaGVkdWxlcjogc2NoZWR1
bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9I
YW5kbGVyVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9S
aWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSGFuZGxlclRhc2suc3dpZnQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTNhZmIyMWIyMmE3NWJlNTEwZDEyY2I3MjE4MzhjMTExMDRkMDY3NgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1Jp
Y2hhcmRzU3dpZnQvSGFuZGxlclRhc2suc3dpZnQKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8K
KworLyoqCisgKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMgYW5kIHRoZW4g
c3VzcGVuZHMgaXRzZWxmLgorICovCitjbGFzcyBIYW5kbGVyVGFzayA6IFRhc2sgeworICAgIHZh
ciBkZXZpY2U6IERldmljZQorICAgIHZhciB3b3JrUXVldWUgOiBXb3JrUGFja2V0PyA9IG5pbAor
ICAgIHZhciBkZXZpY2VRdWV1ZSA6IERldmljZVBhY2tldD8gPSBuaWwKKworICAgIHN0YXRpYyBm
dW5jIGNyZWF0ZShzY2hlZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNlOiBEZXZpY2UsIHByaW9yaXR5
OiBQcmlvcml0eSwgcXVldWU6IERldmljZVBhY2tldCkKKyAgICB7CisgICAgICAgIGxldCB0YXNr
ID0gSGFuZGxlclRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlv
cml0eTogcHJpb3JpdHksIHF1ZXVlOiBxdWV1ZSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNr
OiB0YXNrKQorICAgIH0KKworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0Pykg
LT4gVGFzaz8KKyAgICB7CisgICAgICAgIGlmIGxldCBwID0gcGFja2V0IHsKKyAgICAgICAgICAg
IGlmIGxldCB3b3JrID0gcCBhcz8gV29ya1BhY2tldCB7CisgICAgICAgICAgICAgICAgc2VsZi53
b3JrUXVldWUgPSB3b3JrLmFkZFRvKHF1ZXVlOiBzZWxmLndvcmtRdWV1ZSkgYXMhIFdvcmtQYWNr
ZXQ/CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNlbGYuZGV2aWNlUXVl
dWUgPSAocCBhcyEgRGV2aWNlUGFja2V0KS5hZGRUbyhxdWV1ZTogc2VsZi5kZXZpY2VRdWV1ZSkg
YXMhIERldmljZVBhY2tldD8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiBs
ZXQgd29ya1BhY2tldCA9IHNlbGYud29ya1F1ZXVlIHsKKyAgICAgICAgICAgIGxldCBwcm9jZXNz
ZWQgPSB3b3JrUGFja2V0LnByb2Nlc3NlZAorICAgICAgICAgICAgaWYgKHByb2Nlc3NlZCA8IFdv
cmtQYWNrZXQuU0laRSkgeworICAgICAgICAgICAgICAgIGlmIGxldCBkZXZpY2VQYWNrZXQgPSBz
ZWxmLmRldmljZVF1ZXVlIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kZXZpY2VRdWV1ZSA9
IGRldmljZVBhY2tldC5saW5rIGFzISBEZXZpY2VQYWNrZXQ/CisgICAgICAgICAgICAgICAgICAg
IGRldmljZVBhY2tldC5sZXR0ZXJJbmRleCA9IHdvcmtQYWNrZXQuZGF0YVtwcm9jZXNzZWRdCisg
ICAgICAgICAgICAgICAgICAgIHdvcmtQYWNrZXQucHJvY2Vzc2VkID0gcHJvY2Vzc2VkICsgMQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucXVldWUocGFja2V0OiBk
ZXZpY2VQYWNrZXQpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBzZWxmLndvcmtRdWV1ZSA9IHdvcmtQYWNrZXQubGluayBhcyEgV29ya1Bh
Y2tldD8KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucXVldWUocGFja2V0
OiB3b3JrUGFja2V0KQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBz
ZWxmLnNjaGVkdWxlci53YWl0Q3VycmVudCgpCisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0KHNj
aGVkdWxlcjogU2NoZWR1bGVyLCBkZXZpY2U6IERldmljZSwgcHJpb3JpdHk6IFByaW9yaXR5LCBx
dWV1ZTogRGV2aWNlUGFja2V0KQorICAgIHsKKyAgICAgICAgc2VsZi5kZXZpY2UgPSBkZXZpY2UK
KyAgICAgICAgc3VwZXIuaW5pdChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9y
aXR5LCBxdWV1ZTogcXVldWUpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9JZGxlVGFz
ay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3
aWZ0L1JpY2hhcmRzU3dpZnQvSWRsZVRhc2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFjZjMxYWJjZDA2
OGUwNTg2Yzg4ODUxMDUzNzFjMWRjNTc4MWZlNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQv
SWRsZVRhc2suc3dpZnQKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLyoqCisgKiBBbiBp
ZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJl
dHdlZW4gdGhlIHR3byBkZXZpY2UgdGFza3MuCisgKi8KK2NsYXNzIElkbGVUYXNrIDogVGFzayB7
CisgICAgdmFyIGhhc2ggOiBJbnQgPSAxCisgICAgdmFyIGNvdW50IDogSW50ID0gMTAwMAorCisg
ICAgc3RhdGljIGZ1bmMgY3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJp
b3JpdHkpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IElkbGVUYXNrKHNjaGVkdWxlcjogc2No
ZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazog
dGFzaykKKyAgICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+
IFRhc2s/CisgICAgeworICAgICAgc2VsZi5jb3VudCAtPSAxCisgICAgICBpZiBzZWxmLmNvdW50
ID09IDAgeworICAgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5ob2xkQ3VycmVudCgpCisg
ICAgICB9CisgICAgICBpZiAoc2VsZi5oYXNoICYgMSkgPT0gMCB7CisgICAgICAgIHNlbGYuaGFz
aCA9IHNlbGYuaGFzaCA+PiAxCisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5yZWxlYXNl
KGRldmljZTogLkEpCisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxmLmhhc2ggPSAoc2VsZi5o
YXNoID4+IDEpIF4gMHhEMDA4CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5yZWxlYXNl
KGRldmljZTogLkIpCisgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0KHNjaGVkdWxl
cjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgc3VwZXIuaW5p
dChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5KQorICAgICAgc2VsZi5y
ZXN1bWUoKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
UmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvUGFja2V0LnN3aWZ0IGIvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC9QYWNrZXQuc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI3ZTEwZWNlMzFhZjVkNjE4NWM0YmJhY2Q3
MzIxMmU4ZWQwMGJhMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVu
Y2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvUGFja2V0LnN3aWZ0CkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBk
YXRhIHRoYXQgaXMgbWFuaXB1bGF0ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAor
ICogb2YgdGhlIHBheWxvYWQgZGF0YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRh
aW50LCBhbmQgbmVpdGhlciBpcyB0aGUKKyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQg
b24gcGFja2V0cyBieSB0aGUgdGFza3MuCisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBw
YWNrZXRzIGZvcm0gbGlua2VkIGxpc3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBk
YXRhIGFuZCB3b3JrbGlzdHMuCisgKi8KK2NsYXNzIFBhY2tldCB7CisgICAgdmFyIGRldmljZSA6
IERldmljZQorICAgIHZhciBsaW5rIDogUGFja2V0PworCisgICAgaW5pdChkZXZpY2U6IERldmlj
ZSwgbGluazogUGFja2V0PykKKyAgICB7CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisg
ICAgICAgIHNlbGYubGluayA9IGxpbmsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEFkZCB0aGlz
IHBhY2tldCB0byB0aGUgZW5kIG9mIGEgd29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0
LgorICAgICovCisgICAgZnVuYyBhZGRUbyhxdWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7Cisg
ICAgICAgIHNlbGYubGluayA9IG5pbAorICAgICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVs
c2UgeworICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgfQorICAgICAgICB3aGlsZSBu
ZXh0LmxpbmsgIT0gbmlsIHsKKyAgICAgICAgICAgIG5leHQgPSBuZXh0LmxpbmshCisgICAgICAg
IH0KKyAgICAgICAgbmV4dC5saW5rID0gc2VsZgorICAgICAgICByZXR1cm4gcXVldWU7CisgICAg
fQorfQorCitmaW5hbCBjbGFzcyBEZXZpY2VQYWNrZXQgOiBQYWNrZXQgeworICAgIHZhciBsZXR0
ZXJJbmRleCA6IEludCA9IDAKK30KKworZmluYWwgY2xhc3MgV29ya1BhY2tldCA6IFBhY2tldCB7
CisgICAgc3RhdGljIGxldCBTSVpFIDogSW50ID0gNAorCisgICAgdmFyIHByb2Nlc3NlZCA6IElu
dCA9IDAKKyAgICB2YXIgZGF0YSA6IFtJbnRdID0gW0ludF0ocmVwZWF0aW5nOiAwLCBjb3VudDog
U0laRSkKKworICAgIGluaXQobGluazogUGFja2V0PykKKyAgICB7CisgICAgICAgIHN1cGVyLmlu
aXQoZGV2aWNlOiAuQSwgbGluazogbGluaykKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0
L1NjaGVkdWxlci5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9S
aWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvU2NoZWR1bGVyLnN3aWZ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVh
YTBmNTE5MjUyNTEwMDA4MTAyYzllZTZkOWZhZmE0MTZjMzlhZmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0L1NjaGVkdWxlci5zd2lmdApAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
LyoqCisqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tz
IGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRv
bmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyogd2hpY2gg
aG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisqIEBj
b25zdHJ1Y3RvcgorKi8KK2NsYXNzIFNjaGVkdWxlciB7CisgICAgcHJpdmF0ZShzZXQpIHZhciBx
dWV1ZUNvdW50ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgaG9sZENvdW50ID0gMAorICAgIHBy
aXZhdGUoc2V0KSB2YXIgY3VycmVudFRhc2sgOiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0
KSB2YXIgbGlzdCA6IFRhc2s/ID0gbmlsCisKKyAgICAvKioKKyAgICAqIEV4ZWN1dGUgdGhlIHRh
c2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgICAgKi8KKyAgICBmdW5jIHNjaGVkdWxl
KCkKKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAg
d2hpbGUgbGV0IHRhc2sgPSBzZWxmLmN1cnJlbnRUYXNrIHsKKyAgICAgICAgICAgIHZhciBwYWNr
ZXQgOiBQYWNrZXQ/ID0gbmlsCisgICAgICAgICAgICBzd2l0Y2ggdGFzay5zdGF0ZSB7CisgICAg
ICAgICAgICBjYXNlIC53YWl0aW5nV2l0aFBhY2tldDoKKyAgICAgICAgICAgICAgICBwYWNrZXQg
PSB0YXNrLnRha2VQYWNrZXQoKQorICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoCisgICAgICAg
ICAgICBjYXNlIC5ydW4sIC5ydW5XaXRoUGFja2V0OgorICAgICAgICAgICAgICAgIHNlbGYuY3Vy
cmVudFRhc2sgPSB0YXNrLnJ1bihwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50VGFzayA9IHRhc2submV4dAorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmll
ZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICAgICovCisgICAgZnVuYyBhZGQodGFzazogVGFz
aykKKyAgICB7CisgICAgICAgIHRhc2submV4dCA9IHNlbGYubGlzdAorICAgICAgICBzZWxmLmxp
c3QgPSB0YXNrCisgICAgfQorCisgICAgLyoqCisgICAgKiBSZWxlYXNlIGEgdGFzayB0aGF0IGlz
IGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVuLgorICAg
ICovCisgICAgZnVuYyByZWxlYXNlKGRldmljZTogRGV2aWNlKSAtPiBUYXNrPworICAgIHsKKyAg
ICAgICAgZ3VhcmQgbGV0IHRhc2sgOiBEZXZpY2VUYXNrID0gZmluZCh3aGVyZTogeyAkMC5kZXZp
Y2UgPT0gZGV2aWNlIH0pIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5pbAorICAgICAgICB9
CisgICAgICAgIHRhc2sucmVsZWFzZSgpCisgICAgICAgIGlmIHRhc2sucHJpb3JpdHkgPiBzZWxm
LmN1cnJlbnRUYXNrIS5wcmlvcml0eSB7CisgICAgICAgICAgICByZXR1cm4gdGFzaworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrCisgICAgfQorCisgICAgLyoqCisg
ICAgKiBCbG9jayB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5l
eHQgdGFzayBjb250cm9sIGJsb2NrCisgICAgKiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdp
bGwgbm90IGJlIG1hZGUgcnVubmFibGUgdW50aWwgaXQgaXMgZXhwbGljaXRseQorICAgICogcmVs
ZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisgICAgKi8KKyAgICBmdW5j
IGhvbGRDdXJyZW50KCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIHNlbGYuaG9sZENvdW50ICs9
IDEKKyAgICAgICAgc2VsZi5jdXJyZW50VGFzayEuaG9sZCgpCisgICAgICAgIHJldHVybiBzZWxm
LmN1cnJlbnRUYXNrIS5uZXh0CisgICAgfQorCisgICAgLyoqCisgICAgKiBTdXNwZW5kIHRoZSBj
dXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wg
YmxvY2sKKyAgICAqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5k
ZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisgICAgKi8KKyAgICBmdW5jIHdhaXRD
dXJyZW50KCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2shLndhaXQo
KQorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50VGFzaworICAgIH0KKworICAgIC8qKgorICAg
ICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVz
ZWQgYnkgdGhlIHRhc2sKKyAgICAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtl
IHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1cnJlbnRseQorICAgICogc3VzcGVuZGVkLgor
ICAgICovCisgICAgZnVuYyBxdWV1ZShwYWNrZXQ6IERldmljZVBhY2tldCkgLT4gVGFzaz8KKyAg
ICB7CisgICAgICAgIGxldCB0YXNrIDogRGV2aWNlVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsg
JDAuZGV2aWNlID09IHBhY2tldC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0
YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIHF1ZXVlKHBhY2tl
dDogV29ya1BhY2tldCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGxldCB0YXNrIDogV29ya2Vy
VGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgXyBpbiB0cnVlIH0pCisgICAgICAgIHJldHVybiBx
dWV1ZUltcGwodGFzazogdGFzaywgcGFja2V0OiBwYWNrZXQpCisgICAgfQorCisgICAgZnVuYyBo
YW5kbGUocGFja2V0OiBXb3JrUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRh
c2sgOiBIYW5kbGVyVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBhY2tl
dC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6
IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIGhhbmRsZShwYWNrZXQ6IERldmljZVBhY2tldCkg
LT4gVGFzaz8KKyAgICB7CisgICAgICAgIGxldCB0YXNrIDogSGFuZGxlclRhc2s/ID0gc2VsZi5m
aW5kKHdoZXJlOiB7ICQwLmRldmljZSA9PSBwYWNrZXQuZGV2aWNlIH0pCisgICAgICAgIHJldHVy
biBxdWV1ZUltcGwodGFzazogdGFzaywgcGFja2V0OiBwYWNrZXQpCisgICAgfQorCisgICAgcHJp
dmF0ZSBmdW5jIHF1ZXVlSW1wbCh0YXNrOiBUYXNrPywgcGFja2V0OiBQYWNrZXQpIC0+IFRhc2s/
CisgICAgeworICAgICAgICBndWFyZCB0YXNrICE9IG5pbCBlbHNlIHsgcmV0dXJuIG5pbCB9Cisg
ICAgICAgIHNlbGYucXVldWVDb3VudCArPSAxCisgICAgICAgIHBhY2tldC5saW5rID0gbmlsCisg
ICAgICAgIHJldHVybiB0YXNrIS5jaGVja1ByaW9yaXR5QWRkKHRhc2s6IHNlbGYuY3VycmVudFRh
c2shLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBwcml2YXRlIGZ1bmMgZmluZDxUOiBU
YXNrPih3aGVyZSBjb25kaXRpb246IChUKSAtPiBCb29sKSAtPiBUPworICAgIHsKKyAgICAgICAg
dmFyIHRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAgd2hpbGUgdGFzayAhPSBuaWwgeworICAgICAg
ICAgICAgaWYgbGV0IHQgPSB0YXNrIGFzPyBUIHsKKyAgICAgICAgICAgICAgICBpZiBjb25kaXRp
b24odCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhc2sgPSB0YXNrIS5uZXh0CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5pbAorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvVGFzay5z
d2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0
L1JpY2hhcmRzU3dpZnQvVGFzay5zd2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzcyYjc5ZGY1MzFlNTg3NDc1
NDcxMmVjYTMwY2NlMTcyZWRmOGFlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9UYXNrLnN3
aWZ0CkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitlbnVtIFByaW9yaXR5IDogSW50IHsK
KyAgICBjYXNlIElkbGUgPSAwCisgICAgY2FzZSBXb3JrZXIgPSAxMDAwCisgICAgY2FzZSBIYW5k
bGVyQSA9IDIwMDAKKyAgICBjYXNlIEhhbmRsZXJCID0gMzAwMAorICAgIGNhc2UgRGV2aWNlQSA9
IDQwMDAKKyAgICBjYXNlIERldmljZUIgPSA1MDAwCisKKyAgICBzdGF0aWMgZnVuYyA+KGxoczpT
ZWxmLCByaHM6U2VsZikgLT4gQm9vbCAKKyAgICB7CisgICAgICAgIHJldHVybiBsaHMucmF3VmFs
dWUgPiByaHMucmF3VmFsdWUKKyAgICB9Cit9CisKK2NsYXNzIFRhc2sgeworICAgIGxldCBzY2hl
ZHVsZXIgOiBTY2hlZHVsZXIKKyAgICBsZXQgcHJpb3JpdHkgOiBQcmlvcml0eQorICAgIHZhciBu
ZXh0IDogVGFzaz8gPSBuaWwKKyAgICBwcml2YXRlKHNldCkgdmFyIHF1ZXVlIDogUGFja2V0Pwor
ICAgIHByaXZhdGUoc2V0KSB2YXIgc3RhdGUgOiBTdGF0ZSA9IC53YWl0aW5nCisKKyAgICBzdHJ1
Y3QgU3RhdGUgOiBPcHRpb25TZXQgeworICAgICAgICBsZXQgcmF3VmFsdWU6IEludAorCisgICAg
ICAgIHN0YXRpYyBsZXQgcnVuIDogU3RhdGUgPSBbXQorICAgICAgICBzdGF0aWMgbGV0IGhhc1Bh
Y2tldCA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDApCisgICAgICAgIHN0YXRpYyBsZXQgd2FpdGlu
ZyA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDEpCisgICAgICAgIHN0YXRpYyBsZXQgaGVsZCA9IFN0
YXRlKHJhd1ZhbHVlOiAxIDw8IDIpCisKKyAgICAgICAgc3RhdGljIGxldCBydW5XaXRoUGFja2V0
ID0gaGFzUGFja2V0LnVuaW9uKHJ1bikKKyAgICAgICAgc3RhdGljIGxldCB3YWl0aW5nV2l0aFBh
Y2tldCA9IGhhc1BhY2tldC51bmlvbih3YWl0aW5nKQorCisgICAgICAgIGluaXQocmF3VmFsdWU6
IEludCkKKyAgICAgICAgeworICAgICAgICAgICAgc2VsZi5yYXdWYWx1ZSA9IHJhd1ZhbHVlCisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/
CisgICAgeworICAgICAgICBwcmVjb25kaXRpb25GYWlsdXJlKCJUaGlzIG1ldGhvZCBtdXN0IGJl
IG92ZXJyaWRkZW4iKSAKKyAgICB9CisKKyAgICBmdW5jIHJlbGVhc2UoKQorICAgIHsKKyAgICAg
ICAgc2VsZi5zdGF0ZS5yZW1vdmUoLmhlbGQpCisgICAgfQorCisgICAgZnVuYyBob2xkKCkKKyAg
ICB7CisgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5oZWxkKQorICAgIH0KKworICAgIGZ1bmMg
d2FpdCgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLmluc2VydCgud2FpdGluZykKKyAgICB9
CisKKyAgICBmdW5jIHJlc3VtZSgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLnJlbW92ZSgu
d2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHRha2VQYWNrZXQoKSAtPiBQYWNrZXQKKyAgICB7
CisgICAgICAgIGxldCBwYWNrZXQgPSBzZWxmLnF1ZXVlIQorICAgICAgICBzZWxmLnF1ZXVlID0g
cGFja2V0LmxpbmsKKyAgICAgICAgaWYgc2VsZi5xdWV1ZSA9PSBuaWwgeworICAgICAgICAgICAg
c2VsZi5zdGF0ZSA9IC5ydW4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYuc3Rh
dGUgPSAucnVuV2l0aFBhY2tldAorICAgICAgICB9CisgICAgICAgIHJldHVybiBwYWNrZXQKKyAg
ICB9CisKKyAgICBmdW5jIGNoZWNrUHJpb3JpdHlBZGQodGFzazogVGFzaywgcGFja2V0OiBQYWNr
ZXQpIC0+IFRhc2sKKyAgICB7CisgICAgICAgIGlmIHNlbGYucXVldWUgPT0gbmlsIHsKKyAgICAg
ICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQKKyAgICAgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0
KC5oYXNQYWNrZXQpCisgICAgICAgICAgICBpZiBzZWxmLnByaW9yaXR5ID4gdGFzay5wcmlvcml0
eSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQuYWRkVG8ocXVldWU6IHNl
bGYucXVldWUpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhc2sKKyAgICB9CisKKyAgICBp
bml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBQYWNr
ZXQ/ID0gbmlsKQorICAgIHsKKyAgICAgICAgc2VsZi5zY2hlZHVsZXIgPSBzY2hlZHVsZXIKKyAg
ICAgICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5CisgICAgICAgIHNlbGYucXVldWUgPSBxdWV1
ZQorICAgICAgICBpZiBxdWV1ZSAhPSBuaWwgeworICAgICAgICAgICAgc2VsZi5zdGF0ZS5pbnNl
cnQoLmhhc1BhY2tldCkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQv
V29ya2VyVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9S
aWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvV29ya2VyVGFzay5zd2lmdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YTUxYTFiYTU1YzZhNjU4NzgxOWE0OGNiY2Q4MWY0ZmNkODQ0MTc4Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmlj
aGFyZHNTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
K2NsYXNzIFdvcmtlclRhc2sgOiBUYXNrIHsKKyAgICBwcml2YXRlIHZhciBkZXZpY2UgOiBEZXZp
Y2UgPSAuQQorICAgIHByaXZhdGUgdmFyIGxldHRlckluZGV4IDogSW50ID0gMAorCisgICAgc3Rh
dGljIGZ1bmMgY3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHks
IHF1ZXVlOiBQYWNrZXQpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IFdvcmtlclRhc2soc2No
ZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAg
ICAgICBzY2hlZHVsZXIuYWRkKHRhc2s6IHRhc2spCisgICAgfQorCisgICAgb3ZlcnJpZGUgZnVu
YyBydW4ocGFja2V0OiBQYWNrZXQ/KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgaWYgcGFja2V0
ID09IG5pbCB7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQo
KQorICAgICAgICB9CisKKyAgICAgICAgc2VsZi5kZXZpY2UgPSBzZWxmLmRldmljZSA9PSAuQSA/
IC5CIDogLkEKKworICAgICAgICBsZXQgd29yayA9IHBhY2tldCBhcyEgV29ya1BhY2tldAorICAg
ICAgICB3b3JrLmRldmljZSA9IHNlbGYuZGV2aWNlCisgICAgICAgIHdvcmsucHJvY2Vzc2VkID0g
MAorICAgICAgICBmb3IgaSBpbiAwLi4uKFdvcmtQYWNrZXQuU0laRSAtIDEpIHsKKyAgICAgICAg
ICAgIHNlbGYubGV0dGVySW5kZXggKz0gMQorICAgICAgICAgICAgaWYgc2VsZi5sZXR0ZXJJbmRl
eCA+IDI2IHsKKyAgICAgICAgICAgICAgICBzZWxmLmxldHRlckluZGV4ID0gMQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgd29yay5kYXRhW2ldID0gc2VsZi5sZXR0ZXJJbmRleAorICAgICAg
ICB9CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5oYW5kbGUocGFja2V0OiB3b3JrKQor
ICAgIH0KKworICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgcHJpb3JpdHk6
IFByaW9yaXR5LCBxdWV1ZTogUGFja2V0KQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdChzY2hl
ZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVldWUpCisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SZWZlcmVuY2VzL1Jp
Y2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWluLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWluLnN3aWZ0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVlNzU4MTU4NDA4NzhhN2FmZjZjYjVjMDRmYWNmNjZiNzk4MDEyZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JlZmVyZW5jZXMvUmlj
aGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQKQEAgLTAsMCArMSwzNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKworaW1wb3J0IFF1YXJ0ekNvcmUKKworbGV0IGl0ZXJhdGlvbnMgPSA1MAorbGV0IHN0
YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCkKK2ZvciBfIGluIDEuLi5pdGVyYXRpb25zIHsKKyAg
ICBydW5SaWNoYXJkcygpCit9CitsZXQgZW5kID0gQ0FDdXJyZW50TWVkaWFUaW1lKCkKK3ByaW50
KEludCgoZW5kLXN0YXJ0KSAqIDEwMDApKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9yaWNoYXJkcy5z
d2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0
L1JpY2hhcmRzU3dpZnQvcmljaGFyZHMuc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QwMzVhOTFjY2I3ZmZh
NmU5ZGY5MjdlMzg2YmIwNTFiNWI1YzY0MgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvcmlj
aGFyZHMuc3dpZnQKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IERhcndpbgor
CitsZXQgRVhQRUNURURfUVVFVUVfQ09VTlQgPSAyMzIyOworbGV0IEVYUEVDVEVEX0hPTERfQ09V
TlQgPSA5Mjg7CisKK2Z1bmMgcnVuUmljaGFyZHMoKQoreworICBsZXQgc2NoZWR1bGVyID0gU2No
ZWR1bGVyKCkKKworICBJZGxlVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9y
aXR5OiAuSWRsZSkKKworICAoeworICAgICAgdmFyIHF1ZXVlID0gV29ya1BhY2tldChsaW5rOiBu
aWwpCisgICAgICBxdWV1ZSA9IFdvcmtQYWNrZXQobGluazogcXVldWUpCisgICAgICBXb3JrZXJU
YXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5Lldvcmtl
ciwgcXVldWU6IHF1ZXVlKQorICB9KSgpCisKKyAgKHsKKyAgICAgIHZhciBxdWV1ZSA9IERldmlj
ZVBhY2tldChkZXZpY2U6IC5BLCBsaW5rOiBuaWwpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tl
dChkZXZpY2U6IC5BLCBsaW5rOiBxdWV1ZSkKKyAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRl
dmljZTogLkEsIGxpbms6IHF1ZXVlKQorICAgICAgSGFuZGxlclRhc2suY3JlYXRlKHNjaGVkdWxl
cjogc2NoZWR1bGVyLCBkZXZpY2U6IC5BLCBwcmlvcml0eTogUHJpb3JpdHkuSGFuZGxlckEsIHF1
ZXVlOiBxdWV1ZSkKKyAgfSkoKQorCisgICh7CisgICAgICB2YXIgcXVldWUgPSBEZXZpY2VQYWNr
ZXQoZGV2aWNlOiAuQiwgbGluazogbmlsKQorICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2
aWNlOiAuQiwgbGluazogcXVldWUpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6
IC5CLCBsaW5rOiBxdWV1ZSkKKyAgICAgIEhhbmRsZXJUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNj
aGVkdWxlciwgZGV2aWNlOiAuQiwgcHJpb3JpdHk6IFByaW9yaXR5LkhhbmRsZXJCLCBxdWV1ZTog
cXVldWUpCisgIH0pKCkKKworICBEZXZpY2VUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxl
ciwgZGV2aWNlOiAuQSwgcHJpb3JpdHk6IFByaW9yaXR5LkRldmljZUEpCisgIERldmljZVRhc2su
Y3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBkZXZpY2U6IC5CLCBwcmlvcml0eTogUHJpb3Jp
dHkuRGV2aWNlQikKKworICBzY2hlZHVsZXIuc2NoZWR1bGUoKQorCisgIGlmIHNjaGVkdWxlci5x
dWV1ZUNvdW50ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8IHNjaGVkdWxlci5ob2xkQ291bnQg
IT0gRVhQRUNURURfSE9MRF9DT1VOVCB7CisgICAgcHJpbnQoIkVycm9yIGR1cmluZyBleGVjdXRp
b246IHF1ZXVlQ291bnQgPSBcKHNjaGVkdWxlci5xdWV1ZUNvdW50KSwgaG9sZENvdW50ID0gXChz
Y2hlZHVsZXIuaG9sZENvdW50KS4iKQorICAgIGV4aXQoMSkKKyAgfQorfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc0pTL1JpY2hhcmRzSlMuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOGZmNzFhOGJlZTI2MDUyMmUzYTIwNWIzNTFlMDhjMmM4YTVh
MTZiOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDU0MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNi0yMDA4IHRoZSBWOCBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKLS8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAotLy8gICAgICAgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0vLyAgICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
Ci0vLyBUaGlzIGlzIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUmljaGFyZHMK
LS8vIGJlbmNobWFyayBmcm9tOgotLy8KLS8vICAgIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35t
cjEwL0JlbmNoLmh0bWwKLS8vCi0vLyBUaGUgYmVuY2htYXJrIHdhcyBvcmlnaW5hbGx5IGltcGxl
bWVudGVkIGluIEJDUEwgYnkKLS8vIE1hcnRpbiBSaWNoYXJkcy4KLQotCi0vKioKLSAqIFRoZSBS
aWNoYXJkcyBiZW5jaG1hcmsgc2ltdWxhdGVzIHRoZSB0YXNrIGRpc3BhdGNoZXIgb2YgYW4KLSAq
IG9wZXJhdGluZyBzeXN0ZW0uCi0gKiovCi1mdW5jdGlvbiBydW5SaWNoYXJkcygpIHsKLSAgdmFy
IHNjaGVkdWxlciA9IG5ldyBTY2hlZHVsZXIoKTsKLSAgc2NoZWR1bGVyLmFkZElkbGVUYXNrKElE
X0lETEUsIDAsIG51bGwsIENPVU5UKTsKLQotICB2YXIgcXVldWUgPSBuZXcgUGFja2V0KG51bGws
IElEX1dPUktFUiwgS0lORF9XT1JLKTsKLSAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURf
V09SS0VSLCBLSU5EX1dPUkspOwotICBzY2hlZHVsZXIuYWRkV29ya2VyVGFzayhJRF9XT1JLRVIs
IDEwMDAsIHF1ZXVlKTsKLQotICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0Es
IEtJTkRfREVWSUNFKTsKLSAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0Es
IEtJTkRfREVWSUNFKTsKLSAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0Es
IEtJTkRfREVWSUNFKTsKLSAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQSwg
MjAwMCwgcXVldWUpOwotCi0gIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9ERVZJQ0VfQiwg
S0lORF9ERVZJQ0UpOwotICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQiwg
S0lORF9ERVZJQ0UpOwotICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQiwg
S0lORF9ERVZJQ0UpOwotICBzY2hlZHVsZXIuYWRkSGFuZGxlclRhc2soSURfSEFORExFUl9CLCAz
MDAwLCBxdWV1ZSk7Ci0KLSAgc2NoZWR1bGVyLmFkZERldmljZVRhc2soSURfREVWSUNFX0EsIDQw
MDAsIG51bGwpOwotCi0gIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9CLCA1MDAw
LCBudWxsKTsKLQotICBzY2hlZHVsZXIuc2NoZWR1bGUoKTsKLQotICBpZiAoc2NoZWR1bGVyLnF1
ZXVlQ291bnQgIT0gRVhQRUNURURfUVVFVUVfQ09VTlQgfHwKLSAgICAgIHNjaGVkdWxlci5ob2xk
Q291bnQgIT0gRVhQRUNURURfSE9MRF9DT1VOVCkgewotICAgIHZhciBtc2cgPQotICAgICAgICAi
RXJyb3IgZHVyaW5nIGV4ZWN1dGlvbjogcXVldWVDb3VudCA9ICIgKyBzY2hlZHVsZXIucXVldWVD
b3VudCArCi0gICAgICAgICIsIGhvbGRDb3VudCA9ICIgKyBzY2hlZHVsZXIuaG9sZENvdW50ICsg
Ii4iOwotICAgIHRocm93IG5ldyBFcnJvcihtc2cpOwotICB9Ci19Ci0KLXZhciBDT1VOVCA9IDEw
MDA7Ci0KLS8qKgotICogVGhlc2UgdHdvIGNvbnN0YW50cyBzcGVjaWZ5IGhvdyBtYW55IHRpbWVz
IGEgcGFja2V0IGlzIHF1ZXVlZCBhbmQKLSAqIGhvdyBtYW55IHRpbWVzIGEgdGFzayBpcyBwdXQg
b24gaG9sZCBpbiBhIGNvcnJlY3QgcnVuIG9mIHJpY2hhcmRzLgotICogVGhleSBkb24ndCBoYXZl
IGFueSBtZWFuaW5nIGEgc3VjaCBidXQgYXJlIGNoYXJhY3RlcmlzdGljIG9mIGEKLSAqIGNvcnJl
Y3QgcnVuIHNvIGlmIHRoZSBhY3R1YWwgcXVldWUgb3IgaG9sZCBjb3VudCBpcyBkaWZmZXJlbnQg
ZnJvbQotICogdGhlIGV4cGVjdGVkIHRoZXJlIG11c3QgYmUgYSBidWcgaW4gdGhlIGltcGxlbWVu
dGF0aW9uLgotICoqLwotdmFyIEVYUEVDVEVEX1FVRVVFX0NPVU5UID0gMjMyMjsKLXZhciBFWFBF
Q1RFRF9IT0xEX0NPVU5UID0gOTI4OwotCi0KLS8qKgotICogQSBzY2hlZHVsZXIgY2FuIGJlIHVz
ZWQgdG8gc2NoZWR1bGUgYSBzZXQgb2YgdGFza3MgYmFzZWQgb24gdGhlaXIgcmVsYXRpdmUKLSAq
IHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0IG9m
IHRhc2sgY29udHJvbCBibG9ja3MKLSAqIHdoaWNoIGhvbGRzIHRhc2tzIGFuZCB0aGUgZGF0YSBx
dWV1ZSB0aGV5IGFyZSBwcm9jZXNzaW5nLgotICogQGNvbnN0cnVjdG9yCi0gKi8KLWZ1bmN0aW9u
IFNjaGVkdWxlcigpIHsKLSAgdGhpcy5xdWV1ZUNvdW50ID0gMDsKLSAgdGhpcy5ob2xkQ291bnQg
PSAwOwotICB0aGlzLmJsb2NrcyA9IG5ldyBBcnJheShOVU1CRVJfT0ZfSURTKTsKLSAgdGhpcy5s
aXN0ID0gbnVsbDsKLSAgdGhpcy5jdXJyZW50VGNiID0gbnVsbDsKLSAgdGhpcy5jdXJyZW50SWQg
PSBudWxsOwotfQotCi12YXIgSURfSURMRSAgICAgICA9IDA7Ci12YXIgSURfV09SS0VSICAgICA9
IDE7Ci12YXIgSURfSEFORExFUl9BICA9IDI7Ci12YXIgSURfSEFORExFUl9CICA9IDM7Ci12YXIg
SURfREVWSUNFX0EgICA9IDQ7Ci12YXIgSURfREVWSUNFX0IgICA9IDU7Ci12YXIgTlVNQkVSX09G
X0lEUyA9IDY7Ci0KLXZhciBLSU5EX0RFVklDRSAgID0gMDsKLXZhciBLSU5EX1dPUksgICAgID0g
MTsKLQotLyoqCi0gKiBBZGQgYW4gaWRsZSB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgotICogQHBh
cmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzawotICogQHBhcmFtIHtpbnR9IHBy
aW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKLSAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUg
cXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKLSAqIEBwYXJhbSB7aW50
fSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHNjaGVkdWxlIHRoZSB0YXNrCi0gKi8KLVNj
aGVkdWxlci5wcm90b3R5cGUuYWRkSWRsZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBx
dWV1ZSwgY291bnQpIHsKLSAgdGhpcy5hZGRSdW5uaW5nVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVl
LCBuZXcgSWRsZVRhc2sodGhpcywgMSwgY291bnQpKTsKLX07Ci0KLS8qKgotICogQWRkIGEgd29y
ayB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgotICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0
eSBvZiB0aGUgdGFzawotICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3Jp
dHkKLSAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9j
ZXNzZWQgYnkgdGhlIHRhc2sKLSAqLwotU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRXb3JrZXJUYXNr
ID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKLSAgdGhpcy5hZGRUYXNrKGlkLCBw
cmlvcml0eSwgcXVldWUsIG5ldyBXb3JrZXJUYXNrKHRoaXMsIElEX0hBTkRMRVJfQSwgMCkpOwot
fTsKLQotLyoqCi0gKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCi0gKiBA
cGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCi0gKiBAcGFyYW0ge2ludH0g
cHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQotICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRo
ZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzawotICovCi1TY2hlZHVs
ZXIucHJvdG90eXBlLmFkZEhhbmRsZXJUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVl
dWUpIHsKLSAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBIYW5kbGVyVGFz
ayh0aGlzKSk7Ci19OwotCi0vKioKLSAqIEFkZCBhIGhhbmRsZXIgdGFzayB0byB0aGlzIHNjaGVk
dWxlci4KLSAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKLSAqIEBw
YXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5Ci0gKiBAcGFyYW0ge1BhY2tl
dH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCi0g
Ki8KLVNjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2aWNlVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJp
b3JpdHksIHF1ZXVlKSB7Ci0gIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcg
RGV2aWNlVGFzayh0aGlzKSkKLX07Ci0KLS8qKgotICogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayBh
bmQgbWFyayBpdCBhcyBydW5uaW5nLgotICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBv
ZiB0aGUgdGFzawotICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkK
LSAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNz
ZWQgYnkgdGhlIHRhc2sKLSAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzayB0byBhZGQKLSAq
LwotU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRSdW5uaW5nVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJp
b3JpdHksIHF1ZXVlLCB0YXNrKSB7Ci0gIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVl
LCB0YXNrKTsKLSAgdGhpcy5jdXJyZW50VGNiLnNldFJ1bm5pbmcoKTsKLX07Ci0KLS8qKgotICog
QWRkIHRoZSBzcGVjaWZpZWQgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KLSAqIEBwYXJhbSB7aW50
fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKLSAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0
aGUgdGFzaydzIHByaW9yaXR5Ci0gKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9m
IHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCi0gKiBAcGFyYW0ge1Rhc2t9IHRhc2sg
dGhlIHRhc2sgdG8gYWRkCi0gKi8KLVNjaGVkdWxlci5wcm90b3R5cGUuYWRkVGFzayA9IGZ1bmN0
aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7Ci0gIHRoaXMuY3VycmVudFRjYiA9IG5l
dyBUYXNrQ29udHJvbEJsb2NrKHRoaXMubGlzdCwgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzayk7
Ci0gIHRoaXMubGlzdCA9IHRoaXMuY3VycmVudFRjYjsKLSAgdGhpcy5ibG9ja3NbaWRdID0gdGhp
cy5jdXJyZW50VGNiOwotfTsKLQotLyoqCi0gKiBFeGVjdXRlIHRoZSB0YXNrcyBtYW5hZ2VkIGJ5
IHRoaXMgc2NoZWR1bGVyLgotICovCi1TY2hlZHVsZXIucHJvdG90eXBlLnNjaGVkdWxlID0gZnVu
Y3Rpb24gKCkgewotICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmxpc3Q7Ci0gIHdoaWxlICh0aGlz
LmN1cnJlbnRUY2IgIT0gbnVsbCkgewotICAgIGlmICh0aGlzLmN1cnJlbnRUY2IuaXNIZWxkT3JT
dXNwZW5kZWQoKSkgewotICAgICAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5jdXJyZW50VGNiLmxp
bms7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRoaXMuY3VycmVudElkID0gdGhpcy5jdXJyZW50VGNi
LmlkOwotICAgICAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5jdXJyZW50VGNiLnJ1bigpOwotICAg
IH0KLSAgfQotfTsKLQotLyoqCi0gKiBSZWxlYXNlIGEgdGFzayB0aGF0IGlzIGN1cnJlbnRseSBi
bG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVuLgotICogQHBhcmFtIHtpbnR9
IGlkIHRoZSBpZCBvZiB0aGUgdGFzayB0byBzdXNwZW5kCi0gKi8KLVNjaGVkdWxlci5wcm90b3R5
cGUucmVsZWFzZSA9IGZ1bmN0aW9uIChpZCkgewotICB2YXIgdGNiID0gdGhpcy5ibG9ja3NbaWRd
OwotICBpZiAodGNiID09IG51bGwpIHJldHVybiB0Y2I7Ci0gIHRjYi5tYXJrQXNOb3RIZWxkKCk7
Ci0gIGlmICh0Y2IucHJpb3JpdHkgPiB0aGlzLmN1cnJlbnRUY2IucHJpb3JpdHkpIHsKLSAgICBy
ZXR1cm4gdGNiOwotICB9IGVsc2UgewotICAgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7Ci0gIH0K
LX07Ci0KLS8qKgotICogQmxvY2sgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQgcmV0
dXJuIHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jawotICogdG8gcnVuLiAgVGhlIGJsb2NrZWQg
dGFzayB3aWxsIG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0IGlzIGV4cGxpY2l0bHkKLSAq
IHJlbGVhc2VkLCBldmVuIGlmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIGl0LgotICovCi1TY2hlZHVs
ZXIucHJvdG90eXBlLmhvbGRDdXJyZW50ID0gZnVuY3Rpb24gKCkgewotICB0aGlzLmhvbGRDb3Vu
dCsrOwotICB0aGlzLmN1cnJlbnRUY2IubWFya0FzSGVsZCgpOwotICByZXR1cm4gdGhpcy5jdXJy
ZW50VGNiLmxpbms7Ci19OwotCi0vKioKLSAqIFN1c3BlbmQgdGhlIGN1cnJlbnRseSBleGVjdXRp
bmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jawotICogdG8gcnVu
LiAgSWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gdGhlIHN1c3BlbmRlZCB0YXNrIGl0IHdpbGwgYmUg
bWFkZSBydW5uYWJsZS4KLSAqLwotU2NoZWR1bGVyLnByb3RvdHlwZS5zdXNwZW5kQ3VycmVudCA9
IGZ1bmN0aW9uICgpIHsKLSAgdGhpcy5jdXJyZW50VGNiLm1hcmtBc1N1c3BlbmRlZCgpOwotICBy
ZXR1cm4gdGhpcy5jdXJyZW50VGNiOwotfTsKLQotLyoqCi0gKiBBZGQgdGhlIHNwZWNpZmllZCBw
YWNrZXQgdG8gdGhlIGVuZCBvZiB0aGUgd29ya2xpc3QgdXNlZCBieSB0aGUgdGFzawotICogYXNz
b2NpYXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5kIG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQg
aXMgY3VycmVudGx5Ci0gKiBzdXNwZW5kZWQuCi0gKiBAcGFyYW0ge1BhY2tldH0gcGFja2V0IHRo
ZSBwYWNrZXQgdG8gYWRkCi0gKi8KLVNjaGVkdWxlci5wcm90b3R5cGUucXVldWUgPSBmdW5jdGlv
biAocGFja2V0KSB7Ci0gIHZhciB0ID0gdGhpcy5ibG9ja3NbcGFja2V0LmlkXTsKLSAgaWYgKHQg
PT0gbnVsbCkgcmV0dXJuIHQ7Ci0gIHRoaXMucXVldWVDb3VudCsrOwotICBwYWNrZXQubGluayA9
IG51bGw7Ci0gIHBhY2tldC5pZCA9IHRoaXMuY3VycmVudElkOwotICByZXR1cm4gdC5jaGVja1By
aW9yaXR5QWRkKHRoaXMuY3VycmVudFRjYiwgcGFja2V0KTsKLX07Ci0KLS8qKgotICogQSB0YXNr
IGNvbnRyb2wgYmxvY2sgbWFuYWdlcyBhIHRhc2sgYW5kIHRoZSBxdWV1ZSBvZiB3b3JrIHBhY2th
Z2VzIGFzc29jaWF0ZWQKLSAqIHdpdGggaXQuCi0gKiBAcGFyYW0ge1Rhc2tDb250cm9sQmxvY2t9
IGxpbmsgdGhlIHByZWNlZGluZyBibG9jayBpbiB0aGUgbGlua2VkIGJsb2NrIGxpc3QKLSAqIEBw
YXJhbSB7aW50fSBpZCB0aGUgaWQgb2YgdGhpcyBibG9jawotICogQHBhcmFtIHtpbnR9IHByaW9y
aXR5IHRoZSBwcmlvcml0eSBvZiB0aGlzIGJsb2NrCi0gKiBAcGFyYW0ge1BhY2tldH0gcXVldWUg
dGhlIHF1ZXVlIG9mIHBhY2thZ2VzIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzawotICogQHBh
cmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrCi0gKiBAY29uc3RydWN0b3IKLSAqLwotZnVuY3Rpb24g
VGFza0NvbnRyb2xCbG9jayhsaW5rLCBpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7Ci0gIHRo
aXMubGluayA9IGxpbms7Ci0gIHRoaXMuaWQgPSBpZDsKLSAgdGhpcy5wcmlvcml0eSA9IHByaW9y
aXR5OwotICB0aGlzLnF1ZXVlID0gcXVldWU7Ci0gIHRoaXMudGFzayA9IHRhc2s7Ci0gIGlmIChx
dWV1ZSA9PSBudWxsKSB7Ci0gICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRDsKLSAgfSBl
bHNlIHsKLSAgICB0aGlzLnN0YXRlID0gU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFOwotICB9Ci19
Ci0KLS8qKgotICogVGhlIHRhc2sgaXMgcnVubmluZyBhbmQgaXMgY3VycmVudGx5IHNjaGVkdWxl
ZC4KLSAqLwotdmFyIFNUQVRFX1JVTk5JTkcgPSAwOwotCi0vKioKLSAqIFRoZSB0YXNrIGhhcyBw
YWNrZXRzIGxlZnQgdG8gcHJvY2Vzcy4KLSAqLwotdmFyIFNUQVRFX1JVTk5BQkxFID0gMTsKLQot
LyoqCi0gKiBUaGUgdGFzayBpcyBub3QgY3VycmVudGx5IHJ1bm5pbmcuICBUaGUgdGFzayBpcyBu
b3QgYmxvY2tlZCBhcyBzdWNoIGFuZCBtYXkKLSogYmUgc3RhcnRlZCBieSB0aGUgc2NoZWR1bGVy
LgotICovCi12YXIgU1RBVEVfU1VTUEVOREVEID0gMjsKLQotLyoqCi0gKiBUaGUgdGFzayBpcyBi
bG9ja2VkIGFuZCBjYW5ub3QgYmUgcnVuIHVudGlsIGl0IGlzIGV4cGxpY2l0bHkgcmVsZWFzZWQu
Ci0gKi8KLXZhciBTVEFURV9IRUxEID0gNDsKLQotdmFyIFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJM
RSA9IFNUQVRFX1NVU1BFTkRFRCB8IFNUQVRFX1JVTk5BQkxFOwotdmFyIFNUQVRFX05PVF9IRUxE
ID0gflNUQVRFX0hFTEQ7Ci0KLVRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnNldFJ1bm5pbmcg
PSBmdW5jdGlvbiAoKSB7Ci0gIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5OSU5HOwotfTsKLQotVGFz
a0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCA9IGZ1bmN0aW9uICgpIHsKLSAg
dGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgJiBTVEFURV9OT1RfSEVMRDsKLX07Ci0KLVRhc2tDb250
cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc0hlbGQgPSBmdW5jdGlvbiAoKSB7Ci0gIHRoaXMuc3Rh
dGUgPSB0aGlzLnN0YXRlIHwgU1RBVEVfSEVMRDsKLX07Ci0KLVRhc2tDb250cm9sQmxvY2sucHJv
dG90eXBlLmlzSGVsZE9yU3VzcGVuZGVkID0gZnVuY3Rpb24gKCkgewotICByZXR1cm4gKHRoaXMu
c3RhdGUgJiBTVEFURV9IRUxEKSAhPSAwIHx8ICh0aGlzLnN0YXRlID09IFNUQVRFX1NVU1BFTkRF
RCk7Ci19OwotCi1UYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNTdXNwZW5kZWQgPSBm
dW5jdGlvbiAoKSB7Ci0gIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwgU1RBVEVfU1VTUEVOREVE
OwotfTsKLQotVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzUnVubmFibGUgPSBmdW5j
dGlvbiAoKSB7Ci0gIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwgU1RBVEVfUlVOTkFCTEU7Ci19
OwotCi0vKioKLSAqIFJ1bnMgdGhpcyB0YXNrLCBpZiBpdCBpcyByZWFkeSB0byBiZSBydW4sIGFu
ZCByZXR1cm5zIHRoZSBuZXh0IHRhc2sgdG8gcnVuLgotICovCi1UYXNrQ29udHJvbEJsb2NrLnBy
b3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7Ci0gIHZhciBwYWNrZXQ7Ci0gIGlmICh0aGlzLnN0
YXRlID09IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRSkgewotICAgIHBhY2tldCA9IHRoaXMucXVl
dWU7Ci0gICAgdGhpcy5xdWV1ZSA9IHBhY2tldC5saW5rOwotICAgIGlmICh0aGlzLnF1ZXVlID09
IG51bGwpIHsKLSAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5OSU5HOwotICAgIH0gZWxzZSB7
Ci0gICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTkFCTEU7Ci0gICAgfQotICB9IGVsc2Ugewot
ICAgIHBhY2tldCA9IG51bGw7Ci0gIH0KLSAgcmV0dXJuIHRoaXMudGFzay5ydW4ocGFja2V0KTsK
LX07Ci0KLS8qKgotICogQWRkcyBhIHBhY2tldCB0byB0aGUgd29ya2xpc3Qgb2YgdGhpcyBibG9j
aydzIHRhc2ssIG1hcmtzIHRoaXMgYXMgcnVubmFibGUgaWYKLSAqIG5lY2Vzc2FyeSwgYW5kIHJl
dHVybnMgdGhlIG5leHQgcnVubmFibGUgb2JqZWN0IHRvIHJ1biAodGhlIG9uZQotICogd2l0aCB0
aGUgaGlnaGVzdCBwcmlvcml0eSkuCi0gKi8KLVRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLmNo
ZWNrUHJpb3JpdHlBZGQgPSBmdW5jdGlvbiAodGFzaywgcGFja2V0KSB7Ci0gIGlmICh0aGlzLnF1
ZXVlID09IG51bGwpIHsKLSAgICB0aGlzLnF1ZXVlID0gcGFja2V0OwotICAgIHRoaXMubWFya0Fz
UnVubmFibGUoKTsKLSAgICBpZiAodGhpcy5wcmlvcml0eSA+IHRhc2sucHJpb3JpdHkpIHJldHVy
biB0aGlzOwotICB9IGVsc2UgewotICAgIHRoaXMucXVldWUgPSBwYWNrZXQuYWRkVG8odGhpcy5x
dWV1ZSk7Ci0gIH0KLSAgcmV0dXJuIHRhc2s7Ci19OwotCi1UYXNrQ29udHJvbEJsb2NrLnByb3Rv
dHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKLSAgcmV0dXJuICJ0Y2IgeyAiICsgdGhpcy50
YXNrICsgIkAiICsgdGhpcy5zdGF0ZSArICIgfSI7Ci19OwotCi0vKioKLSAqIEFuIGlkbGUgdGFz
ayBkb2Vzbid0IGRvIGFueSB3b3JrIGl0c2VsZiBidXQgY3ljbGVzIGNvbnRyb2wgYmV0d2VlbiB0
aGUgdHdvCi0gKiBkZXZpY2UgdGFza3MuCi0gKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVy
IHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzawotICogQHBhcmFtIHtpbnR9IHYx
IGEgc2VlZCB2YWx1ZSB0aGF0IGNvbnRyb2xzIGhvdyB0aGUgZGV2aWNlIHRhc2tzIGFyZSBzY2hl
ZHVsZWQKLSAqIEBwYXJhbSB7aW50fSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMgdGFz
ayBzaG91bGQgYmUgc2NoZWR1bGVkCi0gKiBAY29uc3RydWN0b3IKLSAqLwotZnVuY3Rpb24gSWRs
ZVRhc2soc2NoZWR1bGVyLCB2MSwgY291bnQpIHsKLSAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVs
ZXI7Ci0gIHRoaXMudjEgPSB2MTsKLSAgdGhpcy5jb3VudCA9IGNvdW50OwotfQotCi1JZGxlVGFz
ay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgewotICB0aGlzLmNvdW50LS07Ci0g
IGlmICh0aGlzLmNvdW50ID09IDApIHJldHVybiB0aGlzLnNjaGVkdWxlci5ob2xkQ3VycmVudCgp
OwotICBpZiAoKHRoaXMudjEgJiAxKSA9PSAwKSB7Ci0gICAgdGhpcy52MSA9IHRoaXMudjEgPj4g
MTsKLSAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQSk7Ci0gIH0g
ZWxzZSB7Ci0gICAgdGhpcy52MSA9ICh0aGlzLnYxID4+IDEpIF4gMHhEMDA4OwotICAgIHJldHVy
biB0aGlzLnNjaGVkdWxlci5yZWxlYXNlKElEX0RFVklDRV9CKTsKLSAgfQotfTsKLQotSWRsZVRh
c2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewotICByZXR1cm4gIklkbGVUYXNr
IgotfTsKLQotLyoqCi0gKiBBIHRhc2sgdGhhdCBzdXNwZW5kcyBpdHNlbGYgYWZ0ZXIgZWFjaCB0
aW1lIGl0IGhhcyBiZWVuIHJ1biB0byBzaW11bGF0ZQotICogd2FpdGluZyBmb3IgZGF0YSBmcm9t
IGFuIGV4dGVybmFsIGRldmljZS4KLSAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhl
IHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNrCi0gKiBAY29uc3RydWN0b3IKLSAqLwot
ZnVuY3Rpb24gRGV2aWNlVGFzayhzY2hlZHVsZXIpIHsKLSAgdGhpcy5zY2hlZHVsZXIgPSBzY2hl
ZHVsZXI7Ci0gIHRoaXMudjEgPSBudWxsOwotfQotCi1EZXZpY2VUYXNrLnByb3RvdHlwZS5ydW4g
PSBmdW5jdGlvbiAocGFja2V0KSB7Ci0gIGlmIChwYWNrZXQgPT0gbnVsbCkgewotICAgIGlmICh0
aGlzLnYxID09IG51bGwpIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOwot
ICAgIHZhciB2ID0gdGhpcy52MTsKLSAgICB0aGlzLnYxID0gbnVsbDsKLSAgICByZXR1cm4gdGhp
cy5zY2hlZHVsZXIucXVldWUodik7Ci0gIH0gZWxzZSB7Ci0gICAgdGhpcy52MSA9IHBhY2tldDsK
LSAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKTsKLSAgfQotfTsKLQotRGV2
aWNlVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7Ci0gIHJldHVybiAiRGV2
aWNlVGFzayI7Ci19OwotCi0vKioKLSAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFj
a2V0cy4KLSAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0
IG1hbmFnZXMgdGhpcyB0YXNrCi0gKiBAcGFyYW0ge2ludH0gdjEgYSBzZWVkIHVzZWQgdG8gc3Bl
Y2lmeSBob3cgd29yayBwYWNrZXRzIGFyZSBtYW5pcHVsYXRlZAotICogQHBhcmFtIHtpbnR9IHYy
IGFub3RoZXIgc2VlZCB1c2VkIHRvIHNwZWNpZnkgaG93IHdvcmsgcGFja2V0cyBhcmUgbWFuaXB1
bGF0ZWQKLSAqIEBjb25zdHJ1Y3RvcgotICovCi1mdW5jdGlvbiBXb3JrZXJUYXNrKHNjaGVkdWxl
ciwgdjEsIHYyKSB7Ci0gIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOwotICB0aGlzLnYxID0g
djE7Ci0gIHRoaXMudjIgPSB2MjsKLX0KLQotV29ya2VyVGFzay5wcm90b3R5cGUucnVuID0gZnVu
Y3Rpb24gKHBhY2tldCkgewotICBpZiAocGFja2V0ID09IG51bGwpIHsKLSAgICByZXR1cm4gdGhp
cy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKLSAgfSBlbHNlIHsKLSAgICBpZiAodGhpcy52
MSA9PSBJRF9IQU5ETEVSX0EpIHsKLSAgICAgIHRoaXMudjEgPSBJRF9IQU5ETEVSX0I7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIHRoaXMudjEgPSBJRF9IQU5ETEVSX0E7Ci0gICAgfQotICAgIHBhY2tl
dC5pZCA9IHRoaXMudjE7Ci0gICAgcGFja2V0LmExID0gMDsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IERBVEFfU0laRTsgaSsrKSB7Ci0gICAgICB0aGlzLnYyKys7Ci0gICAgICBpZiAodGhpcy52
MiA+IDI2KSB0aGlzLnYyID0gMTsKLSAgICAgIHBhY2tldC5hMltpXSA9IHRoaXMudjI7Ci0gICAg
fQotICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZShwYWNrZXQpOwotICB9Ci19OwotCi1X
b3JrZXJUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKLSAgcmV0dXJuICJX
b3JrZXJUYXNrIjsKLX07Ci0KLS8qKgotICogQSB0YXNrIHRoYXQgbWFuaXB1bGF0ZXMgd29yayBw
YWNrZXRzIGFuZCB0aGVuIHN1c3BlbmRzIGl0c2VsZi4KLSAqIEBwYXJhbSB7U2NoZWR1bGVyfSBz
Y2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNrCi0gKiBAY29uc3Ry
dWN0b3IKLSAqLwotZnVuY3Rpb24gSGFuZGxlclRhc2soc2NoZWR1bGVyKSB7Ci0gIHRoaXMuc2No
ZWR1bGVyID0gc2NoZWR1bGVyOwotICB0aGlzLnYxID0gbnVsbDsKLSAgdGhpcy52MiA9IG51bGw7
Ci19Ci0KLUhhbmRsZXJUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7Ci0g
IGlmIChwYWNrZXQgIT0gbnVsbCkgewotICAgIGlmIChwYWNrZXQua2luZCA9PSBLSU5EX1dPUksp
IHsKLSAgICAgIHRoaXMudjEgPSBwYWNrZXQuYWRkVG8odGhpcy52MSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIHRoaXMudjIgPSBwYWNrZXQuYWRkVG8odGhpcy52Mik7Ci0gICAgfQotICB9Ci0gIGlm
ICh0aGlzLnYxICE9IG51bGwpIHsKLSAgICB2YXIgY291bnQgPSB0aGlzLnYxLmExOwotICAgIHZh
ciB2OwotICAgIGlmIChjb3VudCA8IERBVEFfU0laRSkgewotICAgICAgaWYgKHRoaXMudjIgIT0g
bnVsbCkgewotICAgICAgICB2ID0gdGhpcy52MjsKLSAgICAgICAgdGhpcy52MiA9IHRoaXMudjIu
bGluazsKLSAgICAgICAgdi5hMSA9IHRoaXMudjEuYTJbY291bnRdOwotICAgICAgICB0aGlzLnYx
LmExID0gY291bnQgKyAxOwotICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7
Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIHYgPSB0aGlzLnYxOwotICAgICAgdGhpcy52
MSA9IHRoaXMudjEubGluazsKLSAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsK
LSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7Ci19
OwotCi1IYW5kbGVyVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7Ci0gIHJl
dHVybiAiSGFuZGxlclRhc2siOwotfTsKLQotLyogLS0tICoKLSAqIFAgYSBjIGsgZSB0Ci0gKiAt
LS0gKi8KLQotdmFyIERBVEFfU0laRSA9IDQ7Ci0KLS8qKgotICogQSBzaW1wbGUgcGFja2FnZSBv
ZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91
dAotICogb2YgdGhlIHBheWxvYWQgZGF0YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBv
cnRhaW50LCBhbmQgbmVpdGhlciBpcyB0aGUKLSAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3Jt
ZWQgb24gcGFja2V0cyBieSB0aGUgdGFza3MuCi0gKgotICogQmVzaWRlcyBjYXJyeWluZyBkYXRh
LCBwYWNrZXRzIGZvcm0gbGlua2VkIGxpc3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCi0g
KiBkYXRhIGFuZCB3b3JrbGlzdHMuCi0gKiBAcGFyYW0ge1BhY2tldH0gbGluayB0aGUgdGFpbCBv
ZiB0aGUgbGlua2VkIGxpc3Qgb2YgcGFja2V0cwotICogQHBhcmFtIHtpbnR9IGlkIGFuIElEIGZv
ciB0aGlzIHBhY2tldAotICogQHBhcmFtIHtpbnR9IGtpbmQgdGhlIHR5cGUgb2YgdGhpcyBwYWNr
ZXQKLSAqIEBjb25zdHJ1Y3RvcgotICovCi1mdW5jdGlvbiBQYWNrZXQobGluaywgaWQsIGtpbmQp
IHsKLSAgdGhpcy5saW5rID0gbGluazsKLSAgdGhpcy5pZCA9IGlkOwotICB0aGlzLmtpbmQgPSBr
aW5kOwotICB0aGlzLmExID0gMDsKLSAgdGhpcy5hMiA9IG5ldyBBcnJheShEQVRBX1NJWkUpOwot
fQotCi0vKioKLSAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEgd29ya2xpc3QsIGFu
ZCByZXR1cm4gdGhlIHdvcmtsaXN0LgotICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSB3b3Jr
bGlzdCB0byBhZGQgdGhpcyBwYWNrZXQgdG8KLSAqLwotUGFja2V0LnByb3RvdHlwZS5hZGRUbyA9
IGZ1bmN0aW9uIChxdWV1ZSkgewotICB0aGlzLmxpbmsgPSBudWxsOwotICBpZiAocXVldWUgPT0g
bnVsbCkgcmV0dXJuIHRoaXM7Ci0gIHZhciBwZWVrLCBuZXh0ID0gcXVldWU7Ci0gIHdoaWxlICgo
cGVlayA9IG5leHQubGluaykgIT0gbnVsbCkKLSAgICBuZXh0ID0gcGVlazsKLSAgbmV4dC5saW5r
ID0gdGhpczsKLSAgcmV0dXJuIHF1ZXVlOwotfTsKLQotUGFja2V0LnByb3RvdHlwZS50b1N0cmlu
ZyA9IGZ1bmN0aW9uICgpIHsKLSAgcmV0dXJuICJQYWNrZXQiOwotfTsKLQotCi1jb25zdCBzdGFy
dCA9IERhdGUubm93KCkKLWZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkKLSAgICBydW5SaWNo
YXJkcygpOwotY29uc3QgZW5kID0gRGF0ZS5ub3coKQotcHJpbnQoZW5kIC0gc3RhcnQpOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hh
cmRzTW9zdGx5SlMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZjliYmYyMjBjYTdh
ZDMyMzE4ZjkwZjQwNmJjNmVkNzBhNjIwM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgL2Rldi9u
dWxsCkBAIC0xLDI5MCArMCwwIEBACi0vLyAhJCpVVEY4KiQhCi17Ci0JYXJjaGl2ZVZlcnNpb24g
PSAxOwotCWNsYXNzZXMgPSB7Ci0JfTsKLQlvYmplY3RWZXJzaW9uID0gNTA7Ci0Jb2JqZWN0cyA9
IHsKLQotLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMTQwMTE4MUMyNDk5ODUx
NzAwMzk4N0E5IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDAxMTgxQjI0OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCAqLzsg
fTsKLQkJMTQxNUFEMTgyNDk5QTQxNDAwNUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1
QkIyRTQgLyogcmljaGFyZHMuanMgKi87IH07Ci0vKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KLQotLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCTE0MDEx
ODE2MjQ5OTg1MTcwMDM5ODdBOSAvKiBDb3B5RmlsZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7Ci0JCQlkc3RQYXRoID0g
IiI7Ci0JCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxNDE1QUQx
ODI0OTlBNDE0MDA1QkIyRTQgLyogcmljaGFyZHMuanMgaW4gQ29weUZpbGVzICovLAotCQkJKTsK
LQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5k
IFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KLQkJMTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRz
TW9zdGx5SlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
IFJpY2hhcmRzTW9zdGx5SlM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0J
CTE0MDExODFCMjQ5OTg1MTcwMDM5ODdBOSAvKiBtYWluLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9
IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MTVBRDE2MjQ5OTg2
MDUwMDVCQjJFNCAvKiByaWNoYXJkcy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IHJpY2hhcmRzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0JCTE0MDExODE1MjQ5OTg1MTcwMDM5ODdBOSAvKiBGcmFtZXdv
cmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0J
CTE0MDExODBGMjQ5OTg1MTcwMDM5ODdBOSA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMTQwMTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5
SlMgKi8sCi0JCQkJMTQwMTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAotCQkJ
KTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTE0MDExODE5MjQ5OTg1MTcw
MDM5ODdBOSAvKiBQcm9kdWN0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMg
Ki8sCi0JCQkpOwotCQkJbmFtZSA9IFByb2R1Y3RzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJMTQwMTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTE0MDExODFC
MjQ5OTg1MTcwMDM5ODdBOSAvKiBtYWluLnN3aWZ0ICovLAotCQkJCTE0MTVBRDE2MjQ5OTg2MDUw
MDVCQjJFNCAvKiByaWNoYXJkcy5qcyAqLywKLQkJCSk7Ci0JCQlwYXRoID0gUmljaGFyZHNNb3N0
bHlKUzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0vKiBFbmQgUEJYR3JvdXAg
c2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwotCQkxNDAx
MTgxNzI0OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNNb3N0bHlKUyAqLyA9IHsKLQkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDAxMTgxRjI0
OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIlJpY2hhcmRzTW9zdGx5SlMiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJMTQw
MTE4MTQyNDk5ODUxNzAwMzk4N0E5IC8qIFNvdXJjZXMgKi8sCi0JCQkJMTQwMTE4MTUyNDk5ODUx
NzAwMzk4N0E5IC8qIEZyYW1ld29ya3MgKi8sCi0JCQkJMTQwMTE4MTYyNDk5ODUxNzAwMzk4N0E5
IC8qIENvcHlGaWxlcyAqLywKLQkJCSk7Ci0JCQlidWlsZFJ1bGVzID0gKAotCQkJKTsKLQkJCWRl
cGVuZGVuY2llcyA9ICgKLQkJCSk7Ci0JCQluYW1lID0gUmljaGFyZHNNb3N0bHlKUzsKLQkJCXBy
b2R1Y3ROYW1lID0gUmljaGFyZHNNb3N0bHlKUzsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDAx
MTgxODI0OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNNb3N0bHlKUyAqLzsKLQkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7Ci0JCX07Ci0vKiBFbmQgUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0J
CTE0MDExODEwMjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJCWlz
YSA9IFBCWFByb2plY3Q7Ci0JCQlhdHRyaWJ1dGVzID0gewotCQkJCUxhc3RTd2lmdFVwZGF0ZUNo
ZWNrID0gMTIwMDsKLQkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTIwMDsKLQkJCQlUYXJnZXRBdHRy
aWJ1dGVzID0gewotCQkJCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkgPSB7Ci0JCQkJCQlDcmVh
dGVkT25Ub29sc1ZlcnNpb24gPSAxMi4wOwotCQkJCQl9OwotCQkJCX07Ci0JCQl9OwotCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MDExODEzMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5SlMiICovOwot
CQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsKLQkJCWRldmVsb3BtZW50UmVn
aW9uID0gZW47Ci0JCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKLQkJCWtub3duUmVnaW9u
cyA9ICgKLQkJCQllbiwKLQkJCQlCYXNlLAotCQkJKTsKLQkJCW1haW5Hcm91cCA9IDE0MDExODBG
MjQ5OTg1MTcwMDM5ODdBOTsKLQkJCXByb2R1Y3RSZWZHcm91cCA9IDE0MDExODE5MjQ5OTg1MTcw
MDM5ODdBOSAvKiBQcm9kdWN0cyAqLzsKLQkJCXByb2plY3REaXJQYXRoID0gIiI7Ci0JCQlwcm9q
ZWN0Um9vdCA9ICIiOwotCQkJdGFyZ2V0cyA9ICgKLQkJCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3
QTkgLyogUmljaGFyZHNNb3N0bHlKUyAqLywKLQkJCSk7Ci0JCX07Ci0vKiBFbmQgUEJYUHJvamVj
dCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
LQkJMTQwMTE4MTQyNDk5ODUxNzAwMzk4N0E5IC8qIFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0J
CQlmaWxlcyA9ICgKLQkJCQkxNDAxMTgxQzI0OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCBp
biBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwotCQl9OwotLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQot
LyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCQkxNDAxMTgxRDI0OTk4
NTE3MDAzOTg3QTkgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0g
Tk87Ci0JCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKLQkJCQlDTEFOR19BTkFMWVpF
Ul9OVU1CRVJfT0JKRUNUX0NPTlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlDTEFOR19D
WFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNCI7Ci0JCQkJQ0xBTkdfQ1hYX0xJQlJBUlkg
PSAibGliYysrIjsKLQkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKLQkJCQlDTEFOR19F
TkFCTEVfT0JKQ19BUkMgPSBZRVM7Ci0JCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsK
LQkJCQlDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKLQkJCQlD
TEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0NPTU1BID0g
WUVTOwotCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFO
R19XQVJOX0RFUFJFQ0FURURfT0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7Ci0JCQkJQ0xBTkdf
V0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7Ci0JCQkJQ0xBTkdfV0FSTl9E
T0NVTUVOVEFUSU9OX0NPTU1FTlRTID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9
IFlFUzsKLQkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19X
QVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJT
SU9OID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0g
WUVTOwotCQkJCUNMQU5HX1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKLQkJ
CQlDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOwotCQkJCUNMQU5HX1dB
Uk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOwotCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lO
Q0xVREVfSU5fRlJBTUVXT1JLX0hFQURFUiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX1JBTkdFX0xP
T1BfQU5BTFlTSVMgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlF
UzsKLQkJCQlDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKLQkJCQlDTEFOR19XQVJO
X1VOR1VBUkRFRF9BVkFJTEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlDTEFOR19XQVJO
X1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhP
RF9NQVRDSCA9IFlFUzsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJREVCVUdfSU5G
T1JNQVRJT05fRk9STUFUID0gZHdhcmY7Ci0JCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQg
PSBZRVM7Ci0JCQkJRU5BQkxFX1RFU1RBQklMSVRZID0gWUVTOwotCQkJCUdDQ19DX0xBTkdVQUdF
X1NUQU5EQVJEID0gZ251MTE7Ci0JCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87Ci0JCQkJR0ND
X05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7
Ci0JCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKLQkJCQkJIkRFQlVHPTEiLAot
CQkJCQkiJChpbmhlcml0ZWQpIiwKLQkJCQkpOwotCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9D
T05WRVJTSU9OID0gWUVTOwotCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VS
Uk9SOwotCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7Ci0JCQkJR0NDX1dB
Uk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOwotCQkJCUdDQ19XQVJOX1VO
VVNFRF9GVU5DVElPTiA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
Ci0JCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTY7Ci0JCQkJTVRMX0VOQUJMRV9E
RUJVR19JTkZPID0gSU5DTFVERV9TT1VSQ0U7Ci0JCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKLQkJ
CQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQkJU1dJ
RlRfQUNUSVZFX0NPTVBJTEFUSU9OX0NPTkRJVElPTlMgPSBERUJVRzsKLQkJCQlTV0lGVF9PUFRJ
TUlaQVRJT05fTEVWRUwgPSAiLU9ub25lIjsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07
Ci0JCTE0MDExODFFMjQ5OTg1MTcwMDM5ODdBOSAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFMV0FZU19T
RUFSQ0hfVVNFUl9QQVRIUyA9IE5POwotCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7
Ci0JCQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JF
U1NJVkU7Ci0JCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOwotCQkJ
CUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7Ci0JCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMg
PSBZRVM7Ci0JCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOwotCQkJCUNMQU5HX0VOQUJM
RV9PQkpDX1dFQUsgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxF
QVNJTkcgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJ
Q0xBTkdfV0FSTl9DT01NQSA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJ
T04gPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05T
ID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9S
OwotCQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKLQkJCQlDTEFO
R19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04g
PSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7Ci0JCQkJQ0xB
TkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFM
X05VTExfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVU
QUlOX1NFTEYgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9
IFlFUzsKLQkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKLQkJCQlD
TEFOR19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7Ci0JCQkJ
Q0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fU1RS
SUNUX1BST1RPVFlQRVMgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZ
RVM7Ci0JCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJ
VkU7Ci0JCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOwotCQkJCUNMQU5HX1dB
Uk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POwotCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwot
CQkJCUVOQUJMRV9OU19BU1NFUlRJT05TID0gTk87Ci0JCQkJRU5BQkxFX1NUUklDVF9PQkpDX01T
R1NFTkQgPSBZRVM7Ci0JCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKLQkJCQlH
Q0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKLQkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09O
VkVSU0lPTiA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJP
UjsKLQkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotCQkJCUdDQ19XQVJO
X1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlHQ0NfV0FSTl9VTlVT
RURfRlVOQ1RJT04gPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwot
CQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OwotCQkJCU1UTF9FTkFCTEVfREVC
VUdfSU5GTyA9IE5POwotCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7Ci0JCQkJU0RLUk9PVCA9IG1h
Y29zeDsKLQkJCQlTV0lGVF9DT01QSUxBVElPTl9NT0RFID0gd2hvbGVtb2R1bGU7Ci0JCQkJU1dJ
RlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1PIjsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsK
LQkJfTsKLQkJMTQwMTE4MjAyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovID0gewotCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPREVf
U0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKLQkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOwotCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwot
CQl9OwotCQkxNDAxMTgyMTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT0RF
X1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKLQkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNl
OwotCQl9OwotLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLQotLyogQmVn
aW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0JCTE0MDExODEzMjQ5OTg1MTcwMDM5
ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRz
TW9zdGx5SlMiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCi0JCQkJMTQwMTE4MUQyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVn
ICovLAotCQkJCTE0MDExODFFMjQ5OTg1MTcwMDM5ODdBOSAvKiBSZWxlYXNlICovLAotCQkJKTsK
LQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTE0MDExODFGMjQ5OTg1MTcwMDM5ODdBOSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNN
b3N0bHlKUyIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRD
b25maWd1cmF0aW9ucyA9ICgKLQkJCQkxNDAxMTgyMDI0OTk4NTE3MDAzOTg3QTkgLyogRGVidWcg
Ki8sCi0JCQkJMTQwMTE4MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8sCi0JCQkpOwot
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNl
Y3Rpb24gKi8KLQl9OwotCXJvb3RPYmplY3QgPSAxNDAxMTgxMDI0OTk4NTE3MDAzOTg3QTkgLyog
UHJvamVjdCBvYmplY3QgKi87Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2oveGNzaGFyZWRk
YXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3RseUpTLnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3hj
c2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlKUy54Y3NjaGVtZQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzODRjNDgyOWU4ZmY1NWFhN2UyNTU5OGVlZjU1MGJiZjg3
OGM5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy54
Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3RseUpTLnhjc2NoZW1l
CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KLTxTY2hlbWUKLSAgIExhc3RVcGdyYWRlVmVyc2lvbiA9ICIxMjAwIgot
ICAgdmVyc2lvbiA9ICIxLjciPgotICAgPEJ1aWxkQWN0aW9uCi0gICAgICBwYXJhbGxlbGl6ZUJ1
aWxkYWJsZXMgPSAiWUVTIgotICAgICAgYnVpbGRJbXBsaWNpdERlcGVuZGVuY2llcyA9ICJZRVMi
PgotICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KLSAgICAgICAgIDxCdWlsZEFjdGlvbkVudHJ5
Ci0gICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgotICAgICAgICAgICAgYnVpbGRG
b3JSdW5uaW5nID0gIllFUyIKLSAgICAgICAgICAgIGJ1aWxkRm9yUHJvZmlsaW5nID0gIllFUyIK
LSAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllFUyIKLSAgICAgICAgICAgIGJ1aWxk
Rm9yQW5hbHl6aW5nID0gIllFUyI+Ci0gICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCi0g
ICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCi0gICAgICAgICAg
ICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSIKLSAg
ICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlKUyIKLSAgICAgICAg
ICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlKUyIKLSAgICAgICAgICAgICAg
IFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5SlMueGNvZGVw
cm9qIj4KLSAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgotICAgICAgICAgPC9CdWls
ZEFjdGlvbkVudHJ5PgotICAgICAgPC9CdWlsZEFjdGlvbkVudHJpZXM+Ci0gICA8L0J1aWxkQWN0
aW9uPgotICAgPFRlc3RBY3Rpb24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIK
LSAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRh
dGlvbi5EZWJ1Z2dlci5MTERCIgotICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAi
WGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCi0gICAgICBzaG91bGRVc2VM
YXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+Ci0gICAgICA8VGVzdGFibGVzPgotICAgICAgPC9U
ZXN0YWJsZXM+Ci0gICA8L1Rlc3RBY3Rpb24+Ci0gICA8TGF1bmNoQWN0aW9uCi0gICAgICBidWls
ZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKLSAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlm
aWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgotICAgICAgc2Vs
ZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5j
aGVyLkxMREIiCi0gICAgICBsYXVuY2hTdHlsZSA9ICIwIgotICAgICAgdXNlQ3VzdG9tV29ya2lu
Z0RpcmVjdG9yeSA9ICJOTyIKLSAgICAgIGlnbm9yZXNQZXJzaXN0ZW50U3RhdGVPbkxhdW5jaCA9
ICJOTyIKLSAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIKLSAgICAgIGRlYnVn
U2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKLSAgICAgIGFsbG93TG9jYXRpb25TaW11bGF0
aW9uID0gIllFUyI+Ci0gICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCi0gICAgICAgICBy
dW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+Ci0gICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNl
Ci0gICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCi0gICAgICAgICAg
ICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSIKLSAgICAg
ICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlKUyIKLSAgICAgICAgICAgIEJs
dWVwcmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlKUyIKLSAgICAgICAgICAgIFJlZmVyZW5jZWRD
b250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qIj4KLSAgICAg
ICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgotICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFi
bGU+Ci0gICA8L0xhdW5jaEFjdGlvbj4KLSAgIDxQcm9maWxlQWN0aW9uCi0gICAgICBidWlsZENv
bmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKLSAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NF
bnYgPSAiWUVTIgotICAgICAgc2F2ZWRUb29sSWRlbnRpZmllciA9ICIiCi0gICAgICB1c2VDdXN0
b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5PIgotICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcg
PSAiWUVTIj4KLSAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKLSAgICAgICAgIHJ1bm5h
YmxlRGVidWdnaW5nTW9kZSA9ICIwIj4KLSAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKLSAg
ICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKLSAgICAgICAgICAgIEJs
dWVwcmludElkZW50aWZpZXIgPSAiMTQwMTE4MTcyNDk5ODUxNzAwMzk4N0E5IgotICAgICAgICAg
ICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc01vc3RseUpTIgotICAgICAgICAgICAgQmx1ZXBy
aW50TmFtZSA9ICJSaWNoYXJkc01vc3RseUpTIgotICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRh
aW5lciA9ICJjb250YWluZXI6UmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2oiPgotICAgICAgICAg
PC9CdWlsZGFibGVSZWZlcmVuY2U+Ci0gICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4K
LSAgIDwvUHJvZmlsZUFjdGlvbj4KLSAgIDxBbmFseXplQWN0aW9uCi0gICAgICBidWlsZENvbmZp
Z3VyYXRpb24gPSAiRGVidWciPgotICAgPC9BbmFseXplQWN0aW9uPgotICAgPEFyY2hpdmVBY3Rp
b24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgotICAgICAgcmV2ZWFsQXJj
aGl2ZUluT3JnYW5pemVyID0gIllFUyI+Ci0gICA8L0FyY2hpdmVBY3Rpb24+Ci0gICA8SW5zdGFs
bEFjdGlvbgotICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiPgotICAgPC9JbnN0
YWxsQWN0aW9uPgotPC9TY2hlbWU+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9tYWluLnN3aWZ0IGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMvbWFp
bi5zd2lmdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDlhZWI5MjFiMDk5YTVkYTll
ZDVkOTVlMmE0NzIyNjA5MGNkZGQzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMv
UmljaGFyZHNNb3N0bHlKUy9tYWluLnN3aWZ0CisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSovCi0KLWltcG9ydCBGb3VuZGF0aW9uCi1pbXBvcnQgSmF2YVNjcmlwdENvcmUK
LWltcG9ydCBRdWFydHpDb3JlCi0KLWxldCBJRF9IQU5ETEVSX0EgPSAyCi1sZXQgSURfSEFORExF
Ul9CID0gMwotbGV0IERBVEFfU0laRSA9IDQKLQotQG9iamMgcHJvdG9jb2wgV29ya2VyVGFza0V4
cG9ydHMgOiBKU0V4cG9ydCB7Ci0gICAgdmFyIHNjaGVkdWxlciA6IEpTVmFsdWUgeyBnZXQgfQot
ICAgIHZhciB2MSA6IEludCB7IGdldCB9Ci0gICAgdmFyIHYyIDogSW50IHsgZ2V0IH0KLQotICAg
IGluaXQoc2NoZWR1bGVyOiBKU1ZhbHVlLCB2MTogSW50LCB2MjogSW50KQotCi0gICAgZnVuYyBy
dW4oXzogSlNWYWx1ZSktPiBOU09iamVjdAotICAgIGZ1bmMgdG9TdHJpbmcoKSAtPiBTdHJpbmcK
LX0KLQotQG9iamMgcHVibGljIGNsYXNzIFdvcmtlclRhc2sgOiBOU09iamVjdCwgV29ya2VyVGFz
a0V4cG9ydHMgewotICAgIGR5bmFtaWMgdmFyIHNjaGVkdWxlciA6IEpTVmFsdWUKLSAgICBkeW5h
bWljIHZhciB2MSA6IEludAotICAgIGR5bmFtaWMgdmFyIHYyIDogSW50Ci0KLSAgICByZXF1aXJl
ZCBpbml0KHNjaGVkdWxlcjogSlNWYWx1ZSwgdjE6IEludCwgdjI6IEludCkKLSAgICB7Ci0gICAg
ICAgIHNlbGYuc2NoZWR1bGVyID0gc2NoZWR1bGVyCi0gICAgICAgIHNlbGYudjEgPSB2MQotICAg
ICAgICBzZWxmLnYyID0gdjIKLSAgICB9Ci0KLSAgICBmdW5jIHRvU3RyaW5nKCkgLT4gU3RyaW5n
Ci0gICAgewotICAgICAgICByZXR1cm4gIldvcmtlclRhc2siCi0gICAgfQotCi0gICAgZnVuYyBy
dW4oXyBwYWNrZXQ6IEpTVmFsdWUpIC0+IE5TT2JqZWN0Ci0gICAgewotICAgICAgICBpZiBwYWNr
ZXQuaXNOdWxsIHx8IHBhY2tldC5pc1VuZGVmaW5lZCB7Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5zY2hlZHVsZXIuaW52b2tlTWV0aG9kKCJzdXNwZW5kQ3VycmVudCIsIHdpdGhBcmd1bWVudHM6
IFtdKQotICAgICAgICB9Ci0KLSAgICAgICAgc2VsZi52MSA9IElEX0hBTkRMRVJfQSArIElEX0hB
TkRMRVJfQiAtIHNlbGYudjEKLSAgICAgICAgcGFja2V0LnNldFZhbHVlKHNlbGYudjEsIGZvclBy
b3BlcnR5OiAiaWQiKQotICAgICAgICBwYWNrZXQuc2V0VmFsdWUoMCwgZm9yUHJvcGVydHk6ICJh
MSIpCi0gICAgICAgIGZvciBpIGluIDAuLi5EQVRBX1NJWkUgewotICAgICAgICAgICAgc2VsZi52
MiArPSAxCi0gICAgICAgICAgICBpZiBzZWxmLnYyID4gMjYgewotICAgICAgICAgICAgICAgIHNl
bGYudjIgPSAxCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwYWNrZXQuZm9yUHJvcGVydHko
ImEyIikuc2V0VmFsdWUoc2VsZi52MiwgZm9yUHJvcGVydHk6IGkpCi0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmludm9rZU1ldGhvZCgicXVldWUiLCB3aXRoQXJndW1l
bnRzOiBbcGFja2V0XSkKLSAgICB9Ci19Ci0KLWd1YXJkIGxldCBjb250ZXh0ID0gSlNDb250ZXh0
KCkgZWxzZSB7Ci0gICAgZXhpdCgxKQotfQotCi1jb250ZXh0LnNldE9iamVjdChXb3JrZXJUYXNr
LnNlbGYsIGZvcktleWVkU3Vic2NyaXB0OiAiV29ya2VyVGFzayIgYXMgTlNTdHJpbmcpCi1jb250
ZXh0LmV4Y2VwdGlvbkhhbmRsZXIgPSB7IGNvbnRleHQsIGV4Y2VwdGlvbiBpbgotICAgIHByaW50
KGV4Y2VwdGlvbj8udG9TdHJpbmcoKSBhcyBBbnkpCi0gICAgZXhpdCgxKQotfQotCi1sZXQgc291
cmNlID0gdHJ5IFN0cmluZyhjb250ZW50c09mRmlsZTogInJpY2hhcmRzLmpzIikKLWxldCByZXN1
bHQgPSBjb250ZXh0LmV2YWx1YXRlU2NyaXB0KHNvdXJjZSkKLQotbGV0IGl0ZXJhdGlvbnMgPSA1
MAotbGV0IHN0YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCkKLWZvciBfIGluIDEuLi5pdGVyYXRp
b25zIHsKLSAgICBjb250ZXh0Lm9iamVjdEZvcktleWVkU3Vic2NyaXB0KCJydW5SaWNoYXJkcyIp
LmNhbGwod2l0aEFyZ3VtZW50czogW10pCi19Ci1sZXQgZW5kID0gQ0FDdXJyZW50TWVkaWFUaW1l
KCkKLXByaW50KEludCgoZW5kLXN0YXJ0KSAqIDEwMDApKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMvcmljaGFy
ZHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFy
ZHNNb3N0bHlKUy9yaWNoYXJkcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk1
NzNkOWFmNDQwZmRhM2M5ZTZhNjZhOWU3MWE1ZDhmMzlkM2Y4NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jp
Y2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9yaWNoYXJkcy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDQ5NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNi0yMDA4IHRoZSBWOCBwcm9qZWN0
IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKLS8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAotLy8gICAgICAgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0vLyAgICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0v
LyBUaGlzIGlzIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUmljaGFyZHMKLS8v
IGJlbmNobWFyayBmcm9tOgotLy8KLS8vICAgIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tcjEw
L0JlbmNoLmh0bWwKLS8vCi0vLyBUaGUgYmVuY2htYXJrIHdhcyBvcmlnaW5hbGx5IGltcGxlbWVu
dGVkIGluIEJDUEwgYnkKLS8vIE1hcnRpbiBSaWNoYXJkcy4KLQotCi0vKioKLSAqIFRoZSBSaWNo
YXJkcyBiZW5jaG1hcmsgc2ltdWxhdGVzIHRoZSB0YXNrIGRpc3BhdGNoZXIgb2YgYW4KLSAqIG9w
ZXJhdGluZyBzeXN0ZW0uCi0gKiovCi1mdW5jdGlvbiBydW5SaWNoYXJkcygpIHsKLSAgdmFyIHNj
aGVkdWxlciA9IG5ldyBTY2hlZHVsZXIoKTsKLSAgc2NoZWR1bGVyLmFkZElkbGVUYXNrKElEX0lE
TEUsIDAsIG51bGwsIENPVU5UKTsKLQotICB2YXIgcXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElE
X1dPUktFUiwgS0lORF9XT1JLKTsKLSAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfV09S
S0VSLCBLSU5EX1dPUkspOwotICBzY2hlZHVsZXIuYWRkV29ya2VyVGFzayhJRF9XT1JLRVIsIDEw
MDAsIHF1ZXVlKTsKLQotICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0EsIEtJ
TkRfREVWSUNFKTsKLSAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0EsIEtJ
TkRfREVWSUNFKTsKLSAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0EsIEtJ
TkRfREVWSUNFKTsKLSAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQSwgMjAw
MCwgcXVldWUpOwotCi0gIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9ERVZJQ0VfQiwgS0lO
RF9ERVZJQ0UpOwotICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQiwgS0lO
RF9ERVZJQ0UpOwotICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQiwgS0lO
RF9ERVZJQ0UpOwotICBzY2hlZHVsZXIuYWRkSGFuZGxlclRhc2soSURfSEFORExFUl9CLCAzMDAw
LCBxdWV1ZSk7Ci0KLSAgc2NoZWR1bGVyLmFkZERldmljZVRhc2soSURfREVWSUNFX0EsIDQwMDAs
IG51bGwpOwotCi0gIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9CLCA1MDAwLCBu
dWxsKTsKLQotICBzY2hlZHVsZXIuc2NoZWR1bGUoKTsKLQotICBpZiAoc2NoZWR1bGVyLnF1ZXVl
Q291bnQgIT0gRVhQRUNURURfUVVFVUVfQ09VTlQgfHwKLSAgICAgIHNjaGVkdWxlci5ob2xkQ291
bnQgIT0gRVhQRUNURURfSE9MRF9DT1VOVCkgewotICAgIHZhciBtc2cgPQotICAgICAgICAiRXJy
b3IgZHVyaW5nIGV4ZWN1dGlvbjogcXVldWVDb3VudCA9ICIgKyBzY2hlZHVsZXIucXVldWVDb3Vu
dCArCi0gICAgICAgICIsIGhvbGRDb3VudCA9ICIgKyBzY2hlZHVsZXIuaG9sZENvdW50ICsgIi4i
OwotICAgIHRocm93IG5ldyBFcnJvcihtc2cpOwotICB9Ci19Ci0KLXZhciBDT1VOVCA9IDEwMDA7
Ci0KLS8qKgotICogVGhlc2UgdHdvIGNvbnN0YW50cyBzcGVjaWZ5IGhvdyBtYW55IHRpbWVzIGEg
cGFja2V0IGlzIHF1ZXVlZCBhbmQKLSAqIGhvdyBtYW55IHRpbWVzIGEgdGFzayBpcyBwdXQgb24g
aG9sZCBpbiBhIGNvcnJlY3QgcnVuIG9mIHJpY2hhcmRzLgotICogVGhleSBkb24ndCBoYXZlIGFu
eSBtZWFuaW5nIGEgc3VjaCBidXQgYXJlIGNoYXJhY3RlcmlzdGljIG9mIGEKLSAqIGNvcnJlY3Qg
cnVuIHNvIGlmIHRoZSBhY3R1YWwgcXVldWUgb3IgaG9sZCBjb3VudCBpcyBkaWZmZXJlbnQgZnJv
bQotICogdGhlIGV4cGVjdGVkIHRoZXJlIG11c3QgYmUgYSBidWcgaW4gdGhlIGltcGxlbWVudGF0
aW9uLgotICoqLwotdmFyIEVYUEVDVEVEX1FVRVVFX0NPVU5UID0gMjMyMjsKLXZhciBFWFBFQ1RF
RF9IT0xEX0NPVU5UID0gOTI4OwotCi0KLS8qKgotICogQSBzY2hlZHVsZXIgY2FuIGJlIHVzZWQg
dG8gc2NoZWR1bGUgYSBzZXQgb2YgdGFza3MgYmFzZWQgb24gdGhlaXIgcmVsYXRpdmUKLSAqIHBy
aW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0IG9mIHRh
c2sgY29udHJvbCBibG9ja3MKLSAqIHdoaWNoIGhvbGRzIHRhc2tzIGFuZCB0aGUgZGF0YSBxdWV1
ZSB0aGV5IGFyZSBwcm9jZXNzaW5nLgotICogQGNvbnN0cnVjdG9yCi0gKi8KLWZ1bmN0aW9uIFNj
aGVkdWxlcigpIHsKLSAgdGhpcy5xdWV1ZUNvdW50ID0gMDsKLSAgdGhpcy5ob2xkQ291bnQgPSAw
OwotICB0aGlzLmJsb2NrcyA9IG5ldyBBcnJheShOVU1CRVJfT0ZfSURTKTsKLSAgdGhpcy5saXN0
ID0gbnVsbDsKLSAgdGhpcy5jdXJyZW50VGNiID0gbnVsbDsKLSAgdGhpcy5jdXJyZW50SWQgPSBu
dWxsOwotfQotCi12YXIgSURfSURMRSAgICAgICA9IDA7Ci12YXIgSURfV09SS0VSICAgICA9IDE7
Ci12YXIgSURfSEFORExFUl9BICA9IDI7Ci12YXIgSURfSEFORExFUl9CICA9IDM7Ci12YXIgSURf
REVWSUNFX0EgICA9IDQ7Ci12YXIgSURfREVWSUNFX0IgICA9IDU7Ci12YXIgTlVNQkVSX09GX0lE
UyA9IDY7Ci0KLXZhciBLSU5EX0RFVklDRSAgID0gMDsKLXZhciBLSU5EX1dPUksgICAgID0gMTsK
LQotLyoqCi0gKiBBZGQgYW4gaWRsZSB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgotICogQHBhcmFt
IHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzawotICogQHBhcmFtIHtpbnR9IHByaW9y
aXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKLSAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVl
dWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKLSAqIEBwYXJhbSB7aW50fSBj
b3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHNjaGVkdWxlIHRoZSB0YXNrCi0gKi8KLVNjaGVk
dWxlci5wcm90b3R5cGUuYWRkSWRsZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1
ZSwgY291bnQpIHsKLSAgdGhpcy5hZGRSdW5uaW5nVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBu
ZXcgSWRsZVRhc2sodGhpcywgMSwgY291bnQpKTsKLX07Ci0KLS8qKgotICogQWRkIGEgd29yayB0
YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgotICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBv
ZiB0aGUgdGFzawotICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkK
LSAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNz
ZWQgYnkgdGhlIHRhc2sKLSAqLwotU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRXb3JrZXJUYXNrID0g
ZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKLSAgdGhpcy5hZGRUYXNrKGlkLCBwcmlv
cml0eSwgcXVldWUsIG5ldyBXb3JrZXJUYXNrKHRoaXMsIElEX0hBTkRMRVJfQSwgMCkpOwotfTsK
LQotLyoqCi0gKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCi0gKiBAcGFy
YW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCi0gKiBAcGFyYW0ge2ludH0gcHJp
b3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQotICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBx
dWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzawotICovCi1TY2hlZHVsZXIu
cHJvdG90eXBlLmFkZEhhbmRsZXJUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUp
IHsKLSAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBIYW5kbGVyVGFzayh0
aGlzKSk7Ci19OwotCi0vKioKLSAqIEFkZCBhIGhhbmRsZXIgdGFzayB0byB0aGlzIHNjaGVkdWxl
ci4KLSAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKLSAqIEBwYXJh
bSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5Ci0gKiBAcGFyYW0ge1BhY2tldH0g
cXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCi0gKi8K
LVNjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2aWNlVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3Jp
dHksIHF1ZXVlKSB7Ci0gIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgRGV2
aWNlVGFzayh0aGlzKSkKLX07Ci0KLS8qKgotICogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayBhbmQg
bWFyayBpdCBhcyBydW5uaW5nLgotICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0
aGUgdGFzawotICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKLSAq
IEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQg
YnkgdGhlIHRhc2sKLSAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzayB0byBhZGQKLSAqLwot
U2NoZWR1bGVyLnByb3RvdHlwZS5hZGRSdW5uaW5nVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3Jp
dHksIHF1ZXVlLCB0YXNrKSB7Ci0gIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCB0
YXNrKTsKLSAgdGhpcy5jdXJyZW50VGNiLnNldFJ1bm5pbmcoKTsKLX07Ci0KLS8qKgotICogQWRk
IHRoZSBzcGVjaWZpZWQgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KLSAqIEBwYXJhbSB7aW50fSBp
ZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKLSAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUg
dGFzaydzIHByaW9yaXR5Ci0gKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdv
cmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCi0gKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhl
IHRhc2sgdG8gYWRkCi0gKi8KLVNjaGVkdWxlci5wcm90b3R5cGUuYWRkVGFzayA9IGZ1bmN0aW9u
IChpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7Ci0gIHRoaXMuY3VycmVudFRjYiA9IG5ldyBU
YXNrQ29udHJvbEJsb2NrKHRoaXMubGlzdCwgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzayk7Ci0g
IHRoaXMubGlzdCA9IHRoaXMuY3VycmVudFRjYjsKLSAgdGhpcy5ibG9ja3NbaWRdID0gdGhpcy5j
dXJyZW50VGNiOwotfTsKLQotLyoqCi0gKiBFeGVjdXRlIHRoZSB0YXNrcyBtYW5hZ2VkIGJ5IHRo
aXMgc2NoZWR1bGVyLgotICovCi1TY2hlZHVsZXIucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rp
b24gKCkgewotICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmxpc3Q7Ci0gIHdoaWxlICh0aGlzLmN1
cnJlbnRUY2IgIT0gbnVsbCkgewotICAgIGlmICh0aGlzLmN1cnJlbnRUY2IuaXNIZWxkT3JTdXNw
ZW5kZWQoKSkgewotICAgICAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5jdXJyZW50VGNiLmxpbms7
Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRoaXMuY3VycmVudElkID0gdGhpcy5jdXJyZW50VGNiLmlk
OwotICAgICAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5jdXJyZW50VGNiLnJ1bigpOwotICAgIH0K
LSAgfQotfTsKLQotLyoqCi0gKiBSZWxlYXNlIGEgdGFzayB0aGF0IGlzIGN1cnJlbnRseSBibG9j
a2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVuLgotICogQHBhcmFtIHtpbnR9IGlk
IHRoZSBpZCBvZiB0aGUgdGFzayB0byBzdXNwZW5kCi0gKi8KLVNjaGVkdWxlci5wcm90b3R5cGUu
cmVsZWFzZSA9IGZ1bmN0aW9uIChpZCkgewotICB2YXIgdGNiID0gdGhpcy5ibG9ja3NbaWRdOwot
ICBpZiAodGNiID09IG51bGwpIHJldHVybiB0Y2I7Ci0gIHRjYi5tYXJrQXNOb3RIZWxkKCk7Ci0g
IGlmICh0Y2IucHJpb3JpdHkgPiB0aGlzLmN1cnJlbnRUY2IucHJpb3JpdHkpIHsKLSAgICByZXR1
cm4gdGNiOwotICB9IGVsc2UgewotICAgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7Ci0gIH0KLX07
Ci0KLS8qKgotICogQmxvY2sgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQgcmV0dXJu
IHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jawotICogdG8gcnVuLiAgVGhlIGJsb2NrZWQgdGFz
ayB3aWxsIG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0IGlzIGV4cGxpY2l0bHkKLSAqIHJl
bGVhc2VkLCBldmVuIGlmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIGl0LgotICovCi1TY2hlZHVsZXIu
cHJvdG90eXBlLmhvbGRDdXJyZW50ID0gZnVuY3Rpb24gKCkgewotICB0aGlzLmhvbGRDb3VudCsr
OwotICB0aGlzLmN1cnJlbnRUY2IubWFya0FzSGVsZCgpOwotICByZXR1cm4gdGhpcy5jdXJyZW50
VGNiLmxpbms7Ci19OwotCi0vKioKLSAqIFN1c3BlbmQgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcg
dGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jawotICogdG8gcnVuLiAg
SWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gdGhlIHN1c3BlbmRlZCB0YXNrIGl0IHdpbGwgYmUgbWFk
ZSBydW5uYWJsZS4KLSAqLwotU2NoZWR1bGVyLnByb3RvdHlwZS5zdXNwZW5kQ3VycmVudCA9IGZ1
bmN0aW9uICgpIHsKLSAgdGhpcy5jdXJyZW50VGNiLm1hcmtBc1N1c3BlbmRlZCgpOwotICByZXR1
cm4gdGhpcy5jdXJyZW50VGNiOwotfTsKLQotLyoqCi0gKiBBZGQgdGhlIHNwZWNpZmllZCBwYWNr
ZXQgdG8gdGhlIGVuZCBvZiB0aGUgd29ya2xpc3QgdXNlZCBieSB0aGUgdGFzawotICogYXNzb2Np
YXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5kIG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQgaXMg
Y3VycmVudGx5Ci0gKiBzdXNwZW5kZWQuCi0gKiBAcGFyYW0ge1BhY2tldH0gcGFja2V0IHRoZSBw
YWNrZXQgdG8gYWRkCi0gKi8KLVNjaGVkdWxlci5wcm90b3R5cGUucXVldWUgPSBmdW5jdGlvbiAo
cGFja2V0KSB7Ci0gIHZhciB0ID0gdGhpcy5ibG9ja3NbcGFja2V0LmlkXTsKLSAgaWYgKHQgPT0g
bnVsbCkgcmV0dXJuIHQ7Ci0gIHRoaXMucXVldWVDb3VudCsrOwotICBwYWNrZXQubGluayA9IG51
bGw7Ci0gIHBhY2tldC5pZCA9IHRoaXMuY3VycmVudElkOwotICByZXR1cm4gdC5jaGVja1ByaW9y
aXR5QWRkKHRoaXMuY3VycmVudFRjYiwgcGFja2V0KTsKLX07Ci0KLS8qKgotICogQSB0YXNrIGNv
bnRyb2wgYmxvY2sgbWFuYWdlcyBhIHRhc2sgYW5kIHRoZSBxdWV1ZSBvZiB3b3JrIHBhY2thZ2Vz
IGFzc29jaWF0ZWQKLSAqIHdpdGggaXQuCi0gKiBAcGFyYW0ge1Rhc2tDb250cm9sQmxvY2t9IGxp
bmsgdGhlIHByZWNlZGluZyBibG9jayBpbiB0aGUgbGlua2VkIGJsb2NrIGxpc3QKLSAqIEBwYXJh
bSB7aW50fSBpZCB0aGUgaWQgb2YgdGhpcyBibG9jawotICogQHBhcmFtIHtpbnR9IHByaW9yaXR5
IHRoZSBwcmlvcml0eSBvZiB0aGlzIGJsb2NrCi0gKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhl
IHF1ZXVlIG9mIHBhY2thZ2VzIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzawotICogQHBhcmFt
IHtUYXNrfSB0YXNrIHRoZSB0YXNrCi0gKiBAY29uc3RydWN0b3IKLSAqLwotZnVuY3Rpb24gVGFz
a0NvbnRyb2xCbG9jayhsaW5rLCBpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7Ci0gIHRoaXMu
bGluayA9IGxpbms7Ci0gIHRoaXMuaWQgPSBpZDsKLSAgdGhpcy5wcmlvcml0eSA9IHByaW9yaXR5
OwotICB0aGlzLnF1ZXVlID0gcXVldWU7Ci0gIHRoaXMudGFzayA9IHRhc2s7Ci0gIGlmIChxdWV1
ZSA9PSBudWxsKSB7Ci0gICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRDsKLSAgfSBlbHNl
IHsKLSAgICB0aGlzLnN0YXRlID0gU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFOwotICB9Ci19Ci0K
LS8qKgotICogVGhlIHRhc2sgaXMgcnVubmluZyBhbmQgaXMgY3VycmVudGx5IHNjaGVkdWxlZC4K
LSAqLwotdmFyIFNUQVRFX1JVTk5JTkcgPSAwOwotCi0vKioKLSAqIFRoZSB0YXNrIGhhcyBwYWNr
ZXRzIGxlZnQgdG8gcHJvY2Vzcy4KLSAqLwotdmFyIFNUQVRFX1JVTk5BQkxFID0gMTsKLQotLyoq
Ci0gKiBUaGUgdGFzayBpcyBub3QgY3VycmVudGx5IHJ1bm5pbmcuICBUaGUgdGFzayBpcyBub3Qg
YmxvY2tlZCBhcyBzdWNoIGFuZCBtYXkKLSogYmUgc3RhcnRlZCBieSB0aGUgc2NoZWR1bGVyLgot
ICovCi12YXIgU1RBVEVfU1VTUEVOREVEID0gMjsKLQotLyoqCi0gKiBUaGUgdGFzayBpcyBibG9j
a2VkIGFuZCBjYW5ub3QgYmUgcnVuIHVudGlsIGl0IGlzIGV4cGxpY2l0bHkgcmVsZWFzZWQuCi0g
Ki8KLXZhciBTVEFURV9IRUxEID0gNDsKLQotdmFyIFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRSA9
IFNUQVRFX1NVU1BFTkRFRCB8IFNUQVRFX1JVTk5BQkxFOwotdmFyIFNUQVRFX05PVF9IRUxEID0g
flNUQVRFX0hFTEQ7Ci0KLVRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnNldFJ1bm5pbmcgPSBm
dW5jdGlvbiAoKSB7Ci0gIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5OSU5HOwotfTsKLQotVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCA9IGZ1bmN0aW9uICgpIHsKLSAgdGhp
cy5zdGF0ZSA9IHRoaXMuc3RhdGUgJiBTVEFURV9OT1RfSEVMRDsKLX07Ci0KLVRhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLm1hcmtBc0hlbGQgPSBmdW5jdGlvbiAoKSB7Ci0gIHRoaXMuc3RhdGUg
PSB0aGlzLnN0YXRlIHwgU1RBVEVfSEVMRDsKLX07Ci0KLVRhc2tDb250cm9sQmxvY2sucHJvdG90
eXBlLmlzSGVsZE9yU3VzcGVuZGVkID0gZnVuY3Rpb24gKCkgewotICByZXR1cm4gKHRoaXMuc3Rh
dGUgJiBTVEFURV9IRUxEKSAhPSAwIHx8ICh0aGlzLnN0YXRlID09IFNUQVRFX1NVU1BFTkRFRCk7
Ci19OwotCi1UYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNTdXNwZW5kZWQgPSBmdW5j
dGlvbiAoKSB7Ci0gIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwgU1RBVEVfU1VTUEVOREVEOwot
fTsKLQotVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzUnVubmFibGUgPSBmdW5jdGlv
biAoKSB7Ci0gIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwgU1RBVEVfUlVOTkFCTEU7Ci19Owot
Ci0vKioKLSAqIFJ1bnMgdGhpcyB0YXNrLCBpZiBpdCBpcyByZWFkeSB0byBiZSBydW4sIGFuZCBy
ZXR1cm5zIHRoZSBuZXh0IHRhc2sgdG8gcnVuLgotICovCi1UYXNrQ29udHJvbEJsb2NrLnByb3Rv
dHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7Ci0gIHZhciBwYWNrZXQ7Ci0gIGlmICh0aGlzLnN0YXRl
ID09IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRSkgewotICAgIHBhY2tldCA9IHRoaXMucXVldWU7
Ci0gICAgdGhpcy5xdWV1ZSA9IHBhY2tldC5saW5rOwotICAgIGlmICh0aGlzLnF1ZXVlID09IG51
bGwpIHsKLSAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5OSU5HOwotICAgIH0gZWxzZSB7Ci0g
ICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTkFCTEU7Ci0gICAgfQotICB9IGVsc2UgewotICAg
IHBhY2tldCA9IG51bGw7Ci0gIH0KLSAgcmV0dXJuIHRoaXMudGFzay5ydW4ocGFja2V0KTsKLX07
Ci0KLS8qKgotICogQWRkcyBhIHBhY2tldCB0byB0aGUgd29ya2xpc3Qgb2YgdGhpcyBibG9jaydz
IHRhc2ssIG1hcmtzIHRoaXMgYXMgcnVubmFibGUgaWYKLSAqIG5lY2Vzc2FyeSwgYW5kIHJldHVy
bnMgdGhlIG5leHQgcnVubmFibGUgb2JqZWN0IHRvIHJ1biAodGhlIG9uZQotICogd2l0aCB0aGUg
aGlnaGVzdCBwcmlvcml0eSkuCi0gKi8KLVRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLmNoZWNr
UHJpb3JpdHlBZGQgPSBmdW5jdGlvbiAodGFzaywgcGFja2V0KSB7Ci0gIGlmICh0aGlzLnF1ZXVl
ID09IG51bGwpIHsKLSAgICB0aGlzLnF1ZXVlID0gcGFja2V0OwotICAgIHRoaXMubWFya0FzUnVu
bmFibGUoKTsKLSAgICBpZiAodGhpcy5wcmlvcml0eSA+IHRhc2sucHJpb3JpdHkpIHJldHVybiB0
aGlzOwotICB9IGVsc2UgewotICAgIHRoaXMucXVldWUgPSBwYWNrZXQuYWRkVG8odGhpcy5xdWV1
ZSk7Ci0gIH0KLSAgcmV0dXJuIHRhc2s7Ci19OwotCi1UYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKLSAgcmV0dXJuICJ0Y2IgeyAiICsgdGhpcy50YXNr
ICsgIkAiICsgdGhpcy5zdGF0ZSArICIgfSI7Ci19OwotCi0vKioKLSAqIEFuIGlkbGUgdGFzayBk
b2Vzbid0IGRvIGFueSB3b3JrIGl0c2VsZiBidXQgY3ljbGVzIGNvbnRyb2wgYmV0d2VlbiB0aGUg
dHdvCi0gKiBkZXZpY2UgdGFza3MuCi0gKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRo
ZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzawotICogQHBhcmFtIHtpbnR9IHYxIGEg
c2VlZCB2YWx1ZSB0aGF0IGNvbnRyb2xzIGhvdyB0aGUgZGV2aWNlIHRhc2tzIGFyZSBzY2hlZHVs
ZWQKLSAqIEBwYXJhbSB7aW50fSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMgdGFzayBz
aG91bGQgYmUgc2NoZWR1bGVkCi0gKiBAY29uc3RydWN0b3IKLSAqLwotZnVuY3Rpb24gSWRsZVRh
c2soc2NoZWR1bGVyLCB2MSwgY291bnQpIHsKLSAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7
Ci0gIHRoaXMudjEgPSB2MTsKLSAgdGhpcy5jb3VudCA9IGNvdW50OwotfQotCi1JZGxlVGFzay5w
cm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgewotICB0aGlzLmNvdW50LS07Ci0gIGlm
ICh0aGlzLmNvdW50ID09IDApIHJldHVybiB0aGlzLnNjaGVkdWxlci5ob2xkQ3VycmVudCgpOwot
ICBpZiAoKHRoaXMudjEgJiAxKSA9PSAwKSB7Ci0gICAgdGhpcy52MSA9IHRoaXMudjEgPj4gMTsK
LSAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQSk7Ci0gIH0gZWxz
ZSB7Ci0gICAgdGhpcy52MSA9ICh0aGlzLnYxID4+IDEpIF4gMHhEMDA4OwotICAgIHJldHVybiB0
aGlzLnNjaGVkdWxlci5yZWxlYXNlKElEX0RFVklDRV9CKTsKLSAgfQotfTsKLQotSWRsZVRhc2su
cHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewotICByZXR1cm4gIklkbGVUYXNrIgot
fTsKLQotLyoqCi0gKiBBIHRhc2sgdGhhdCBzdXNwZW5kcyBpdHNlbGYgYWZ0ZXIgZWFjaCB0aW1l
IGl0IGhhcyBiZWVuIHJ1biB0byBzaW11bGF0ZQotICogd2FpdGluZyBmb3IgZGF0YSBmcm9tIGFu
IGV4dGVybmFsIGRldmljZS4KLSAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNj
aGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNrCi0gKiBAY29uc3RydWN0b3IKLSAqLwotZnVu
Y3Rpb24gRGV2aWNlVGFzayhzY2hlZHVsZXIpIHsKLSAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVs
ZXI7Ci0gIHRoaXMudjEgPSBudWxsOwotfQotCi1EZXZpY2VUYXNrLnByb3RvdHlwZS5ydW4gPSBm
dW5jdGlvbiAocGFja2V0KSB7Ci0gIGlmIChwYWNrZXQgPT0gbnVsbCkgewotICAgIGlmICh0aGlz
LnYxID09IG51bGwpIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOwotICAg
IHZhciB2ID0gdGhpcy52MTsKLSAgICB0aGlzLnYxID0gbnVsbDsKLSAgICByZXR1cm4gdGhpcy5z
Y2hlZHVsZXIucXVldWUodik7Ci0gIH0gZWxzZSB7Ci0gICAgdGhpcy52MSA9IHBhY2tldDsKLSAg
ICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKTsKLSAgfQotfTsKLQotRGV2aWNl
VGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7Ci0gIHJldHVybiAiRGV2aWNl
VGFzayI7Ci19OwotCi0vKioKLSAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0
cyBhbmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYuCi0gKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1
bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzawotICogQGNvbnN0cnVjdG9y
Ci0gKi8KLWZ1bmN0aW9uIEhhbmRsZXJUYXNrKHNjaGVkdWxlcikgewotICB0aGlzLnNjaGVkdWxl
ciA9IHNjaGVkdWxlcjsKLSAgdGhpcy52MSA9IG51bGw7Ci0gIHRoaXMudjIgPSBudWxsOwotfQot
Ci1IYW5kbGVyVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgewotICBpZiAo
cGFja2V0ICE9IG51bGwpIHsKLSAgICBpZiAocGFja2V0LmtpbmQgPT0gS0lORF9XT1JLKSB7Ci0g
ICAgICB0aGlzLnYxID0gcGFja2V0LmFkZFRvKHRoaXMudjEpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICB0aGlzLnYyID0gcGFja2V0LmFkZFRvKHRoaXMudjIpOwotICAgIH0KLSAgfQotICBpZiAodGhp
cy52MSAhPSBudWxsKSB7Ci0gICAgdmFyIGNvdW50ID0gdGhpcy52MS5hMTsKLSAgICB2YXIgdjsK
LSAgICBpZiAoY291bnQgPCBEQVRBX1NJWkUpIHsKLSAgICAgIGlmICh0aGlzLnYyICE9IG51bGwp
IHsKLSAgICAgICAgdiA9IHRoaXMudjI7Ci0gICAgICAgIHRoaXMudjIgPSB0aGlzLnYyLmxpbms7
Ci0gICAgICAgIHYuYTEgPSB0aGlzLnYxLmEyW2NvdW50XTsKLSAgICAgICAgdGhpcy52MS5hMSA9
IGNvdW50ICsgMTsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOwotICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICB2ID0gdGhpcy52MTsKLSAgICAgIHRoaXMudjEgPSB0
aGlzLnYxLmxpbms7Ci0gICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7Ci0gICAg
fQotICB9Ci0gIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOwotfTsKLQot
SGFuZGxlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewotICByZXR1cm4g
IkhhbmRsZXJUYXNrIjsKLX07Ci0KLS8qIC0tLSAqCi0gKiBQIGEgYyBrIGUgdAotICogLS0tICov
Ci0KLXZhciBEQVRBX1NJWkUgPSA0OwotCi0vKioKLSAqIEEgc2ltcGxlIHBhY2thZ2Ugb2YgZGF0
YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBleGFjdCBsYXlvdXQKLSAq
IG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBpcyBub3QgaW1wb3J0YWlu
dCwgYW5kIG5laXRoZXIgaXMgdGhlCi0gKiBuYXR1cmUgb2YgdGhlIHdvcmsgcGVyZm9ybWVkIG9u
IHBhY2tldHMgYnkgdGhlIHRhc2tzLgotICoKLSAqIEJlc2lkZXMgY2FycnlpbmcgZGF0YSwgcGFj
a2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQgYm90aCBhcwotICogZGF0
YSBhbmQgd29ya2xpc3RzLgotICogQHBhcmFtIHtQYWNrZXR9IGxpbmsgdGhlIHRhaWwgb2YgdGhl
IGxpbmtlZCBsaXN0IG9mIHBhY2tldHMKLSAqIEBwYXJhbSB7aW50fSBpZCBhbiBJRCBmb3IgdGhp
cyBwYWNrZXQKLSAqIEBwYXJhbSB7aW50fSBraW5kIHRoZSB0eXBlIG9mIHRoaXMgcGFja2V0Ci0g
KiBAY29uc3RydWN0b3IKLSAqLwotZnVuY3Rpb24gUGFja2V0KGxpbmssIGlkLCBraW5kKSB7Ci0g
IHRoaXMubGluayA9IGxpbms7Ci0gIHRoaXMuaWQgPSBpZDsKLSAgdGhpcy5raW5kID0ga2luZDsK
LSAgdGhpcy5hMSA9IDA7Ci0gIHRoaXMuYTIgPSBuZXcgQXJyYXkoREFUQV9TSVpFKTsKLX0KLQot
LyoqCi0gKiBBZGQgdGhpcyBwYWNrZXQgdG8gdGhlIGVuZCBvZiBhIHdvcmtsaXN0LCBhbmQgcmV0
dXJuIHRoZSB3b3JrbGlzdC4KLSAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgd29ya2xpc3Qg
dG8gYWRkIHRoaXMgcGFja2V0IHRvCi0gKi8KLVBhY2tldC5wcm90b3R5cGUuYWRkVG8gPSBmdW5j
dGlvbiAocXVldWUpIHsKLSAgdGhpcy5saW5rID0gbnVsbDsKLSAgaWYgKHF1ZXVlID09IG51bGwp
IHJldHVybiB0aGlzOwotICB2YXIgcGVlaywgbmV4dCA9IHF1ZXVlOwotICB3aGlsZSAoKHBlZWsg
PSBuZXh0LmxpbmspICE9IG51bGwpCi0gICAgbmV4dCA9IHBlZWs7Ci0gIG5leHQubGluayA9IHRo
aXM7Ci0gIHJldHVybiBxdWV1ZTsKLX07Ci0KLVBhY2tldC5wcm90b3R5cGUudG9TdHJpbmcgPSBm
dW5jdGlvbiAoKSB7Ci0gIHJldHVybiAiUGFja2V0IjsKLX07CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lm
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9S
aWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk2MGE1ZGFhMmE1YzhiYjg0
ZGViNTkzMzlmZTIxOTdjNTZhMDM3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dp
ZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyAvZGV2
L251bGwKQEAgLTEsMzIyICswLDAgQEAKLS8vICEkKlVURjgqJCEKLXsKLQlhcmNoaXZlVmVyc2lv
biA9IDE7Ci0JY2xhc3NlcyA9IHsKLQl9OwotCW9iamVjdFZlcnNpb24gPSA1MDsKLQlvYmplY3Rz
ID0gewotCi0vKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxNDBBQUMzNzI0OTlC
RDdBMDAwMUYxMUUgLyogcmljaGFyZHMuanMgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzM2MjQ5OUJENkMwMDAxRjExRSAvKiByaWNoYXJkcy5q
cyAqLzsgfTsKLQkJMTQwQUFDNDAyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzM4MjQ5QjAx
RDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi87IH07Ci0JCTE0MEFBQzQxMjQ5QjAxRDEwMDAx
RjExRSAvKiByaWNoYXJkcy5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5zd2lmdCAq
LzsgfTsKLQkJMTQwQUFDNDIyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNBMjQ5QjAx
RDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dpZnQgKi87IH07Ci0JCTE0MEFBQzQzMjQ5QjAxRDEw
MDAxRjExRSAvKiBUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgKi87IH07
Ci0JCTE0MEFBQzQ0MjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNDMjQ5QjAxRDEwMDAx
RjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLzsgfTsKLQkJMTQwQUFDNDUyNDlCMDFEMTAwMDFGMTFF
IC8qIEhhbmRsZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwQUFDM0QyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0
ICovOyB9OwotCQkxNDBBQUM0NjI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5zd2lmdCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNFMjQ5
QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovOyB9OwotCQkxNDBBQUM0NzI0OUIw
MUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNGMjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VU
YXNrLnN3aWZ0ICovOyB9OwotCQkxNDE1QUQyNjI0OTlCQzVDMDA1QkIyRTQgLyogbWFpbi5zd2lm
dCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTVBRDI1
MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0ICovOyB9OwotLyogRW5kIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwotCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovID0gewotCQkJaXNh
ID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwotCQkJ
ZHN0UGF0aCA9ICIiOwotCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OwotCQkJZmlsZXMgPSAoCi0J
CQkJMTQwQUFDMzcyNDk5QkQ3QTAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAq
LywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJ
fTsKLS8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4g
UEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0JCTE0MEFBQzM2MjQ5OUJENkMwMDAxRjExRSAv
KiByaWNoYXJkcy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHJp
Y2hhcmRzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDBBQUMzODI0OUIwMUQx
MDAwMUYxMUUgLyogUGFja2V0LnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0
aCA9IFBhY2tldC5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQwQUFDMzky
NDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5z
d2lmdDsgcGF0aCA9IHJpY2hhcmRzLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxNDBBQUMzQTI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5zd2lmdDsgcGF0aCA9IFNjaGVkdWxlci5zd2lmdDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gVGFzay5zd2lmdDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMTQwQUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3
aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IElkbGVUYXNrLnN3aWZ0OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyog
SGFuZGxlclRhc2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gSGFu
ZGxlclRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MEFBQzNFMjQ5
QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5z
d2lmdDsgcGF0aCA9IFdvcmtlclRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTE0MEFBQzNGMjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IERldmljZVRhc2suc3dpZnQ7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01v
c3RseVN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBSaWNoYXJkc01vc3RseVN3aWZ0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwotCQkxNDE1QUQyNTI0OTlCQzVDMDA1QkIyRTQgLyogbWFpbi5zd2lmdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBh
dGggPSBtYWluLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCi0JCTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJFNCAvKiBGcmFtZXdvcmtzICov
ID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0JCTE0MTVB
RDE5MjQ5OUJDNUIwMDVCQjJFNCA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJMTQxNUFEMjQyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5U3dpZnQg
Ki8sCi0JCQkJMTQxNUFEMjMyNDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovLAotCQkJKTsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTE0MTVBRDIzMjQ5OUJDNUMwMDVC
QjJFNCAvKiBQcm9kdWN0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5U3dpZnQg
Ki8sCi0JCQkpOwotCQkJbmFtZSA9IFByb2R1Y3RzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJMTQxNUFEMjQyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5U3dp
ZnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTE0MEFB
QzNGMjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0ICovLAotCQkJCTE0MEFBQzNE
MjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCAqLywKLQkJCQkxNDBBQUMzQzI0
OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQgKi8sCi0JCQkJMTQxNUFEMjUyNDk5QkM1
QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgKi8sCi0JCQkJMTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFF
IC8qIFBhY2tldC5zd2lmdCAqLywKLQkJCQkxNDBBQUMzNjI0OTlCRDZDMDAwMUYxMUUgLyogcmlj
aGFyZHMuanMgKi8sCi0JCQkJMTQwQUFDMzkyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3
aWZ0ICovLAotCQkJCTE0MEFBQzNBMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dpZnQg
Ki8sCi0JCQkJMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgKi8sCi0JCQkJ
MTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgKi8sCi0JCQkpOwot
CQkJcGF0aCA9IFJpY2hhcmRzTW9zdGx5U3dpZnQ7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwotLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KLQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRz
TW9zdGx5U3dpZnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQxNUFEMjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJkc01vc3RseVN3aWZ0IiAq
LzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTE0MTVBRDFFMjQ5OUJDNUMwMDVCQjJFNCAvKiBT
b3VyY2VzICovLAotCQkJCTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJFNCAvKiBGcmFtZXdvcmtzICov
LAotCQkJCTE0MTVBRDIwMjQ5OUJDNUMwMDVCQjJFNCAvKiBDb3B5RmlsZXMgKi8sCi0JCQkpOwot
CQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJ
bmFtZSA9IFJpY2hhcmRzTW9zdGx5U3dpZnQ7Ci0JCQlwcm9kdWN0TmFtZSA9IFJpY2hhcmRzTW9z
dGx5U3dpZnQ7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0
IC8qIFJpY2hhcmRzTW9zdGx5U3dpZnQgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUu
cHJvZHVjdC10eXBlLnRvb2wiOwotCQl9OwotLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCi0KLS8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLwotCQkxNDE1QUQxQTI0OTlCQzVC
MDA1QkIyRTQgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7Ci0JCQlpc2EgPSBQQlhQcm9qZWN0Owot
CQkJYXR0cmlidXRlcyA9IHsKLQkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDEyMDA7Ci0JCQkJ
TGFzdFVwZ3JhZGVDaGVjayA9IDEyMDA7Ci0JCQkJVGFyZ2V0QXR0cmlidXRlcyA9IHsKLQkJCQkJ
MTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0ID0gewotCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9u
ID0gMTIuMDsKLQkJCQkJfTsKLQkJCQl9OwotCQkJfTsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSAxNDE1QUQxRDI0OTlCQzVCMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc01vc3RseVN3aWZ0IiAqLzsKLQkJCWNvbXBhdGliaWxp
dHlWZXJzaW9uID0gIlhjb2RlIDkuMyI7Ci0JCQlkZXZlbG9wbWVudFJlZ2lvbiA9IGVuOwotCQkJ
aGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7Ci0JCQlrbm93blJlZ2lvbnMgPSAoCi0JCQkJZW4s
Ci0JCQkJQmFzZSwKLQkJCSk7Ci0JCQltYWluR3JvdXAgPSAxNDE1QUQxOTI0OTlCQzVCMDA1QkIy
RTQ7Ci0JCQlwcm9kdWN0UmVmR3JvdXAgPSAxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJv
ZHVjdHMgKi87Ci0JCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsK
LQkJCXRhcmdldHMgPSAoCi0JCQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRz
TW9zdGx5U3dpZnQgKi8sCi0JCQkpOwotCQl9OwotLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAq
LwotCi0vKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCTE0MTVBRDFF
MjQ5OUJDNUMwMDVCQjJFNCAvKiBTb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYU291cmNlc0J1
aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAo
Ci0JCQkJMTQwQUFDNDcyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQgaW4gU291
cmNlcyAqLywKLQkJCQkxNDBBQUM0NTI0OUIwMUQxMDAwMUYxMUUgLyogSGFuZGxlclRhc2suc3dp
ZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDBBQUM0NDI0OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRh
c2suc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDE1QUQyNjI0OTlCQzVDMDA1QkIyRTQgLyog
bWFpbi5zd2lmdCBpbiBTb3VyY2VzICovLAotCQkJCTE0MEFBQzQwMjQ5QjAxRDEwMDAxRjExRSAv
KiBQYWNrZXQuc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDBBQUM0MTI0OUIwMUQxMDAwMUYx
MUUgLyogcmljaGFyZHMuc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDBBQUM0MjI0OUIwMUQx
MDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0IGluIFNvdXJjZXMgKi8sCi0JCQkJMTQwQUFDNDMy
NDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDBBQUM0
NjI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAotCQkJ
KTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyog
RW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gWENCdWlsZENv
bmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCQkxNDE1QUQyNzI0OTlCQzVDMDA1QkIyRTQgLyogRGVi
dWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGlu
Z3MgPSB7Ci0JCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87Ci0JCQkJQ0xBTkdfQU5B
TFlaRVJfTk9OTlVMTCA9IFlFUzsKLQkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNUX0NP
TlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRB
UkQgPSAiZ251KysxNCI7Ci0JCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKLQkJCQlD
TEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKLQkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZ
RVM7Ci0JCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0JM
T0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0JPT0xfQ09O
VkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVTOwotCQkJCUNMQU5HX1dB
Uk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0RFUFJFQ0FURURf
T0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19J
U0FfVVNBR0UgPSBZRVNfRVJST1I7Ci0JCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NPTU1F
TlRTID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKLQkJCQlDTEFOR19X
QVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JFQ1VS
U0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOwotCQkJCUNM
QU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOwotCQkJCUNMQU5HX1dB
Uk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX09CSkNf
TElURVJBTF9DT05WRVJTSU9OID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NMQVNT
ID0gWUVTX0VSUk9SOwotCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVXT1JL
X0hFQURFUiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZRVM7
Ci0JCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKLQkJCQlDTEFOR19XQVJO
X1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJTEFC
SUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NPREUg
PSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKLQkJ
CQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0g
ZHdhcmY7Ci0JCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7Ci0JCQkJRU5BQkxF
X1RFU1RBQklMSVRZID0gWUVTOwotCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7
Ci0JCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87Ci0JCQkJR0NDX05PX0NPTU1PTl9CTE9DS1Mg
PSBZRVM7Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7Ci0JCQkJR0NDX1BSRVBST0NF
U1NPUl9ERUZJTklUSU9OUyA9ICgKLQkJCQkJIkRFQlVHPTEiLAotCQkJCQkiJChpbmhlcml0ZWQp
IiwKLQkJCQkpOwotCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOwot
CQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOwotCQkJCUdDQ19XQVJO
X1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9B
VVRPUyA9IFlFU19BR0dSRVNTSVZFOwotCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlF
UzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0JCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuMTY7Ci0JCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gSU5DTFVE
RV9TT1VSQ0U7Ci0JCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKLQkJCQlPTkxZX0FDVElWRV9BUkNI
ID0gWUVTOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQkJU1dJRlRfQUNUSVZFX0NPTVBJTEFU
SU9OX0NPTkRJVElPTlMgPSBERUJVRzsKLQkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVWRUwgPSAi
LU9ub25lIjsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTE0MTVBRDI4MjQ5OUJD
NUMwMDVCQjJFNCAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POwotCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7Ci0JCQkJQ0xBTkdfQU5BTFla
RVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7Ci0JCQkJQ0xBTkdf
Q1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOwotCQkJCUNMQU5HX0NYWF9MSUJSQVJZ
ID0gImxpYmMrKyI7Ci0JCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7Ci0JCQkJQ0xBTkdf
RU5BQkxFX09CSkNfQVJDID0gWUVTOwotCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7
Ci0JCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7Ci0JCQkJ
Q0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9DT01NQSA9
IFlFUzsKLQkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xB
TkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOwotCQkJCUNMQU5H
X1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOwotCQkJCUNMQU5HX1dBUk5f
RE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkg
PSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdf
V0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVS
U0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9
IFlFUzsKLQkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7Ci0J
CQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19X
QVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKLQkJCQlDTEFOR19XQVJOX1FVT1RFRF9J
TkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9SQU5HRV9M
T09QX0FOQUxZU0lTID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZ
RVM7Ci0JCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FS
Tl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7Ci0JCQkJQ0xBTkdfV0FS
Tl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRI
T0RfTUFUQ0ggPSBZRVM7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwotCQkJCURFQlVHX0lO
Rk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotCQkJCUVOQUJMRV9OU19BU1NF
UlRJT05TID0gTk87Ci0JCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7Ci0JCQkJ
R0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKLQkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NL
UyA9IFlFUzsKLQkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKLQkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKLQkJCQlHQ0NfV0FSTl9V
TkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVU
T1MgPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7
Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwotCQkJCU1BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVCA9IDEwLjE2OwotCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IE5POwotCQkJ
CU1UTF9GQVNUX01BVEggPSBZRVM7Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCQlTV0lGVF9D
T01QSUxBVElPTl9NT0RFID0gd2hvbGVtb2R1bGU7Ci0JCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xF
VkVMID0gIi1PIjsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJMTQxNUFEMkEy
NDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9t
YXRpYzsKLQkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwotCQkJCVNXSUZUX1ZF
UlNJT04gPSA1LjA7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQkxNDE1QUQyQjI0
OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRv
bWF0aWM7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLQkJCQlTV0lGVF9W
RVJTSU9OID0gNS4wOwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotLyogRW5kIFhD
QnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gWENDb25maWd1cmF0aW9u
TGlzdCBzZWN0aW9uICovCi0JCTE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJFNCAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5U3dpZnQiICovID0g
ewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCi0JCQkJMTQxNUFEMjcyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAotCQkJCTE0MTVB
RDI4MjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7Ci0JCX07Ci0JCTE0MTVBRDI5MjQ5OUJDNUMwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNNb3N0bHlTd2lmdCIgKi8g
PSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKLQkJCQkxNDE1QUQyQTI0OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCi0JCQkJMTQx
NUFEMkIyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLQl9
OwotCXJvb3RPYmplY3QgPSAxNDE1QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVjdCBvYmpl
Y3QgKi87Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
TW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9q
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlTd2lmdC54Y3NjaGVtZQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ3OGIwMGJlMmZjYjhiOWFmMjk4OGIwMDJlNzgy
MGM0NjQyYWIxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNN
b3N0bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3Rs
eVN3aWZ0Lnhjc2NoZW1lCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxTY2hlbWUKLSAgIExhc3RVcGdyYWRlVmVy
c2lvbiA9ICIxMjAwIgotICAgdmVyc2lvbiA9ICIxLjciPgotICAgPEJ1aWxkQWN0aW9uCi0gICAg
ICBwYXJhbGxlbGl6ZUJ1aWxkYWJsZXMgPSAiWUVTIgotICAgICAgYnVpbGRJbXBsaWNpdERlcGVu
ZGVuY2llcyA9ICJZRVMiPgotICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KLSAgICAgICAgIDxC
dWlsZEFjdGlvbkVudHJ5Ci0gICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgotICAg
ICAgICAgICAgYnVpbGRGb3JSdW5uaW5nID0gIllFUyIKLSAgICAgICAgICAgIGJ1aWxkRm9yUHJv
ZmlsaW5nID0gIllFUyIKLSAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllFUyIKLSAg
ICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+Ci0gICAgICAgICAgICA8QnVpbGRh
YmxlUmVmZXJlbmNlCi0gICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1h
cnkiCi0gICAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJD
NUMwMDVCQjJFNCIKLSAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0
bHlTd2lmdCIKLSAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlT
d2lmdCIKLSAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJp
Y2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qIj4KLSAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVm
ZXJlbmNlPgotICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5PgotICAgICAgPC9CdWlsZEFjdGlv
bkVudHJpZXM+Ci0gICA8L0J1aWxkQWN0aW9uPgotICAgPFRlc3RBY3Rpb24KLSAgICAgIGJ1aWxk
Q29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKLSAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVy
ID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgotICAgICAgc2VsZWN0
ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVy
LkxMREIiCi0gICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+Ci0gICAg
ICA8VGVzdGFibGVzPgotICAgICAgPC9UZXN0YWJsZXM+Ci0gICA8L1Rlc3RBY3Rpb24+Ci0gICA8
TGF1bmNoQWN0aW9uCi0gICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKLSAgICAg
IHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5E
ZWJ1Z2dlci5MTERCIgotICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUu
RGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCi0gICAgICBsYXVuY2hTdHlsZSA9ICIw
IgotICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKLSAgICAgIGlnbm9yZXNQ
ZXJzaXN0ZW50U3RhdGVPbkxhdW5jaCA9ICJOTyIKLSAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9u
aW5nID0gIllFUyIKLSAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKLSAg
ICAgIGFsbG93TG9jYXRpb25TaW11bGF0aW9uID0gIllFUyI+Ci0gICAgICA8QnVpbGRhYmxlUHJv
ZHVjdFJ1bm5hYmxlCi0gICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+Ci0gICAg
ICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCi0gICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVy
ID0gInByaW1hcnkiCi0gICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIx
MjQ5OUJDNUMwMDVCQjJFNCIKLSAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNN
b3N0bHlTd2lmdCIKLSAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlT
d2lmdCIKLSAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hh
cmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qIj4KLSAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNl
PgotICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+Ci0gICA8L0xhdW5jaEFjdGlvbj4K
LSAgIDxQcm9maWxlQWN0aW9uCi0gICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIK
LSAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIgotICAgICAgc2F2ZWRU
b29sSWRlbnRpZmllciA9ICIiCi0gICAgICB1c2VDdXN0b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5P
IgotICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIj4KLSAgICAgIDxCdWlsZGFi
bGVQcm9kdWN0UnVubmFibGUKLSAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4K
LSAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKLSAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50
aWZpZXIgPSAicHJpbWFyeSIKLSAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQx
NUFEMjEyNDk5QkM1QzAwNUJCMkU0IgotICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNo
YXJkc01vc3RseVN3aWZ0IgotICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNoYXJkc01v
c3RseVN3aWZ0IgotICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6
UmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2oiPgotICAgICAgICAgPC9CdWlsZGFibGVSZWZl
cmVuY2U+Ci0gICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KLSAgIDwvUHJvZmlsZUFj
dGlvbj4KLSAgIDxBbmFseXplQWN0aW9uCi0gICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVi
dWciPgotICAgPC9BbmFseXplQWN0aW9uPgotICAgPEFyY2hpdmVBY3Rpb24KLSAgICAgIGJ1aWxk
Q29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgotICAgICAgcmV2ZWFsQXJjaGl2ZUluT3JnYW5pemVy
ID0gIllFUyI+Ci0gICA8L0FyY2hpdmVBY3Rpb24+Ci0gICA8SW5zdGFsbEFjdGlvbgotICAgICAg
YnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiPgotICAgPC9JbnN0YWxsQWN0aW9uPgotPC9T
Y2hlbWU+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9z
dGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0IGIvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQv
RGV2aWNlVGFzay5zd2lmdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM2MWFiNDE0
YjYyYzgyNzBkNTZiMTRjNGU3YmFhNGUyZWQ5MDY4MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
TW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0CisrKyAvZGV2
L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotaW1wb3J0IEZvdW5kYXRpb24KLQot
QG9iamMgZW51bSBEZXZpY2UgOiBJbnQgewotICAgIGNhc2UgQQotICAgIGNhc2UgQgotfQotCi0v
KioKLSAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFz
IGJlZW4gcnVuIHRvIHNpbXVsYXRlCi0gKiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJu
YWwgZGV2aWNlLgotICovCi1jbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7Ci0gICAgbGV0IGRldmlj
ZTogRGV2aWNlCi0gICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQYWNrZXQ/ID0gbmlsCi0K
LSAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2
aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCi0gICAgewotICAgICAgICBsZXQgdGFzayA9IERldmlj
ZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlvcml0eTogcHJp
b3JpdHkpCi0gICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKLSAgICB9Ci0KLSAgICBv
dmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/Ci0gICAgewotICAgICAg
ICBpZiBwYWNrZXQgPT0gbmlsIHsKLSAgICAgICAgICAgIGd1YXJkIGxldCBwYWNrZXQgPSBzZWxm
LnBlbmRpbmdQYWNrZXQgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1
bGVyLndhaXRDdXJyZW50KCkKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlbGYucGVuZGlu
Z1BhY2tldCA9IG5pbAotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhhbmRsZShw
YWNrZXQ6IHBhY2tldCkKLSAgICAgICAgfQotCi0gICAgICAgIHNlbGYucGVuZGluZ1BhY2tldCA9
IChwYWNrZXQgYXMhIERldmljZVBhY2tldCkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVy
LmhvbGRDdXJyZW50KCkKLSAgICB9Ci0KLSAgICBwcml2YXRlIGluaXQoc2NoZWR1bGVyOiBTY2hl
ZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCi0gICAgewotICAgICAg
ICBzZWxmLmRldmljZSA9IGRldmljZQotICAgICAgICBzdXBlci5pbml0KHNjaGVkdWxlcjogc2No
ZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCi0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dp
ZnQvSGFuZGxlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
TW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9IYW5kbGVyVGFzay5zd2lmdApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU1OWQ5MGY3NGM4NGVlNjU4MDE2OTkxMmVmMmQ1NTVh
NTYxOWRmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0
bHlTd2lmdC9IYW5kbGVyVGFzay5zd2lmdAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSovCi0KLWltcG9ydCBGb3VuZGF0aW9uCi1pbXBvcnQgSmF2YVNjcmlwdENvcmUKLQot
LyoqCi0gKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMgYW5kIHRoZW4gc3Vz
cGVuZHMgaXRzZWxmLgotICovCi1Ab2JqYyBwcm90b2NvbCBIYW5kbGVyVGFza0V4cG9ydHMgOiBK
U0V4cG9ydCB7Ci19Ci0KLUBvYmpjIHB1YmxpYyBjbGFzcyBIYW5kbGVyVGFzayA6IFRhc2ssIEhh
bmRsZXJUYXNrRXhwb3J0cyB7Ci0gICAgdmFyIGRldmljZTogRGV2aWNlCi0gICAgdmFyIHdvcmtR
dWV1ZSA6IFdvcmtQYWNrZXQ/ID0gbmlsCi0gICAgdmFyIGRldmljZVF1ZXVlIDogRGV2aWNlUGFj
a2V0PyA9IG5pbAotCi0gICAgc3RhdGljIGZ1bmMgY3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVy
LCBkZXZpY2U6IERldmljZSwgcHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogRGV2aWNlUGFja2V0
KQotICAgIHsKLSAgICAgICAgbGV0IHRhc2sgPSBIYW5kbGVyVGFzayhzY2hlZHVsZXI6IHNjaGVk
dWxlciwgZGV2aWNlOiBkZXZpY2UsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQot
ICAgICAgICBzY2hlZHVsZXIuYWRkKHRhc2s6IHRhc2spCi0gICAgfQotCi0gICAgb3ZlcnJpZGUg
ZnVuYyBydW4ocGFja2V0OiBQYWNrZXQ/KSAtPiBUYXNrPwotICAgIHsKLSAgICAgICAgaWYgbGV0
IHAgPSBwYWNrZXQgewotICAgICAgICAgICAgaWYgbGV0IHdvcmsgPSBwIGFzPyBXb3JrUGFja2V0
IHsKLSAgICAgICAgICAgICAgICBzZWxmLndvcmtRdWV1ZSA9IHdvcmsuYWRkVG8ocXVldWU6IHNl
bGYud29ya1F1ZXVlKSBhcyEgV29ya1BhY2tldD8KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgc2VsZi5kZXZpY2VRdWV1ZSA9IChwIGFzISBEZXZpY2VQYWNrZXQpLmFkZFRv
KHF1ZXVlOiBzZWxmLmRldmljZVF1ZXVlKSBhcyEgRGV2aWNlUGFja2V0PwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGlmIGxldCB3b3JrUGFja2V0ID0gc2VsZi53b3JrUXVldWUg
ewotICAgICAgICAgICAgbGV0IHByb2Nlc3NlZCA9IHdvcmtQYWNrZXQucHJvY2Vzc2VkCi0gICAg
ICAgICAgICBpZiAocHJvY2Vzc2VkIDwgV29ya1BhY2tldC5TSVpFKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgbGV0IGRldmljZVBhY2tldCA9IHNlbGYuZGV2aWNlUXVldWUgewotICAgICAgICAgICAg
ICAgICAgICBzZWxmLmRldmljZVF1ZXVlID0gZGV2aWNlUGFja2V0LmxpbmsgYXMhIERldmljZVBh
Y2tldD8KLSAgICAgICAgICAgICAgICAgICAgZGV2aWNlUGFja2V0LmxldHRlckluZGV4ID0gd29y
a1BhY2tldC5kYXRhW3Byb2Nlc3NlZF0KLSAgICAgICAgICAgICAgICAgICAgd29ya1BhY2tldC5w
cm9jZXNzZWQgPSBwcm9jZXNzZWQgKyAxCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
LnNjaGVkdWxlci5xdWV1ZShwYWNrZXQ6IGRldmljZVBhY2tldCkKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNlbGYud29ya1F1ZXVlID0g
d29ya1BhY2tldC5saW5rIGFzISBXb3JrUGFja2V0PwotICAgICAgICAgICAgICAgIHJldHVybiBz
ZWxmLnNjaGVkdWxlci5xdWV1ZShwYWNrZXQ6IHdvcmtQYWNrZXQpCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLndhaXRDdXJyZW50KCkKLSAg
ICB9Ci0KLSAgICBwcml2YXRlIGluaXQoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2
aWNlLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBEZXZpY2VQYWNrZXQpCi0gICAgewotICAg
ICAgICBzZWxmLmRldmljZSA9IGRldmljZQotICAgICAgICBzdXBlci5pbml0KHNjaGVkdWxlcjog
c2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHksIHF1ZXVlOiBxdWV1ZSkKLSAgICB9Ci19CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQv
UmljaGFyZHNNb3N0bHlTd2lmdC9JZGxlVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3
aWZ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTg3NzkyNTJhMTkxMWRkNzExOTYx
NWRlOWEyZWEwNTBhNTQ4NTBkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9S
aWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0CisrKyAvZGV2L251bGwKQEAgLTEsNTkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotKi8KLQotLyoqCi0gKiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkg
d29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJldHdlZW4gdGhlIHR3byBkZXZpY2UgdGFz
a3MuCi0gKi8KLWNsYXNzIElkbGVUYXNrIDogVGFzayB7Ci0gICAgdmFyIGhhc2hfIDogSW50ID0g
MQotICAgIHZhciBjb3VudCA6IEludCA9IDEwMDAKLQotICAgIHN0YXRpYyBmdW5jIGNyZWF0ZShz
Y2hlZHVsZXI6IFNjaGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5KQotICAgIHsKLSAgICAgICAg
bGV0IHRhc2sgPSBJZGxlVGFzayhzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9y
aXR5KQotICAgICAgICBzY2hlZHVsZXIuYWRkKHRhc2s6IHRhc2spCi0gICAgfQotCi0gICAgb3Zl
cnJpZGUgZnVuYyBydW4ocGFja2V0OiBQYWNrZXQ/KSAtPiBUYXNrPwotICAgIHsKLSAgICAgIHNl
bGYuY291bnQgLT0gMQotICAgICAgaWYgc2VsZi5jb3VudCA9PSAwIHsKLSAgICAgICAgICByZXR1
cm4gc2VsZi5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKQotICAgICAgfQotICAgICAgaWYgKHNlbGYu
aGFzaF8gJiAxKSA9PSAwIHsKLSAgICAgICAgc2VsZi5oYXNoXyA9IHNlbGYuaGFzaF8gPj4gMQot
ICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucmVsZWFzZV8oZGV2aWNlOiAuQSkKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIHNlbGYuaGFzaF8gPSAoc2VsZi5oYXNoXyA+PiAxKSBeIDB4RDAw
OAotICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucmVsZWFzZV8oZGV2aWNlOiAuQikKLSAg
ICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGluaXQoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIHBy
aW9yaXR5OiBQcmlvcml0eSkKLSAgICB7Ci0gICAgICBzdXBlci5pbml0KHNjaGVkdWxlcjogc2No
ZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCi0gICAgICBzZWxmLnJlc3VtZSgpCi0gICAgfQot
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3
aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvUGFja2V0LnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvUGFja2V0LnN3
aWZ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWE0ZDk1NThlYjQ3M2I2NzdmZGI3
OWNlZGVkZjQxOWVmMGJmZWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9S
aWNoYXJkc01vc3RseVN3aWZ0L1BhY2tldC5zd2lmdAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSovCi0KLWltcG9ydCBKYXZhU2NyaXB0Q29yZQotCi0vKioKLSAqIEEgc2lt
cGxlIHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRo
ZSBleGFjdCBsYXlvdXQKLSAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tl
dCBpcyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCi0gKiBuYXR1cmUgb2YgdGhl
IHdvcmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgotICoKLSAqIEJlc2lkZXMg
Y2FycnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVz
ZWQgYm90aCBhcwotICogZGF0YSBhbmQgd29ya2xpc3RzLgotICovCi0KLUBvYmpjIHByb3RvY29s
IFBhY2tldEV4cG9ydHMgOiBKU0V4cG9ydCB7Ci0gICAgdmFyIGRldmljZSA6IERldmljZSB7IGdl
dCBzZXQgfQotfQotCi1Ab2JqYyBwdWJsaWMgY2xhc3MgUGFja2V0IDogTlNPYmplY3QsIFBhY2tl
dEV4cG9ydHMgewotICAgIGR5bmFtaWMgdmFyIGRldmljZSA6IERldmljZQotICAgIHZhciBsaW5r
IDogUGFja2V0PwotCi0gICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0PykKLSAg
ICB7Ci0gICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCi0gICAgICAgIHNlbGYubGluayA9IGxp
bmsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9m
IGEgd29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgotICAgICovCi0gICAgZnVuYyBh
ZGRUbyhxdWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7Ci0gICAgICAgIHNlbGYubGluayA9IG5p
bAotICAgICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgewotICAgICAgICAgICAgcmV0
dXJuIHNlbGYKLSAgICAgICAgfQotICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmlsIHsKLSAg
ICAgICAgICAgIG5leHQgPSBuZXh0LmxpbmshCi0gICAgICAgIH0KLSAgICAgICAgbmV4dC5saW5r
ID0gc2VsZgotICAgICAgICByZXR1cm4gcXVldWU7Ci0gICAgfQotfQotCi1wdWJsaWMgZmluYWwg
Y2xhc3MgRGV2aWNlUGFja2V0IDogUGFja2V0IHsKLSAgICB2YXIgbGV0dGVySW5kZXggOiBJbnQg
PSAwCi19Ci0KLUBvYmpjIHByb3RvY29sIFdvcmtQYWNrZXRFeHBvcnRzIDogUGFja2V0RXhwb3J0
cywgSlNFeHBvcnQgewotICAgIHZhciBwcm9jZXNzZWQgOiBJbnQgeyBnZXQgc2V0IH0KLSAgICB2
YXIgZGF0YSA6IFtJbnRdIHsgZ2V0IHNldCB9Ci19Ci0KLUBvYmpjIHB1YmxpYyBmaW5hbCBjbGFz
cyBXb3JrUGFja2V0IDogUGFja2V0LCBXb3JrUGFja2V0RXhwb3J0cyB7Ci0gICAgc3RhdGljIGxl
dCBTSVpFIDogSW50ID0gNAotCi0gICAgZHluYW1pYyB2YXIgcHJvY2Vzc2VkIDogSW50ID0gMAot
ICAgIGR5bmFtaWMgdmFyIGRhdGEgOiBbSW50XSA9IFtJbnRdKHJlcGVhdGluZzogMCwgY291bnQ6
IFNJWkUpCi0KLSAgICBpbml0KGxpbms6IFBhY2tldD8pCi0gICAgewotICAgICAgICBzdXBlci5p
bml0KGRldmljZTogLkEsIGxpbms6IGxpbmspCi0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dp
ZnQvU2NoZWR1bGVyLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01v
c3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvU2NoZWR1bGVyLnN3aWZ0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzODlmZjdiMmZmZmUyM2IyNGY2OTY5NjhlYTQ4Mjk5ZTM1NGQx
NmM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3
aWZ0L1NjaGVkdWxlci5zd2lmdAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0qLwotCi1pbXBvcnQgSmF2YVNjcmlwdENvcmUKLQotQG9iamMgcHJvdG9jb2wgU2NoZWR1bGVy
RXhwb3J0cyA6IEpTRXhwb3J0IHsKLSAgICBmdW5jIHdhaXRDdXJyZW50KCkgLT4gVGFzaz8KLSAg
ICBmdW5jIGhhbmRsZShwYWNrZXQ6IFdvcmtQYWNrZXQpIC0+IFRhc2s/Ci19Ci0KLS8qKgotKiBB
IHNjaGVkdWxlciBjYW4gYmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBvZiB0YXNrcyBiYXNlZCBv
biB0aGVpciByZWxhdGl2ZQotKiBwcmlvcml0aWVzLiAgU2NoZWR1bGluZyBpcyBkb25lIGJ5IG1h
aW50YWluaW5nIGEgbGlzdCBvZiB0YXNrIGNvbnRyb2wgYmxvY2tzCi0qIHdoaWNoIGhvbGRzIHRh
c2tzIGFuZCB0aGUgZGF0YSBxdWV1ZSB0aGV5IGFyZSBwcm9jZXNzaW5nLgotKiBAY29uc3RydWN0
b3IKLSovCi1Ab2JqYyBwdWJsaWMgY2xhc3MgU2NoZWR1bGVyIDogTlNPYmplY3QsIFNjaGVkdWxl
ckV4cG9ydHMgewotICAgIHByaXZhdGUoc2V0KSB2YXIgcXVldWVDb3VudCA9IDAKLSAgICBwcml2
YXRlKHNldCkgdmFyIGhvbGRDb3VudCA9IDAKLSAgICBwcml2YXRlKHNldCkgdmFyIGN1cnJlbnRU
YXNrIDogVGFzaz8gPSBuaWwKLSAgICBwcml2YXRlKHNldCkgdmFyIGxpc3QgOiBUYXNrPyA9IG5p
bAotCi0gICAgLyoqCi0gICAgKiBFeGVjdXRlIHRoZSB0YXNrcyBtYW5hZ2VkIGJ5IHRoaXMgc2No
ZWR1bGVyLgotICAgICovCi0gICAgZnVuYyBzY2hlZHVsZSgpCi0gICAgewotICAgICAgICBzZWxm
LmN1cnJlbnRUYXNrID0gc2VsZi5saXN0Ci0gICAgICAgIHdoaWxlIGxldCB0YXNrID0gc2VsZi5j
dXJyZW50VGFzayB7Ci0gICAgICAgICAgICB2YXIgcGFja2V0IDogUGFja2V0PyA9IG5pbAotICAg
ICAgICAgICAgc3dpdGNoIHRhc2suc3RhdGUgewotICAgICAgICAgICAgY2FzZSAud2FpdGluZ1dp
dGhQYWNrZXQ6Ci0gICAgICAgICAgICAgICAgcGFja2V0ID0gdGFzay50YWtlUGFja2V0KCkKLSAg
ICAgICAgICAgICAgICBmYWxsdGhyb3VnaAotICAgICAgICAgICAgY2FzZSAucnVuLCAucnVuV2l0
aFBhY2tldDoKLSAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRUYXNrID0gdGFzay5ydW4ocGFj
a2V0OiBwYWNrZXQpCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHNlbGYu
Y3VycmVudFRhc2sgPSB0YXNrLm5leHQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8qKgotICAgICogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayB0byB0aGlzIHNjaGVkdWxl
ci4KLSAgICAqLwotICAgIGZ1bmMgYWRkKHRhc2s6IFRhc2spCi0gICAgewotICAgICAgICB0YXNr
Lm5leHQgPSBzZWxmLmxpc3QKLSAgICAgICAgc2VsZi5saXN0ID0gdGFzawotICAgIH0KLQotICAg
IC8qKgotICAgICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tlZCBhbmQg
cmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KLSAgICAqLwotICAgIGZ1bmMgcmVsZWFzZV8o
ZGV2aWNlOiBEZXZpY2UpIC0+IFRhc2s/Ci0gICAgewotICAgICAgICBndWFyZCBsZXQgdGFzayA6
IERldmljZVRhc2sgPSBmaW5kKHdoZXJlOiB7ICQwLmRldmljZSA9PSBkZXZpY2UgfSkgZWxzZSB7
Ci0gICAgICAgICAgICByZXR1cm4gbmlsCi0gICAgICAgIH0KLSAgICAgICAgdGFzay5yZWxlYXNl
XygpCi0gICAgICAgIGlmIHRhc2sucHJpb3JpdHkgPiBzZWxmLmN1cnJlbnRUYXNrIS5wcmlvcml0
eSB7Ci0gICAgICAgICAgICByZXR1cm4gdGFzawotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBz
ZWxmLmN1cnJlbnRUYXNrCi0gICAgfQotCi0gICAgLyoqCi0gICAgKiBCbG9jayB0aGUgY3VycmVu
dGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJsb2Nr
Ci0gICAgKiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdpbGwgbm90IGJlIG1hZGUgcnVubmFi
bGUgdW50aWwgaXQgaXMgZXhwbGljaXRseQotICAgICogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3IHdv
cmsgaXMgYWRkZWQgdG8gaXQuCi0gICAgKi8KLSAgICBmdW5jIGhvbGRDdXJyZW50KCkgLT4gVGFz
az8KLSAgICB7Ci0gICAgICAgIHNlbGYuaG9sZENvdW50ICs9IDEKLSAgICAgICAgc2VsZi5jdXJy
ZW50VGFzayEuaG9sZCgpCi0gICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrIS5uZXh0Ci0g
ICAgfQotCi0gICAgLyoqCi0gICAgKiBTdXNwZW5kIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRh
c2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKLSAgICAqIHRvIHJ1bi4g
IElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJlIG1h
ZGUgcnVubmFibGUuCi0gICAgKi8KLSAgICBmdW5jIHdhaXRDdXJyZW50KCkgLT4gVGFzaz8KLSAg
ICB7Ci0gICAgICAgIHNlbGYuY3VycmVudFRhc2shLndhaXQoKQotICAgICAgICByZXR1cm4gc2Vs
Zi5jdXJyZW50VGFzawotICAgIH0KLQotICAgIC8qKgotICAgICogQWRkIHRoZSBzcGVjaWZpZWQg
cGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKLSAgICAq
IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1bm5hYmxlIGlm
IGl0IGlzIGN1cnJlbnRseQotICAgICogc3VzcGVuZGVkLgotICAgICovCi0gICAgZnVuYyBxdWV1
ZShwYWNrZXQ6IERldmljZVBhY2tldCkgLT4gVGFzaz8KLSAgICB7Ci0gICAgICAgIGxldCB0YXNr
IDogRGV2aWNlVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBhY2tldC5k
ZXZpY2UgfSkKLSAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6IHBh
Y2tldCkKLSAgICB9Ci0KLSAgICBmdW5jIHF1ZXVlKHBhY2tldDogV29ya1BhY2tldCkgLT4gVGFz
az8KLSAgICB7Ci0gICAgICAgIGxldCB0YXNrIDogV29ya2VyVGFzaz8gPSBzZWxmLmZpbmQod2hl
cmU6IHsgXyBpbiB0cnVlIH0pCi0gICAgICAgIHJldHVybiBxdWV1ZUltcGwodGFzazogdGFzaywg
cGFja2V0OiBwYWNrZXQpCi0gICAgfQotCi0gICAgZnVuYyBoYW5kbGUocGFja2V0OiBXb3JrUGFj
a2V0KSAtPiBUYXNrPwotICAgIHsKLSAgICAgICAgbGV0IHRhc2sgOiBIYW5kbGVyVGFzaz8gPSBz
ZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBhY2tldC5kZXZpY2UgfSkKLSAgICAgICAg
cmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKLSAgICB9Ci0KLSAg
ICBmdW5jIGhhbmRsZShwYWNrZXQ6IERldmljZVBhY2tldCkgLT4gVGFzaz8KLSAgICB7Ci0gICAg
ICAgIGxldCB0YXNrIDogSGFuZGxlclRhc2s/ID0gc2VsZi5maW5kKHdoZXJlOiB7ICQwLmRldmlj
ZSA9PSBwYWNrZXQuZGV2aWNlIH0pCi0gICAgICAgIHJldHVybiBxdWV1ZUltcGwodGFzazogdGFz
aywgcGFja2V0OiBwYWNrZXQpCi0gICAgfQotCi0gICAgcHJpdmF0ZSBmdW5jIHF1ZXVlSW1wbCh0
YXNrOiBUYXNrPywgcGFja2V0OiBQYWNrZXQpIC0+IFRhc2s/Ci0gICAgewotICAgICAgICBndWFy
ZCB0YXNrICE9IG5pbCBlbHNlIHsgcmV0dXJuIG5pbCB9Ci0gICAgICAgIHNlbGYucXVldWVDb3Vu
dCArPSAxCi0gICAgICAgIHBhY2tldC5saW5rID0gbmlsCi0gICAgICAgIHJldHVybiB0YXNrIS5j
aGVja1ByaW9yaXR5QWRkKHRhc2s6IHNlbGYuY3VycmVudFRhc2shLCBwYWNrZXQ6IHBhY2tldCkK
LSAgICB9Ci0KLSAgICBwcml2YXRlIGZ1bmMgZmluZDxUOiBUYXNrPih3aGVyZSBjb25kaXRpb246
IChUKSAtPiBCb29sKSAtPiBUPwotICAgIHsKLSAgICAgICAgdmFyIHRhc2sgPSBzZWxmLmxpc3QK
LSAgICAgICAgd2hpbGUgdGFzayAhPSBuaWwgewotICAgICAgICAgICAgaWYgbGV0IHQgPSB0YXNr
IGFzPyBUIHsKLSAgICAgICAgICAgICAgICBpZiBjb25kaXRpb24odCkgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRhc2sgPSB0YXNrIS5uZXh0Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5pbAot
ICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNN
b3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9UYXNr
LnN3aWZ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGY0NTI4OGUwMDEwNzZlMGQx
NGNmMmM2NjJjOGQ3YTA3NmUyOGIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lm
dC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotKi8KLQotaW1wb3J0IEZvdW5kYXRpb24KLWltcG9ydCBKYXZhU2NyaXB0
Q29yZQotCi1lbnVtIFByaW9yaXR5IDogSW50IHsKLSAgICBjYXNlIElkbGUgPSAwCi0gICAgY2Fz
ZSBXb3JrZXIgPSAxMDAwCi0gICAgY2FzZSBIYW5kbGVyQSA9IDIwMDAKLSAgICBjYXNlIEhhbmRs
ZXJCID0gMzAwMAotICAgIGNhc2UgRGV2aWNlQSA9IDQwMDAKLSAgICBjYXNlIERldmljZUIgPSA1
MDAwCi0KLSAgICBzdGF0aWMgZnVuYyA+KGxoczpTZWxmLCByaHM6U2VsZikgLT4gQm9vbCAKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBsaHMucmF3VmFsdWUgPiByaHMucmF3VmFsdWUKLSAgICB9Ci19
Ci0KLUBvYmpjIHB1YmxpYyBjbGFzcyBUYXNrIDogTlNPYmplY3QsIEpTRXhwb3J0IHsKLSAgICBs
ZXQgc2NoZWR1bGVyIDogU2NoZWR1bGVyCi0gICAgbGV0IHByaW9yaXR5IDogUHJpb3JpdHkKLSAg
ICB2YXIgbmV4dCA6IFRhc2s/ID0gbmlsCi0gICAgcHJpdmF0ZShzZXQpIHZhciBxdWV1ZSA6IFBh
Y2tldD8KLSAgICBwcml2YXRlKHNldCkgdmFyIHN0YXRlIDogU3RhdGUgPSAud2FpdGluZwotCi0g
ICAgc3RydWN0IFN0YXRlIDogT3B0aW9uU2V0IHsKLSAgICAgICAgbGV0IHJhd1ZhbHVlOiBJbnQK
LQotICAgICAgICBzdGF0aWMgbGV0IHJ1biA6IFN0YXRlID0gW10KLSAgICAgICAgc3RhdGljIGxl
dCBoYXNQYWNrZXQgPSBTdGF0ZShyYXdWYWx1ZTogMSA8PCAwKQotICAgICAgICBzdGF0aWMgbGV0
IHdhaXRpbmcgPSBTdGF0ZShyYXdWYWx1ZTogMSA8PCAxKQotICAgICAgICBzdGF0aWMgbGV0IGhl
bGQgPSBTdGF0ZShyYXdWYWx1ZTogMSA8PCAyKQotCi0gICAgICAgIHN0YXRpYyBsZXQgcnVuV2l0
aFBhY2tldCA9IGhhc1BhY2tldC51bmlvbihydW4pCi0gICAgICAgIHN0YXRpYyBsZXQgd2FpdGlu
Z1dpdGhQYWNrZXQgPSBoYXNQYWNrZXQudW5pb24od2FpdGluZykKLQotICAgICAgICBpbml0KHJh
d1ZhbHVlOiBJbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlbGYucmF3VmFsdWUgPSByYXdW
YWx1ZQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuYyBydW4ocGFja2V0OiBQYWNrZXQ/KSAt
PiBUYXNrPwotICAgIHsKLSAgICAgICAgcHJlY29uZGl0aW9uRmFpbHVyZSgiVGhpcyBtZXRob2Qg
bXVzdCBiZSBvdmVycmlkZGVuIikgCi0gICAgfQotCi0gICAgZnVuYyByZWxlYXNlXygpCi0gICAg
ewotICAgICAgICBzZWxmLnN0YXRlLnJlbW92ZSguaGVsZCkKLSAgICB9Ci0KLSAgICBmdW5jIGhv
bGQoKQotICAgIHsKLSAgICAgICAgc2VsZi5zdGF0ZS5pbnNlcnQoLmhlbGQpCi0gICAgfQotCi0g
ICAgZnVuYyB3YWl0KCkKLSAgICB7Ci0gICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC53YWl0aW5n
KQotICAgIH0KLQotICAgIGZ1bmMgcmVzdW1lKCkKLSAgICB7Ci0gICAgICAgIHNlbGYuc3RhdGUu
cmVtb3ZlKC53YWl0aW5nKQotICAgIH0KLQotICAgIGZ1bmMgdGFrZVBhY2tldCgpIC0+IFBhY2tl
dAotICAgIHsKLSAgICAgICAgbGV0IHBhY2tldCA9IHNlbGYucXVldWUhCi0gICAgICAgIHNlbGYu
cXVldWUgPSBwYWNrZXQubGluawotICAgICAgICBpZiBzZWxmLnF1ZXVlID09IG5pbCB7Ci0gICAg
ICAgICAgICBzZWxmLnN0YXRlID0gLnJ1bgotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
c2VsZi5zdGF0ZSA9IC5ydW5XaXRoUGFja2V0Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBh
Y2tldAotICAgIH0KLQotICAgIGZ1bmMgY2hlY2tQcmlvcml0eUFkZCh0YXNrOiBUYXNrLCBwYWNr
ZXQ6IFBhY2tldCkgLT4gVGFzawotICAgIHsKLSAgICAgICAgaWYgc2VsZi5xdWV1ZSA9PSBuaWwg
ewotICAgICAgICAgICAgc2VsZi5xdWV1ZSA9IHBhY2tldAotICAgICAgICAgICAgc2VsZi5zdGF0
ZS5pbnNlcnQoLmhhc1BhY2tldCkKLSAgICAgICAgICAgIGlmIHNlbGYucHJpb3JpdHkgPiB0YXNr
LnByaW9yaXR5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2VsZi5xdWV1ZSA9IHBhY2tldC5hZGRUbyhx
dWV1ZTogc2VsZi5xdWV1ZSkKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGFzawotICAgIH0K
LQotICAgIGluaXQoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0eSwgcXVl
dWU6IFBhY2tldD8gPSBuaWwpCi0gICAgewotICAgICAgICBzZWxmLnNjaGVkdWxlciA9IHNjaGVk
dWxlcgotICAgICAgICBzZWxmLnByaW9yaXR5ID0gcHJpb3JpdHkKLSAgICAgICAgc2VsZi5xdWV1
ZSA9IHF1ZXVlCi0gICAgICAgIGlmIHF1ZXVlICE9IG5pbCB7Ci0gICAgICAgICAgICBzZWxmLnN0
YXRlLmluc2VydCguaGFzUGFja2V0KQotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9z
dGx5U3dpZnQvV29ya2VyVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmlj
aGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1dvcmtlclRhc2suc3dpZnQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NzZiMGU3MjUxMGVhZDcwNTdkMzdkN2RlMGFi
MjhiZjY3Njg4MjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRz
TW9zdGx5U3dpZnQvV29ya2VyVGFzay5zd2lmdAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSovCi0KLWltcG9ydCBKYXZhU2NyaXB0Q29yZQotCi1jbGFzcyBXb3JrZXJUYXNr
IDogVGFzayB7Ci0gICAgcHJpdmF0ZSB2YXIganMgOiBKU1ZhbHVlCi0KLSAgICBwcml2YXRlIHN0
YXRpYyBsZXQgY29udGV4dCA6IEpTQ29udGV4dCA9IHsKLSAgICAgICAgbGV0IGNvbnRleHQgPSBK
U0NvbnRleHQoKSEKLSAgICAgICAgbGV0IHNvdXJjZSA9IHRyeSEgU3RyaW5nKGNvbnRlbnRzT2ZG
aWxlOiAicmljaGFyZHMuanMiKQotICAgICAgICBjb250ZXh0LmV2YWx1YXRlU2NyaXB0KHNvdXJj
ZSkKLSAgICAgICAgY29udGV4dC5leGNlcHRpb25IYW5kbGVyID0geyBjb250ZXh0LCBleGNlcHRp
b24gaW4KLSAgICAgICAgICAgIHByaW50KGV4Y2VwdGlvbiEudG9TdHJpbmcoKSEpCi0gICAgICAg
ICAgICBleGl0KDIpCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICB9KCkK
LSAgICBwcml2YXRlIHN0YXRpYyBsZXQgY29uc3RydWN0b3IgOiBKU1ZhbHVlID0gewotICAgICAg
ICByZXR1cm4gY29udGV4dC5vYmplY3RGb3JLZXllZFN1YnNjcmlwdCgiY3JlYXRlV29ya2VyVGFz
ayIpLmNhbGwod2l0aEFyZ3VtZW50czogW0RldmljZS5BLnJhd1ZhbHVlLCBEZXZpY2UuQi5yYXdW
YWx1ZSwgV29ya1BhY2tldC5TSVpFXSkKLSAgICB9KCkKLQotICAgIHN0YXRpYyBmdW5jIGNyZWF0
ZShzY2hlZHVsZXI6IFNjaGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogUGFja2V0
KQotICAgIHsKLSAgICAgICAgbGV0IHRhc2sgPSBXb3JrZXJUYXNrKHNjaGVkdWxlcjogc2NoZWR1
bGVyLCBwcmlvcml0eTogcHJpb3JpdHksIHF1ZXVlOiBxdWV1ZSkKLSAgICAgICAgc2NoZWR1bGVy
LmFkZCh0YXNrOiB0YXNrKQotICAgIH0KLQotICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDog
UGFja2V0PykgLT4gVGFzaz8KLSAgICB7Ci0gICAgICAgIHJldHVybiBzZWxmLmpzLmludm9rZU1l
dGhvZCgicnVuIiwgd2l0aEFyZ3VtZW50czogW3BhY2tldF0pLnRvT2JqZWN0KCkgYXMhIFRhc2s/
Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0
eTogUHJpb3JpdHksIHF1ZXVlOiBQYWNrZXQpCi0gICAgewotICAgICAgICBzZWxmLmpzID0gV29y
a2VyVGFzay5jb25zdHJ1Y3Rvci5jb25zdHJ1Y3Qod2l0aEFyZ3VtZW50czogW3NjaGVkdWxlcl0p
Ci0gICAgICAgIHN1cGVyLmluaXQoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlv
cml0eSwgcXVldWU6IHF1ZXVlKQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L21haW4u
c3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmlj
aGFyZHNNb3N0bHlTd2lmdC9tYWluLnN3aWZ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1ZTc1ODE1ODQwODc4YTdhZmY2Y2I1YzA0ZmFjZjY2Yjc5ODAxMmQxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVu
Y2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L21haW4uc3dpZnQKKysr
IC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi1pbXBvcnQgUXVhcnR6Q29y
ZQotCi1sZXQgaXRlcmF0aW9ucyA9IDUwCi1sZXQgc3RhcnQgPSBDQUN1cnJlbnRNZWRpYVRpbWUo
KQotZm9yIF8gaW4gMS4uLml0ZXJhdGlvbnMgewotICAgIHJ1blJpY2hhcmRzKCkKLX0KLWxldCBl
bmQgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKQotcHJpbnQoSW50KChlbmQtc3RhcnQpICogMTAwMCkp
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dp
ZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9yaWNoYXJkcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjQ3MWU1YzE5MDI1YThjYzQ1NjgzZjhm
ZmU0MmU4N2E4Mzk5ZGQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNo
YXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotKi8KLQotZnVuY3Rpb24gY3JlYXRlV29ya2VyVGFzayhkZXZpY2VBLCBkZXZpY2VC
LCBEQVRBX1NJWkUpIHsKLSAgICByZXR1cm4gY2xhc3MgewotICAgICAgICBjb25zdHJ1Y3Rvcihz
Y2hlZHVsZXIpIHsKLSAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOwotICAg
ICAgICAgICAgdGhpcy5kZXZpY2UgPSBkZXZpY2VBOwotICAgICAgICAgICAgdGhpcy5sZXR0ZXJJ
bmRleCA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBydW4ocGFja2V0KSB7Ci0gICAgICAgICAg
ICBpZiAocGFja2V0ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2hl
ZHVsZXIud2FpdEN1cnJlbnQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5kZXZpY2UgPSB0aGlzLmRldmljZSA9PT0gZGV2aWNlQSA/IGRldmljZUIgOiBkZXZp
Y2VBOwotICAgICAgICAgICAgICAgIHBhY2tldC5kZXZpY2UgPSB0aGlzLmRldmljZTsKLSAgICAg
ICAgICAgICAgICBwYWNrZXQucHJvY2Vzc2VkID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IERBVEFfU0laRTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMu
bGV0dGVySW5kZXgrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGV0dGVySW5kZXgg
PiAyNikKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGV0dGVySW5kZXggPSAxOwotICAg
ICAgICAgICAgICAgICAgICBwYWNrZXQuZGF0YVtpXSA9IHRoaXMubGV0dGVySW5kZXg7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5oYW5k
bGVXaXRoUGFja2V0KHBhY2tldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Owot
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3
aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9yaWNoYXJk
cy5zd2lmdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QwMzVhOTFjY2I3ZmZhNmU5
ZGY5MjdlMzg2YmIwNTFiNWI1YzY0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dp
ZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9yaWNoYXJkcy5zd2lmdAorKysgL2Rldi9udWxsCkBAIC0x
LDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLWltcG9ydCBEYXJ3aW4KLQotbGV0IEVYUEVDVEVEX1FV
RVVFX0NPVU5UID0gMjMyMjsKLWxldCBFWFBFQ1RFRF9IT0xEX0NPVU5UID0gOTI4OwotCi1mdW5j
IHJ1blJpY2hhcmRzKCkKLXsKLSAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlcigpCi0KLSAgSWRs
ZVRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogLklkbGUpCi0KLSAg
KHsKLSAgICAgIHZhciBxdWV1ZSA9IFdvcmtQYWNrZXQobGluazogbmlsKQotICAgICAgcXVldWUg
PSBXb3JrUGFja2V0KGxpbms6IHF1ZXVlKQotICAgICAgV29ya2VyVGFzay5jcmVhdGUoc2NoZWR1
bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0eS5Xb3JrZXIsIHF1ZXVlOiBxdWV1ZSkK
LSAgfSkoKQotCi0gICh7Ci0gICAgICB2YXIgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAu
QSwgbGluazogbmlsKQotICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQSwgbGlu
azogcXVldWUpCi0gICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5BLCBsaW5rOiBx
dWV1ZSkKLSAgICAgIEhhbmRsZXJUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2
aWNlOiAuQSwgcHJpb3JpdHk6IFByaW9yaXR5LkhhbmRsZXJBLCBxdWV1ZTogcXVldWUpCi0gIH0p
KCkKLQotICAoewotICAgICAgdmFyIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmljZTogLkIsIGxp
bms6IG5pbCkKLSAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmljZTogLkIsIGxpbms6IHF1
ZXVlKQotICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQiwgbGluazogcXVldWUp
Ci0gICAgICBIYW5kbGVyVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTog
LkIsIHByaW9yaXR5OiBQcmlvcml0eS5IYW5kbGVyQiwgcXVldWU6IHF1ZXVlKQotICB9KSgpCi0K
LSAgRGV2aWNlVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogLkEsIHBy
aW9yaXR5OiBQcmlvcml0eS5EZXZpY2VBKQotICBEZXZpY2VUYXNrLmNyZWF0ZShzY2hlZHVsZXI6
IHNjaGVkdWxlciwgZGV2aWNlOiAuQiwgcHJpb3JpdHk6IFByaW9yaXR5LkRldmljZUIpCi0KLSAg
c2NoZWR1bGVyLnNjaGVkdWxlKCkKLQotICBpZiBzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBF
Q1RFRF9RVUVVRV9DT1VOVCB8fCBzY2hlZHVsZXIuaG9sZENvdW50ICE9IEVYUEVDVEVEX0hPTERf
Q09VTlQgewotICAgIHByaW50KCJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50ID0g
XChzY2hlZHVsZXIucXVldWVDb3VudCksIGhvbGRDb3VudCA9IFwoc2NoZWR1bGVyLmhvbGRDb3Vu
dCkuIikKLSAgICBleGl0KDEpCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5Yzc1MjNiOThhZjAzNzQ4NDNkMDczMjc1MWJjOGI3N2JkZGJlZDM1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIC9kZXYvbnVsbApAQCAtMSwzMTggKzAsMCBAQAotLy8gISQqVVRGOCokIQotewotCWFy
Y2hpdmVWZXJzaW9uID0gMTsKLQljbGFzc2VzID0gewotCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUw
OwotCW9iamVjdHMgPSB7Ci0KLS8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTE0
MEFBQzQwMjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzODI0OUIwMUQxMDAwMUYxMUUgLyog
UGFja2V0LnN3aWZ0ICovOyB9OwotCQkxNDBBQUM0MTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFy
ZHMuc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDBBQUMzOTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgKi87IH07Ci0JCTE0MEFB
QzQyMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dpZnQgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzQTI0OUIwMUQxMDAwMUYxMUUgLyog
U2NoZWR1bGVyLnN3aWZ0ICovOyB9OwotCQkxNDBBQUM0MzI0OUIwMUQxMDAwMUYxMUUgLyogVGFz
ay5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MEFBQzNCMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICovOyB9OwotCQkxNDBBQUM0NDI0
OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzQzI0OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRh
c2suc3dpZnQgKi87IH07Ci0JCTE0MEFBQzQ1MjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFz
ay5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MEFBQzNEMjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCAqLzsgfTsKLQkJMTQw
QUFDNDYyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzRTI0OUIwMUQxMDAwMUYxMUUg
LyogV29ya2VyVGFzay5zd2lmdCAqLzsgfTsKLQkJMTQwQUFDNDcyNDlCMDFEMTAwMDFGMTFFIC8q
IERldmljZVRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDBBQUMzRjI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCAqLzsg
fTsKLQkJMTQxNUFEMjYyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1QUQyNTI0OTlCQzVDMDA1QkIy
RTQgLyogbWFpbi5zd2lmdCAqLzsgfTsKLS8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwot
Ci0vKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJMTQxNUFEMjAy
NDk5QkM1QzAwNUJCMkU0IC8qIENvcHlGaWxlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWENvcHlGaWxl
c0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKLQkJCWRzdFBhdGggPSAiIjsK
LQkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWENvcHlG
aWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KLQkJMTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBQYWNrZXQuc3dpZnQ7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTE0MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5z
d2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSByaWNoYXJkcy5zd2lmdDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQwQUFDM0EyNDlCMDFEMTAwMDFGMTFFIC8q
IFNjaGVkdWxlci5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBTY2hl
ZHVsZXIuc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MEFBQzNCMjQ5QjAx
RDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0
aCA9IFRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MEFBQzNDMjQ5
QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dp
ZnQ7IHBhdGggPSBJZGxlVGFzay5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MTQwQUFDM0QyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5zd2lmdDsgcGF0aCA9IEhhbmRsZXJUYXNrLnN3aWZ0OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxNDBBQUMzRTI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5z
d2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBXb3JrZXJUYXNrLnN3aWZ0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDBBQUMzRjI0OUIwMUQxMDAwMUYxMUUg
LyogRGV2aWNlVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBE
ZXZpY2VUYXNrLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDE1QUQyMjI0
OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNTd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gUmljaGFyZHNTd2lmdDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKLQkJMTQxNUFEMjUyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dp
ZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLnN3aWZ0OyBwYXRoID0gbWFpbi5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLS8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQkxNDE1QUQxRjI0OTlCQzVDMDA1QkIyRTQg
LyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwot
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYR3JvdXAgc2Vj
dGlvbiAqLwotCQkxNDE1QUQxOTI0OTlCQzVCMDA1QkIyRTQgPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNo
YXJkc1N3aWZ0ICovLAotCQkJCTE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAq
LywKLQkJCSk7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkxNDE1QUQyMzI0
OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVjdHMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJ
CWNoaWxkcmVuID0gKAotCQkJCTE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc1N3
aWZ0ICovLAotCQkJKTsKLQkJCW5hbWUgPSBQcm9kdWN0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCX07Ci0JCTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc1N3aWZ0
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkxNDBBQUMz
RjI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCAqLywKLQkJCQkxNDBBQUMzRDI0
OUIwMUQxMDAwMUYxMUUgLyogSGFuZGxlclRhc2suc3dpZnQgKi8sCi0JCQkJMTQwQUFDM0MyNDlC
MDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0ICovLAotCQkJCTE0MTVBRDI1MjQ5OUJDNUMw
MDVCQjJFNCAvKiBtYWluLnN3aWZ0ICovLAotCQkJCTE0MEFBQzM4MjQ5QjAxRDEwMDAxRjExRSAv
KiBQYWNrZXQuc3dpZnQgKi8sCi0JCQkJMTQwQUFDMzkyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hh
cmRzLnN3aWZ0ICovLAotCQkJCTE0MEFBQzNBMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIu
c3dpZnQgKi8sCi0JCQkJMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgKi8s
Ci0JCQkJMTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgKi8sCi0J
CQkpOwotCQkJcGF0aCA9IFJpY2hhcmRzU3dpZnQ7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwotLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KLQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRz
U3dpZnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMTQxNUFEMjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJkc1N3aWZ0IiAqLzsKLQkJCWJ1aWxk
UGhhc2VzID0gKAotCQkJCTE0MTVBRDFFMjQ5OUJDNUMwMDVCQjJFNCAvKiBTb3VyY2VzICovLAot
CQkJCTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJFNCAvKiBGcmFtZXdvcmtzICovLAotCQkJCTE0MTVB
RDIwMjQ5OUJDNUMwMDVCQjJFNCAvKiBDb3B5RmlsZXMgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxl
cyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9IFJpY2hh
cmRzU3dpZnQ7Ci0JCQlwcm9kdWN0TmFtZSA9IFJpY2hhcmRzU3dpZnQ7Ci0JCQlwcm9kdWN0UmVm
ZXJlbmNlID0gMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi87Ci0J
CQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwotCQl9OwotLyog
RW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFByb2plY3Qgc2Vj
dGlvbiAqLwotCQkxNDE1QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhQcm9qZWN0OwotCQkJYXR0cmlidXRlcyA9IHsKLQkJCQlMYXN0U3dp
ZnRVcGRhdGVDaGVjayA9IDEyMDA7Ci0JCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDEyMDA7Ci0JCQkJ
VGFyZ2V0QXR0cmlidXRlcyA9IHsKLQkJCQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0ID0gewot
CQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gMTIuMDsKLQkJCQkJfTsKLQkJCQl9OwotCQkJ
fTsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQxRDI0OTlCQzVCMDA1QkIyRTQg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc1N3aWZ0
IiAqLzsKLQkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDkuMyI7Ci0JCQlkZXZlbG9w
bWVudFJlZ2lvbiA9IGVuOwotCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7Ci0JCQlrbm93
blJlZ2lvbnMgPSAoCi0JCQkJZW4sCi0JCQkJQmFzZSwKLQkJCSk7Ci0JCQltYWluR3JvdXAgPSAx
NDE1QUQxOTI0OTlCQzVCMDA1QkIyRTQ7Ci0JCQlwcm9kdWN0UmVmR3JvdXAgPSAxNDE1QUQyMzI0
OTlCQzVDMDA1QkIyRTQgLyogUHJvZHVjdHMgKi87Ci0JCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwot
CQkJcHJvamVjdFJvb3QgPSAiIjsKLQkJCXRhcmdldHMgPSAoCi0JCQkJMTQxNUFEMjEyNDk5QkM1
QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8sCi0JCQkpOwotCQl9OwotLyogRW5kIFBCWFBy
b2plY3Qgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCi0JCTE0MTVBRDFFMjQ5OUJDNUMwMDVCQjJFNCAvKiBTb3VyY2VzICovID0gewotCQkJaXNh
ID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwotCQkJZmlsZXMgPSAoCi0JCQkJMTQwQUFDNDcyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRh
c2suc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDBBQUM0NTI0OUIwMUQxMDAwMUYxMUUgLyog
SGFuZGxlclRhc2suc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDBBQUM0NDI0OUIwMUQxMDAw
MUYxMUUgLyogSWRsZVRhc2suc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDE1QUQyNjI0OTlC
QzVDMDA1QkIyRTQgLyogbWFpbi5zd2lmdCBpbiBTb3VyY2VzICovLAotCQkJCTE0MEFBQzQwMjQ5
QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkxNDBBQUM0
MTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgaW4gU291cmNlcyAqLywKLQkJCQkx
NDBBQUM0MjI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0IGluIFNvdXJjZXMgKi8s
Ci0JCQkJMTQwQUFDNDMyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgaW4gU291cmNlcyAq
LywKLQkJCQkxNDBBQUM0NjI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5zd2lmdCBpbiBT
b3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwotCQl9OwotLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyog
QmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCQkxNDE1QUQyNzI0OTlCQzVD
MDA1QkIyRTQgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
LQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87
Ci0JCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKLQkJCQlDTEFOR19BTkFMWVpFUl9O
VU1CRVJfT0JKRUNUX0NPTlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlDTEFOR19DWFhf
TEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNCI7Ci0JCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAi
bGliYysrIjsKLQkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKLQkJCQlDTEFOR19FTkFC
TEVfT0JKQ19BUkMgPSBZRVM7Ci0JCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKLQkJ
CQlDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKLQkJCQlDTEFO
R19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVT
OwotCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19X
QVJOX0RFUFJFQ0FURURfT0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FS
Tl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7Ci0JCQkJQ0xBTkdfV0FSTl9ET0NV
TUVOVEFUSU9OX0NPTU1FTlRTID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlF
UzsKLQkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJO
X0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9O
ID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVT
OwotCQkJCUNMQU5HX1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKLQkJCQlD
TEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOwotCQkJCUNMQU5HX1dBUk5f
T0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOwotCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xV
REVfSU5fRlJBTUVXT1JLX0hFQURFUiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1Bf
QU5BTFlTSVMgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsK
LQkJCQlDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX1VO
R1VBUkRFRF9BVkFJTEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlDTEFOR19XQVJOX1VO
UkVBQ0hBQkxFX0NPREUgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9N
QVRDSCA9IFlFUzsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gZHdhcmY7Ci0JCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZ
RVM7Ci0JCQkJRU5BQkxFX1RFU1RBQklMSVRZID0gWUVTOwotCQkJCUdDQ19DX0xBTkdVQUdFX1NU
QU5EQVJEID0gZ251MTE7Ci0JCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87Ci0JCQkJR0NDX05P
X0NPTU1PTl9CTE9DS1MgPSBZRVM7Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7Ci0J
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKLQkJCQkJIkRFQlVHPTEiLAotCQkJ
CQkiJChpbmhlcml0ZWQpIiwKLQkJCQkpOwotCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05W
RVJTSU9OID0gWUVTOwotCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9S
OwotCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7Ci0JCQkJR0NDX1dBUk5f
VU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOwotCQkJCUdDQ19XQVJOX1VOVVNF
RF9GVU5DVElPTiA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0J
CQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTY7Ci0JCQkJTVRMX0VOQUJMRV9ERUJV
R19JTkZPID0gSU5DTFVERV9TT1VSQ0U7Ci0JCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKLQkJCQlP
TkxZX0FDVElWRV9BUkNIID0gWUVTOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQkJU1dJRlRf
QUNUSVZFX0NPTVBJTEFUSU9OX0NPTkRJVElPTlMgPSBERUJVRzsKLQkJCQlTV0lGVF9PUFRJTUla
QVRJT05fTEVWRUwgPSAiLU9ub25lIjsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0J
CTE0MTVBRDI4MjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POwotCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7Ci0J
CQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJ
VkU7Ci0JCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOwotCQkJCUNM
QU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7Ci0JCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZ
RVM7Ci0JCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOwotCQkJCUNMQU5HX0VOQUJMRV9P
QkpDX1dFQUsgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJ
TkcgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xB
TkdfV0FSTl9DT01NQSA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04g
PSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0g
WUVTOwotCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOwot
CQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKLQkJCQlDTEFOR19X
QVJOX0VNUFRZX0JPRFkgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZ
RVM7Ci0JCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdf
V0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05V
TExfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlO
X1NFTEYgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlF
UzsKLQkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKLQkJCQlDTEFO
R19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7Ci0JCQkJQ0xB
TkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fU1RSSUNU
X1BST1RPVFlQRVMgPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7
Ci0JCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7
Ci0JCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOwotCQkJCUNMQU5HX1dBUk5f
X0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5P
OwotCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotCQkJ
CUVOQUJMRV9OU19BU1NFUlRJT05TID0gTk87Ci0JCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NF
TkQgPSBZRVM7Ci0JCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKLQkJCQlHQ0Nf
Tk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKLQkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTiA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsK
LQkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotCQkJCUdDQ19XQVJOX1VO
SU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKLQkJCQlHQ0NfV0FSTl9VTlVTRURf
RlVOQ1RJT04gPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwotCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OwotCQkJCU1UTF9FTkFCTEVfREVCVUdf
SU5GTyA9IE5POwotCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7Ci0JCQkJU0RLUk9PVCA9IG1hY29z
eDsKLQkJCQlTV0lGVF9DT01QSUxBVElPTl9NT0RFID0gd2hvbGVtb2R1bGU7Ci0JCQkJU1dJRlRf
T1BUSU1JWkFUSU9OX0xFVkVMID0gIi1PIjsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJ
fTsKLQkJMTQxNUFEMkEyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovID0gewotCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPREVfU0lH
Tl9TVFlMRSA9IEF1dG9tYXRpYzsKLQkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSki
OwotCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9
OwotCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT0RFX1NJ
R05fU1RZTEUgPSBBdXRvbWF0aWM7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKLQkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwot
CQl9OwotLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLQotLyogQmVnaW4g
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0JCTE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJF
NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzU3dp
ZnQiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCi0JCQkJMTQxNUFEMjcyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAot
CQkJCTE0MTVBRDI4MjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTE0MTVBRDI5MjQ5OUJDNUMwMDVCQjJFNCAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNTd2lmdCIg
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0
aW9ucyA9ICgKLQkJCQkxNDE1QUQyQTI0OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCi0JCQkJ
MTQxNUFEMkIyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
LQl9OwotCXJvb3RPYmplY3QgPSAxNDE1QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVjdCBv
YmplY3QgKi87Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9S
aWNoYXJkc1N3aWZ0Lnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJk
c1N3aWZ0L1JpY2hhcmRzU3dpZnQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmlj
aGFyZHNTd2lmdC54Y3NjaGVtZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMzY2Fl
NTE1NmNjMWFlYWNjMWRlNjBmZjAxYmU0OWM1ZDMzZjJlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9S
aWNoYXJkc1N3aWZ0Lnhjc2NoZW1lCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxTY2hlbWUKLSAgIExhc3RVcGdy
YWRlVmVyc2lvbiA9ICIxMjAwIgotICAgdmVyc2lvbiA9ICIxLjciPgotICAgPEJ1aWxkQWN0aW9u
Ci0gICAgICBwYXJhbGxlbGl6ZUJ1aWxkYWJsZXMgPSAiWUVTIgotICAgICAgYnVpbGRJbXBsaWNp
dERlcGVuZGVuY2llcyA9ICJZRVMiPgotICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KLSAgICAg
ICAgIDxCdWlsZEFjdGlvbkVudHJ5Ci0gICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVT
IgotICAgICAgICAgICAgYnVpbGRGb3JSdW5uaW5nID0gIllFUyIKLSAgICAgICAgICAgIGJ1aWxk
Rm9yUHJvZmlsaW5nID0gIllFUyIKLSAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllF
UyIKLSAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+Ci0gICAgICAgICAgICA8
QnVpbGRhYmxlUmVmZXJlbmNlCi0gICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0g
InByaW1hcnkiCi0gICAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIx
MjQ5OUJDNUMwMDVCQjJFNCIKLSAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFy
ZHNTd2lmdCIKLSAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTd2lmdCIK
LSAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRz
U3dpZnQueGNvZGVwcm9qIj4KLSAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgotICAg
ICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5PgotICAgICAgPC9CdWlsZEFjdGlvbkVudHJpZXM+Ci0g
ICA8L0J1aWxkQWN0aW9uPgotICAgPFRlc3RBY3Rpb24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlv
biA9ICJEZWJ1ZyIKLSAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRl
YnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgotICAgICAgc2VsZWN0ZWRMYXVuY2hlcklk
ZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCi0gICAg
ICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+Ci0gICAgICA8VGVzdGFibGVz
PgotICAgICAgPC9UZXN0YWJsZXM+Ci0gICA8L1Rlc3RBY3Rpb24+Ci0gICA8TGF1bmNoQWN0aW9u
Ci0gICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKLSAgICAgIHNlbGVjdGVkRGVi
dWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERC
IgotICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3Vu
ZGF0aW9uLkxhdW5jaGVyLkxMREIiCi0gICAgICBsYXVuY2hTdHlsZSA9ICIwIgotICAgICAgdXNl
Q3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKLSAgICAgIGlnbm9yZXNQZXJzaXN0ZW50U3Rh
dGVPbkxhdW5jaCA9ICJOTyIKLSAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIK
LSAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKLSAgICAgIGFsbG93TG9j
YXRpb25TaW11bGF0aW9uID0gIllFUyI+Ci0gICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxl
Ci0gICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+Ci0gICAgICAgICA8QnVpbGRh
YmxlUmVmZXJlbmNlCi0gICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnki
Ci0gICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVC
QjJFNCIKLSAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTd2lmdCIKLSAgICAg
ICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTd2lmdCIKLSAgICAgICAgICAgIFJlZmVy
ZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU3dpZnQueGNvZGVwcm9qIj4KLSAg
ICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgotICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVu
bmFibGU+Ci0gICA8L0xhdW5jaEFjdGlvbj4KLSAgIDxQcm9maWxlQWN0aW9uCi0gICAgICBidWls
ZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKLSAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFy
Z3NFbnYgPSAiWUVTIgotICAgICAgc2F2ZWRUb29sSWRlbnRpZmllciA9ICIiCi0gICAgICB1c2VD
dXN0b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5PIgotICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25p
bmcgPSAiWUVTIj4KLSAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKLSAgICAgICAgIHJ1
bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4KLSAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UK
LSAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKLSAgICAgICAgICAg
IEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IgotICAgICAg
ICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc1N3aWZ0IgotICAgICAgICAgICAgQmx1ZXBy
aW50TmFtZSA9ICJSaWNoYXJkc1N3aWZ0IgotICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5l
ciA9ICJjb250YWluZXI6UmljaGFyZHNTd2lmdC54Y29kZXByb2oiPgotICAgICAgICAgPC9CdWls
ZGFibGVSZWZlcmVuY2U+Ci0gICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KLSAgIDwv
UHJvZmlsZUFjdGlvbj4KLSAgIDxBbmFseXplQWN0aW9uCi0gICAgICBidWlsZENvbmZpZ3VyYXRp
b24gPSAiRGVidWciPgotICAgPC9BbmFseXplQWN0aW9uPgotICAgPEFyY2hpdmVBY3Rpb24KLSAg
ICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgotICAgICAgcmV2ZWFsQXJjaGl2ZUlu
T3JnYW5pemVyID0gIllFUyI+Ci0gICA8L0FyY2hpdmVBY3Rpb24+Ci0gICA8SW5zdGFsbEFjdGlv
bgotICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiPgotICAgPC9JbnN0YWxsQWN0
aW9uPgotPC9TY2hlbWU+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jp
Y2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0IGIvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvRGV2aWNlVGFzay5zd2lm
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyMGE1YWQ0NDJkZjFlYzZhODc3Y2Ew
NDA5ZGM0M2IxMTVkOTU5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC9EZXZpY2VUYXNrLnN3aWZ0CisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotKi8KLQotZW51bSBEZXZpY2UgewotICAgIGNhc2UgQQotICAgIGNhc2UgQgotfQotCi0vKioK
LSAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJl
ZW4gcnVuIHRvIHNpbXVsYXRlCi0gKiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwg
ZGV2aWNlLgotICovCi1jbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7Ci0gICAgbGV0IGRldmljZTog
RGV2aWNlCi0gICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQYWNrZXQ/ID0gbmlsCi0KLSAg
ICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNl
LCBwcmlvcml0eTogUHJpb3JpdHkpCi0gICAgewotICAgICAgICBsZXQgdGFzayA9IERldmljZVRh
c2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlvcml0eTogcHJpb3Jp
dHkpCi0gICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKLSAgICB9Ci0KLSAgICBvdmVy
cmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/Ci0gICAgewotICAgICAgICBp
ZiBwYWNrZXQgPT0gbmlsIHsKLSAgICAgICAgICAgIGd1YXJkIGxldCBwYWNrZXQgPSBzZWxmLnBl
bmRpbmdQYWNrZXQgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVy
LndhaXRDdXJyZW50KCkKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlbGYucGVuZGluZ1Bh
Y2tldCA9IG5pbAotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhhbmRsZShwYWNr
ZXQ6IHBhY2tldCkKLSAgICAgICAgfQotCi0gICAgICAgIHNlbGYucGVuZGluZ1BhY2tldCA9IChw
YWNrZXQgYXMhIERldmljZVBhY2tldCkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhv
bGRDdXJyZW50KCkKLSAgICB9Ci0KLSAgICBwcml2YXRlIGluaXQoc2NoZWR1bGVyOiBTY2hlZHVs
ZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCi0gICAgewotICAgICAgICBz
ZWxmLmRldmljZSA9IGRldmljZQotICAgICAgICBzdXBlci5pbml0KHNjaGVkdWxlcjogc2NoZWR1
bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCi0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSGFuZGxlclRhc2su
c3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC9IYW5kbGVyVGFzay5zd2lmdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNh
ZmIyMWIyMmE3NWJlNTEwZDEyY2I3MjE4MzhjMTExMDRkMDY3Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jp
Y2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9IYW5kbGVyVGFzay5zd2lmdAorKysgL2Rldi9udWxs
CkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLS8qKgotICogQSB0YXNrIHRoYXQgbWFuaXB1
bGF0ZXMgd29yayBwYWNrZXRzIGFuZCB0aGVuIHN1c3BlbmRzIGl0c2VsZi4KLSAqLwotY2xhc3Mg
SGFuZGxlclRhc2sgOiBUYXNrIHsKLSAgICB2YXIgZGV2aWNlOiBEZXZpY2UKLSAgICB2YXIgd29y
a1F1ZXVlIDogV29ya1BhY2tldD8gPSBuaWwKLSAgICB2YXIgZGV2aWNlUXVldWUgOiBEZXZpY2VQ
YWNrZXQ/ID0gbmlsCi0KLSAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVs
ZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBEZXZpY2VQYWNr
ZXQpCi0gICAgewotICAgICAgICBsZXQgdGFzayA9IEhhbmRsZXJUYXNrKHNjaGVkdWxlcjogc2No
ZWR1bGVyLCBkZXZpY2U6IGRldmljZSwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVldWUp
Ci0gICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKLSAgICB9Ci0KLSAgICBvdmVycmlk
ZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/Ci0gICAgewotICAgICAgICBpZiBs
ZXQgcCA9IHBhY2tldCB7Ci0gICAgICAgICAgICBpZiBsZXQgd29yayA9IHAgYXM/IFdvcmtQYWNr
ZXQgewotICAgICAgICAgICAgICAgIHNlbGYud29ya1F1ZXVlID0gd29yay5hZGRUbyhxdWV1ZTog
c2VsZi53b3JrUXVldWUpIGFzISBXb3JrUGFja2V0PwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBzZWxmLmRldmljZVF1ZXVlID0gKHAgYXMhIERldmljZVBhY2tldCkuYWRk
VG8ocXVldWU6IHNlbGYuZGV2aWNlUXVldWUpIGFzISBEZXZpY2VQYWNrZXQ/Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgbGV0IHdvcmtQYWNrZXQgPSBzZWxmLndvcmtRdWV1
ZSB7Ci0gICAgICAgICAgICBsZXQgcHJvY2Vzc2VkID0gd29ya1BhY2tldC5wcm9jZXNzZWQKLSAg
ICAgICAgICAgIGlmIChwcm9jZXNzZWQgPCBXb3JrUGFja2V0LlNJWkUpIHsKLSAgICAgICAgICAg
ICAgICBpZiBsZXQgZGV2aWNlUGFja2V0ID0gc2VsZi5kZXZpY2VRdWV1ZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuZGV2aWNlUXVldWUgPSBkZXZpY2VQYWNrZXQubGluayBhcyEgRGV2aWNl
UGFja2V0PwotICAgICAgICAgICAgICAgICAgICBkZXZpY2VQYWNrZXQubGV0dGVySW5kZXggPSB3
b3JrUGFja2V0LmRhdGFbcHJvY2Vzc2VkXQotICAgICAgICAgICAgICAgICAgICB3b3JrUGFja2V0
LnByb2Nlc3NlZCA9IHByb2Nlc3NlZCArIDEKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogZGV2aWNlUGFja2V0KQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi53b3JrUXVldWUg
PSB3b3JrUGFja2V0LmxpbmsgYXMhIFdvcmtQYWNrZXQ/Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogd29ya1BhY2tldCkKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQoKQot
ICAgIH0KLQotICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNlOiBE
ZXZpY2UsIHByaW9yaXR5OiBQcmlvcml0eSwgcXVldWU6IERldmljZVBhY2tldCkKLSAgICB7Ci0g
ICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCi0gICAgICAgIHN1cGVyLmluaXQoc2NoZWR1bGVy
OiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQotICAgIH0KLX0K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0L0lkbGVUYXNrLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNo
YXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSWRsZVRhc2suc3dpZnQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDYxY2YzMWFiY2QwNjhlMDU4NmM4ODg1MTA1MzcxYzFkYzU3ODFmZTQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSWRsZVRhc2suc3dpZnQK
KysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0vKioKLSAqIEFuIGlk
bGUgdGFzayBkb2Vzbid0IGRvIGFueSB3b3JrIGl0c2VsZiBidXQgY3ljbGVzIGNvbnRyb2wgYmV0
d2VlbiB0aGUgdHdvIGRldmljZSB0YXNrcy4KLSAqLwotY2xhc3MgSWRsZVRhc2sgOiBUYXNrIHsK
LSAgICB2YXIgaGFzaCA6IEludCA9IDEKLSAgICB2YXIgY291bnQgOiBJbnQgPSAxMDAwCi0KLSAg
ICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlv
cml0eSkKLSAgICB7Ci0gICAgICAgIGxldCB0YXNrID0gSWRsZVRhc2soc2NoZWR1bGVyOiBzY2hl
ZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSkKLSAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0
YXNrKQotICAgIH0KLQotICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4g
VGFzaz8KLSAgICB7Ci0gICAgICBzZWxmLmNvdW50IC09IDEKLSAgICAgIGlmIHNlbGYuY291bnQg
PT0gMCB7Ci0gICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKLSAg
ICAgIH0KLSAgICAgIGlmIChzZWxmLmhhc2ggJiAxKSA9PSAwIHsKLSAgICAgICAgc2VsZi5oYXNo
ID0gc2VsZi5oYXNoID4+IDEKLSAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVhc2Uo
ZGV2aWNlOiAuQSkKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHNlbGYuaGFzaCA9IChzZWxmLmhh
c2ggPj4gMSkgXiAweEQwMDgKLSAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVhc2Uo
ZGV2aWNlOiAuQikKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGluaXQoc2NoZWR1bGVy
OiBTY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0eSkKLSAgICB7Ci0gICAgICBzdXBlci5pbml0
KHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCi0gICAgICBzZWxmLnJl
c3VtZSgpCi0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9S
aWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvUGFja2V0LnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvUGFja2V0LnN3aWZ0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjdlMTBlY2UzMWFmNWQ2MTg1YzRiYmFjZDczMjEy
ZThlZDAwYmEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1Bh
Y2tldC5zd2lmdAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLS8q
KgotICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0ZWQgYnkgdGhl
IHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAotICogb2YgdGhlIHBheWxvYWQgZGF0YSBjYXJyaWVk
IGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhlciBpcyB0aGUKLSAqIG5h
dHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0aGUgdGFza3MuCi0gKgot
ICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlua2VkIGxpc3RzIGFuZCBh
cmUgaGVuY2UgdXNlZCBib3RoIGFzCi0gKiBkYXRhIGFuZCB3b3JrbGlzdHMuCi0gKi8KLWNsYXNz
IFBhY2tldCB7Ci0gICAgdmFyIGRldmljZSA6IERldmljZQotICAgIHZhciBsaW5rIDogUGFja2V0
PwotCi0gICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0PykKLSAgICB7Ci0gICAg
ICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCi0gICAgICAgIHNlbGYubGluayA9IGxpbmsKLSAgICB9
Ci0KLSAgICAvKioKLSAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEgd29ya2xp
c3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgotICAgICovCi0gICAgZnVuYyBhZGRUbyhxdWV1
ZTogUGFja2V0PykgLT4gUGFja2V0PyB7Ci0gICAgICAgIHNlbGYubGluayA9IG5pbAotICAgICAg
ICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHNlbGYK
LSAgICAgICAgfQotICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmlsIHsKLSAgICAgICAgICAg
IG5leHQgPSBuZXh0LmxpbmshCi0gICAgICAgIH0KLSAgICAgICAgbmV4dC5saW5rID0gc2VsZgot
ICAgICAgICByZXR1cm4gcXVldWU7Ci0gICAgfQotfQotCi1maW5hbCBjbGFzcyBEZXZpY2VQYWNr
ZXQgOiBQYWNrZXQgewotICAgIHZhciBsZXR0ZXJJbmRleCA6IEludCA9IDAKLX0KLQotZmluYWwg
Y2xhc3MgV29ya1BhY2tldCA6IFBhY2tldCB7Ci0gICAgc3RhdGljIGxldCBTSVpFIDogSW50ID0g
NAotCi0gICAgdmFyIHByb2Nlc3NlZCA6IEludCA9IDAKLSAgICB2YXIgZGF0YSA6IFtJbnRdID0g
W0ludF0ocmVwZWF0aW5nOiAwLCBjb3VudDogU0laRSkKLQotICAgIGluaXQobGluazogUGFja2V0
PykKLSAgICB7Ci0gICAgICAgIHN1cGVyLmluaXQoZGV2aWNlOiAuQSwgbGluazogbGluaykKLSAg
ICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dp
ZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIuc3dpZnQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhYTBmNTE5MjUyNTEwMDA4MTAyYzllZTZkOWZhZmE0MTZj
MzlhZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvU2NoZWR1
bGVyLnN3aWZ0CisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLS8q
KgotKiBBIHNjaGVkdWxlciBjYW4gYmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBvZiB0YXNrcyBi
YXNlZCBvbiB0aGVpciByZWxhdGl2ZQotKiBwcmlvcml0aWVzLiAgU2NoZWR1bGluZyBpcyBkb25l
IGJ5IG1haW50YWluaW5nIGEgbGlzdCBvZiB0YXNrIGNvbnRyb2wgYmxvY2tzCi0qIHdoaWNoIGhv
bGRzIHRhc2tzIGFuZCB0aGUgZGF0YSBxdWV1ZSB0aGV5IGFyZSBwcm9jZXNzaW5nLgotKiBAY29u
c3RydWN0b3IKLSovCi1jbGFzcyBTY2hlZHVsZXIgewotICAgIHByaXZhdGUoc2V0KSB2YXIgcXVl
dWVDb3VudCA9IDAKLSAgICBwcml2YXRlKHNldCkgdmFyIGhvbGRDb3VudCA9IDAKLSAgICBwcml2
YXRlKHNldCkgdmFyIGN1cnJlbnRUYXNrIDogVGFzaz8gPSBuaWwKLSAgICBwcml2YXRlKHNldCkg
dmFyIGxpc3QgOiBUYXNrPyA9IG5pbAotCi0gICAgLyoqCi0gICAgKiBFeGVjdXRlIHRoZSB0YXNr
cyBtYW5hZ2VkIGJ5IHRoaXMgc2NoZWR1bGVyLgotICAgICovCi0gICAgZnVuYyBzY2hlZHVsZSgp
Ci0gICAgewotICAgICAgICBzZWxmLmN1cnJlbnRUYXNrID0gc2VsZi5saXN0Ci0gICAgICAgIHdo
aWxlIGxldCB0YXNrID0gc2VsZi5jdXJyZW50VGFzayB7Ci0gICAgICAgICAgICB2YXIgcGFja2V0
IDogUGFja2V0PyA9IG5pbAotICAgICAgICAgICAgc3dpdGNoIHRhc2suc3RhdGUgewotICAgICAg
ICAgICAgY2FzZSAud2FpdGluZ1dpdGhQYWNrZXQ6Ci0gICAgICAgICAgICAgICAgcGFja2V0ID0g
dGFzay50YWtlUGFja2V0KCkKLSAgICAgICAgICAgICAgICBmYWxsdGhyb3VnaAotICAgICAgICAg
ICAgY2FzZSAucnVuLCAucnVuV2l0aFBhY2tldDoKLSAgICAgICAgICAgICAgICBzZWxmLmN1cnJl
bnRUYXNrID0gdGFzay5ydW4ocGFja2V0OiBwYWNrZXQpCi0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSB0YXNrLm5leHQKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICogQWRkIHRoZSBzcGVjaWZpZWQg
dGFzayB0byB0aGlzIHNjaGVkdWxlci4KLSAgICAqLwotICAgIGZ1bmMgYWRkKHRhc2s6IFRhc2sp
Ci0gICAgewotICAgICAgICB0YXNrLm5leHQgPSBzZWxmLmxpc3QKLSAgICAgICAgc2VsZi5saXN0
ID0gdGFzawotICAgIH0KLQotICAgIC8qKgotICAgICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBj
dXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KLSAgICAq
LwotICAgIGZ1bmMgcmVsZWFzZShkZXZpY2U6IERldmljZSkgLT4gVGFzaz8KLSAgICB7Ci0gICAg
ICAgIGd1YXJkIGxldCB0YXNrIDogRGV2aWNlVGFzayA9IGZpbmQod2hlcmU6IHsgJDAuZGV2aWNl
ID09IGRldmljZSB9KSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBuaWwKLSAgICAgICAgfQot
ICAgICAgICB0YXNrLnJlbGVhc2UoKQotICAgICAgICBpZiB0YXNrLnByaW9yaXR5ID4gc2VsZi5j
dXJyZW50VGFzayEucHJpb3JpdHkgewotICAgICAgICAgICAgcmV0dXJuIHRhc2sKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50VGFzawotICAgIH0KLQotICAgIC8qKgotICAg
ICogQmxvY2sgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0
IHRhc2sgY29udHJvbCBibG9jawotICAgICogdG8gcnVuLiAgVGhlIGJsb2NrZWQgdGFzayB3aWxs
IG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0IGlzIGV4cGxpY2l0bHkKLSAgICAqIHJlbGVh
c2VkLCBldmVuIGlmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIGl0LgotICAgICovCi0gICAgZnVuYyBo
b2xkQ3VycmVudCgpIC0+IFRhc2s/Ci0gICAgewotICAgICAgICBzZWxmLmhvbGRDb3VudCArPSAx
Ci0gICAgICAgIHNlbGYuY3VycmVudFRhc2shLmhvbGQoKQotICAgICAgICByZXR1cm4gc2VsZi5j
dXJyZW50VGFzayEubmV4dAotICAgIH0KLQotICAgIC8qKgotICAgICogU3VzcGVuZCB0aGUgY3Vy
cmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJs
b2NrCi0gICAgKiB0byBydW4uICBJZiBuZXcgd29yayBpcyBhZGRlZCB0byB0aGUgc3VzcGVuZGVk
IHRhc2sgaXQgd2lsbCBiZSBtYWRlIHJ1bm5hYmxlLgotICAgICovCi0gICAgZnVuYyB3YWl0Q3Vy
cmVudCgpIC0+IFRhc2s/Ci0gICAgewotICAgICAgICBzZWxmLmN1cnJlbnRUYXNrIS53YWl0KCkK
LSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2sKLSAgICB9Ci0KLSAgICAvKioKLSAgICAq
IEFkZCB0aGUgc3BlY2lmaWVkIHBhY2tldCB0byB0aGUgZW5kIG9mIHRoZSB3b3JrbGlzdCB1c2Vk
IGJ5IHRoZSB0YXNrCi0gICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldCBhbmQgbWFrZSB0
aGUgdGFzayBydW5uYWJsZSBpZiBpdCBpcyBjdXJyZW50bHkKLSAgICAqIHN1c3BlbmRlZC4KLSAg
ICAqLwotICAgIGZ1bmMgcXVldWUocGFja2V0OiBEZXZpY2VQYWNrZXQpIC0+IFRhc2s/Ci0gICAg
ewotICAgICAgICBsZXQgdGFzayA6IERldmljZVRhc2s/ID0gc2VsZi5maW5kKHdoZXJlOiB7ICQw
LmRldmljZSA9PSBwYWNrZXQuZGV2aWNlIH0pCi0gICAgICAgIHJldHVybiBxdWV1ZUltcGwodGFz
azogdGFzaywgcGFja2V0OiBwYWNrZXQpCi0gICAgfQotCi0gICAgZnVuYyBxdWV1ZShwYWNrZXQ6
IFdvcmtQYWNrZXQpIC0+IFRhc2s/Ci0gICAgewotICAgICAgICBsZXQgdGFzayA6IFdvcmtlclRh
c2s/ID0gc2VsZi5maW5kKHdoZXJlOiB7IF8gaW4gdHJ1ZSB9KQotICAgICAgICByZXR1cm4gcXVl
dWVJbXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQotICAgIH0KLQotICAgIGZ1bmMgaGFu
ZGxlKHBhY2tldDogV29ya1BhY2tldCkgLT4gVGFzaz8KLSAgICB7Ci0gICAgICAgIGxldCB0YXNr
IDogSGFuZGxlclRhc2s/ID0gc2VsZi5maW5kKHdoZXJlOiB7ICQwLmRldmljZSA9PSBwYWNrZXQu
ZGV2aWNlIH0pCi0gICAgICAgIHJldHVybiBxdWV1ZUltcGwodGFzazogdGFzaywgcGFja2V0OiBw
YWNrZXQpCi0gICAgfQotCi0gICAgZnVuYyBoYW5kbGUocGFja2V0OiBEZXZpY2VQYWNrZXQpIC0+
IFRhc2s/Ci0gICAgewotICAgICAgICBsZXQgdGFzayA6IEhhbmRsZXJUYXNrPyA9IHNlbGYuZmlu
ZCh3aGVyZTogeyAkMC5kZXZpY2UgPT0gcGFja2V0LmRldmljZSB9KQotICAgICAgICByZXR1cm4g
cXVldWVJbXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQotICAgIH0KLQotICAgIHByaXZh
dGUgZnVuYyBxdWV1ZUltcGwodGFzazogVGFzaz8sIHBhY2tldDogUGFja2V0KSAtPiBUYXNrPwot
ICAgIHsKLSAgICAgICAgZ3VhcmQgdGFzayAhPSBuaWwgZWxzZSB7IHJldHVybiBuaWwgfQotICAg
ICAgICBzZWxmLnF1ZXVlQ291bnQgKz0gMQotICAgICAgICBwYWNrZXQubGluayA9IG5pbAotICAg
ICAgICByZXR1cm4gdGFzayEuY2hlY2tQcmlvcml0eUFkZCh0YXNrOiBzZWxmLmN1cnJlbnRUYXNr
ISwgcGFja2V0OiBwYWNrZXQpCi0gICAgfQotCi0gICAgcHJpdmF0ZSBmdW5jIGZpbmQ8VDogVGFz
az4od2hlcmUgY29uZGl0aW9uOiAoVCkgLT4gQm9vbCkgLT4gVD8KLSAgICB7Ci0gICAgICAgIHZh
ciB0YXNrID0gc2VsZi5saXN0Ci0gICAgICAgIHdoaWxlIHRhc2sgIT0gbmlsIHsKLSAgICAgICAg
ICAgIGlmIGxldCB0ID0gdGFzayBhcz8gVCB7Ci0gICAgICAgICAgICAgICAgaWYgY29uZGl0aW9u
KHQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXNrID0gdGFzayEubmV4dAotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBuaWwKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9UYXNrLnN3aWZ0IGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvVGFzay5zd2lm
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM3MmI3OWRmNTMxZTU4NzQ3NTQ3MTJl
Y2EzMGNjZTE3MmVkZjhhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC9UYXNrLnN3aWZ0CisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSov
Ci0KLWVudW0gUHJpb3JpdHkgOiBJbnQgewotICAgIGNhc2UgSWRsZSA9IDAKLSAgICBjYXNlIFdv
cmtlciA9IDEwMDAKLSAgICBjYXNlIEhhbmRsZXJBID0gMjAwMAotICAgIGNhc2UgSGFuZGxlckIg
PSAzMDAwCi0gICAgY2FzZSBEZXZpY2VBID0gNDAwMAotICAgIGNhc2UgRGV2aWNlQiA9IDUwMDAK
LQotICAgIHN0YXRpYyBmdW5jID4obGhzOlNlbGYsIHJoczpTZWxmKSAtPiBCb29sIAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGxocy5yYXdWYWx1ZSA+IHJocy5yYXdWYWx1ZQotICAgIH0KLX0KLQot
Y2xhc3MgVGFzayB7Ci0gICAgbGV0IHNjaGVkdWxlciA6IFNjaGVkdWxlcgotICAgIGxldCBwcmlv
cml0eSA6IFByaW9yaXR5Ci0gICAgdmFyIG5leHQgOiBUYXNrPyA9IG5pbAotICAgIHByaXZhdGUo
c2V0KSB2YXIgcXVldWUgOiBQYWNrZXQ/Ci0gICAgcHJpdmF0ZShzZXQpIHZhciBzdGF0ZSA6IFN0
YXRlID0gLndhaXRpbmcKLQotICAgIHN0cnVjdCBTdGF0ZSA6IE9wdGlvblNldCB7Ci0gICAgICAg
IGxldCByYXdWYWx1ZTogSW50Ci0KLSAgICAgICAgc3RhdGljIGxldCBydW4gOiBTdGF0ZSA9IFtd
Ci0gICAgICAgIHN0YXRpYyBsZXQgaGFzUGFja2V0ID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMCkK
LSAgICAgICAgc3RhdGljIGxldCB3YWl0aW5nID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMSkKLSAg
ICAgICAgc3RhdGljIGxldCBoZWxkID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMikKLQotICAgICAg
ICBzdGF0aWMgbGV0IHJ1bldpdGhQYWNrZXQgPSBoYXNQYWNrZXQudW5pb24ocnVuKQotICAgICAg
ICBzdGF0aWMgbGV0IHdhaXRpbmdXaXRoUGFja2V0ID0gaGFzUGFja2V0LnVuaW9uKHdhaXRpbmcp
Ci0KLSAgICAgICAgaW5pdChyYXdWYWx1ZTogSW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBz
ZWxmLnJhd1ZhbHVlID0gcmF3VmFsdWUKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmMgcnVu
KHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KLSAgICB7Ci0gICAgICAgIHByZWNvbmRpdGlvbkZh
aWx1cmUoIlRoaXMgbWV0aG9kIG11c3QgYmUgb3ZlcnJpZGRlbiIpIAotICAgIH0KLQotICAgIGZ1
bmMgcmVsZWFzZSgpCi0gICAgewotICAgICAgICBzZWxmLnN0YXRlLnJlbW92ZSguaGVsZCkKLSAg
ICB9Ci0KLSAgICBmdW5jIGhvbGQoKQotICAgIHsKLSAgICAgICAgc2VsZi5zdGF0ZS5pbnNlcnQo
LmhlbGQpCi0gICAgfQotCi0gICAgZnVuYyB3YWl0KCkKLSAgICB7Ci0gICAgICAgIHNlbGYuc3Rh
dGUuaW5zZXJ0KC53YWl0aW5nKQotICAgIH0KLQotICAgIGZ1bmMgcmVzdW1lKCkKLSAgICB7Ci0g
ICAgICAgIHNlbGYuc3RhdGUucmVtb3ZlKC53YWl0aW5nKQotICAgIH0KLQotICAgIGZ1bmMgdGFr
ZVBhY2tldCgpIC0+IFBhY2tldAotICAgIHsKLSAgICAgICAgbGV0IHBhY2tldCA9IHNlbGYucXVl
dWUhCi0gICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQubGluawotICAgICAgICBpZiBzZWxmLnF1
ZXVlID09IG5pbCB7Ci0gICAgICAgICAgICBzZWxmLnN0YXRlID0gLnJ1bgotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IC5ydW5XaXRoUGFja2V0Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHBhY2tldAotICAgIH0KLQotICAgIGZ1bmMgY2hlY2tQcmlvcml0eUFk
ZCh0YXNrOiBUYXNrLCBwYWNrZXQ6IFBhY2tldCkgLT4gVGFzawotICAgIHsKLSAgICAgICAgaWYg
c2VsZi5xdWV1ZSA9PSBuaWwgewotICAgICAgICAgICAgc2VsZi5xdWV1ZSA9IHBhY2tldAotICAg
ICAgICAgICAgc2VsZi5zdGF0ZS5pbnNlcnQoLmhhc1BhY2tldCkKLSAgICAgICAgICAgIGlmIHNl
bGYucHJpb3JpdHkgPiB0YXNrLnByaW9yaXR5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
ZgotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2VsZi5xdWV1
ZSA9IHBhY2tldC5hZGRUbyhxdWV1ZTogc2VsZi5xdWV1ZSkKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGFzawotICAgIH0KLQotICAgIGluaXQoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIHByaW9y
aXR5OiBQcmlvcml0eSwgcXVldWU6IFBhY2tldD8gPSBuaWwpCi0gICAgewotICAgICAgICBzZWxm
LnNjaGVkdWxlciA9IHNjaGVkdWxlcgotICAgICAgICBzZWxmLnByaW9yaXR5ID0gcHJpb3JpdHkK
LSAgICAgICAgc2VsZi5xdWV1ZSA9IHF1ZXVlCi0gICAgICAgIGlmIHF1ZXVlICE9IG5pbCB7Ci0g
ICAgICAgICAgICBzZWxmLnN0YXRlLmluc2VydCguaGFzUGFja2V0KQotICAgICAgICB9Ci0gICAg
fQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0
L1JpY2hhcmRzU3dpZnQvV29ya2VyVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVu
Y2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1dvcmtlclRhc2suc3dpZnQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNTFhMWJhNTVjNmE2NTg3ODE5YTQ4Y2JjZDgxZjRmY2Q4
NDQxNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvV29ya2Vy
VGFzay5zd2lmdAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLWNs
YXNzIFdvcmtlclRhc2sgOiBUYXNrIHsKLSAgICBwcml2YXRlIHZhciBkZXZpY2UgOiBEZXZpY2Ug
PSAuQQotICAgIHByaXZhdGUgdmFyIGxldHRlckluZGV4IDogSW50ID0gMAotCi0gICAgc3RhdGlj
IGZ1bmMgY3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1
ZXVlOiBQYWNrZXQpCi0gICAgewotICAgICAgICBsZXQgdGFzayA9IFdvcmtlclRhc2soc2NoZWR1
bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQotICAgICAg
ICBzY2hlZHVsZXIuYWRkKHRhc2s6IHRhc2spCi0gICAgfQotCi0gICAgb3ZlcnJpZGUgZnVuYyBy
dW4ocGFja2V0OiBQYWNrZXQ/KSAtPiBUYXNrPwotICAgIHsKLSAgICAgICAgaWYgcGFja2V0ID09
IG5pbCB7Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQoKQot
ICAgICAgICB9Ci0KLSAgICAgICAgc2VsZi5kZXZpY2UgPSBzZWxmLmRldmljZSA9PSAuQSA/IC5C
IDogLkEKLQotICAgICAgICBsZXQgd29yayA9IHBhY2tldCBhcyEgV29ya1BhY2tldAotICAgICAg
ICB3b3JrLmRldmljZSA9IHNlbGYuZGV2aWNlCi0gICAgICAgIHdvcmsucHJvY2Vzc2VkID0gMAot
ICAgICAgICBmb3IgaSBpbiAwLi4uKFdvcmtQYWNrZXQuU0laRSAtIDEpIHsKLSAgICAgICAgICAg
IHNlbGYubGV0dGVySW5kZXggKz0gMQotICAgICAgICAgICAgaWYgc2VsZi5sZXR0ZXJJbmRleCA+
IDI2IHsKLSAgICAgICAgICAgICAgICBzZWxmLmxldHRlckluZGV4ID0gMQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgd29yay5kYXRhW2ldID0gc2VsZi5sZXR0ZXJJbmRleAotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5oYW5kbGUocGFja2V0OiB3b3JrKQotICAg
IH0KLQotICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgcHJpb3JpdHk6IFBy
aW9yaXR5LCBxdWV1ZTogUGFja2V0KQotICAgIHsKLSAgICAgICAgc3VwZXIuaW5pdChzY2hlZHVs
ZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVldWUpCi0gICAgfQot
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1Jp
Y2hhcmRzU3dpZnQvbWFpbi5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFy
ZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVlNzU4MTU4NDA4NzhhN2FmZjZjYjVjMDRmYWNmNjZiNzk4MDEyZDEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvbWFpbi5zd2lmdAorKysgL2Rldi9u
dWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLWltcG9ydCBRdWFydHpDb3JlCi0KLWxl
dCBpdGVyYXRpb25zID0gNTAKLWxldCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGltZSgpCi1mb3Ig
XyBpbiAxLi4uaXRlcmF0aW9ucyB7Ci0gICAgcnVuUmljaGFyZHMoKQotfQotbGV0IGVuZCA9IENB
Q3VycmVudE1lZGlhVGltZSgpCi1wcmludChJbnQoKGVuZC1zdGFydCkgKiAxMDAwKSkKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3
aWZ0L3JpY2hhcmRzLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3
aWZ0L1JpY2hhcmRzU3dpZnQvcmljaGFyZHMuc3dpZnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdkMDM1YTkxY2NiN2ZmYTZlOWRmOTI3ZTM4NmJiMDUxYjViNWM2NDIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvcmljaGFyZHMuc3dpZnQKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi1pbXBvcnQgRGFyd2luCi0KLWxl
dCBFWFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIzMjI7Ci1sZXQgRVhQRUNURURfSE9MRF9DT1VOVCA9
IDkyODsKLQotZnVuYyBydW5SaWNoYXJkcygpCi17Ci0gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVs
ZXIoKQotCi0gIElkbGVUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6
IC5JZGxlKQotCi0gICh7Ci0gICAgICB2YXIgcXVldWUgPSBXb3JrUGFja2V0KGxpbms6IG5pbCkK
LSAgICAgIHF1ZXVlID0gV29ya1BhY2tldChsaW5rOiBxdWV1ZSkKLSAgICAgIFdvcmtlclRhc2su
Y3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHkuV29ya2VyLCBx
dWV1ZTogcXVldWUpCi0gIH0pKCkKLQotICAoewotICAgICAgdmFyIHF1ZXVlID0gRGV2aWNlUGFj
a2V0KGRldmljZTogLkEsIGxpbms6IG5pbCkKLSAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRl
dmljZTogLkEsIGxpbms6IHF1ZXVlKQotICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNl
OiAuQSwgbGluazogcXVldWUpCi0gICAgICBIYW5kbGVyVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBz
Y2hlZHVsZXIsIGRldmljZTogLkEsIHByaW9yaXR5OiBQcmlvcml0eS5IYW5kbGVyQSwgcXVldWU6
IHF1ZXVlKQotICB9KSgpCi0KLSAgKHsKLSAgICAgIHZhciBxdWV1ZSA9IERldmljZVBhY2tldChk
ZXZpY2U6IC5CLCBsaW5rOiBuaWwpCi0gICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6
IC5CLCBsaW5rOiBxdWV1ZSkKLSAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmljZTogLkIs
IGxpbms6IHF1ZXVlKQotICAgICAgSGFuZGxlclRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1
bGVyLCBkZXZpY2U6IC5CLCBwcmlvcml0eTogUHJpb3JpdHkuSGFuZGxlckIsIHF1ZXVlOiBxdWV1
ZSkKLSAgfSkoKQotCi0gIERldmljZVRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBk
ZXZpY2U6IC5BLCBwcmlvcml0eTogUHJpb3JpdHkuRGV2aWNlQSkKLSAgRGV2aWNlVGFzay5jcmVh
dGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogLkIsIHByaW9yaXR5OiBQcmlvcml0eS5E
ZXZpY2VCKQotCi0gIHNjaGVkdWxlci5zY2hlZHVsZSgpCi0KLSAgaWYgc2NoZWR1bGVyLnF1ZXVl
Q291bnQgIT0gRVhQRUNURURfUVVFVUVfQ09VTlQgfHwgc2NoZWR1bGVyLmhvbGRDb3VudCAhPSBF
WFBFQ1RFRF9IT0xEX0NPVU5UIHsKLSAgICBwcmludCgiRXJyb3IgZHVyaW5nIGV4ZWN1dGlvbjog
cXVldWVDb3VudCA9IFwoc2NoZWR1bGVyLnF1ZXVlQ291bnQpLCBob2xkQ291bnQgPSBcKHNjaGVk
dWxlci5ob2xkQ291bnQpLiIpCi0gICAgZXhpdCgxKQotICB9Ci19CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJk
c01vc3RseUMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlDL1JpY2hhcmRzTW9zdGx5Qy54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YzA5MjU2MGU0MDgwMzQ4OTllMWQ5MjM3
MTA2NzU2M2ZlN2NlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDMwNCBAQAorLy8gISQqVVRGOCokIQoreworCWFy
Y2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDUw
OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTE0
MEFBQzM3MjQ5OUJEN0EwMDAxRjExRSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDMzYyNDk5QkQ2QzAwMDFGMTFFIC8q
IHJpY2hhcmRzLmpzICovOyB9OworCQkxNEYzQjBDNjI1NkFDRjVCMDBBQzg0MjEgLyogcmljaGFy
ZHMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNC
MEM1MjU2QUNGNUEwMEFDODQyMSAvKiByaWNoYXJkcy5jICovOyB9OworLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovID0geworCQkJ
aXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwor
CQkJZHN0UGF0aCA9ICIiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAo
CisJCQkJMTQwQUFDMzcyNDk5QkQ3QTAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxl
cyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTE0MEFBQzM2MjQ5OUJENkMwMDAxRjEx
RSAvKiByaWNoYXJkcy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IHJpY2hhcmRzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDE1QUQyMjI0OTlC
QzVDMDA1QkIyRTQgLyogUmljaGFyZHNNb3N0bHlDICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJkc01vc3RseUM7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTE0RjNCMEM1MjU2QUNGNUEwMEFDODQyMSAvKiByaWNoYXJk
cy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSByaWNoYXJkcy5jOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MTVBRDFG
MjQ5OUJDNUMwMDVCQjJFNCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0MTVBRDE5MjQ5OUJDNUIwMDVCQjJFNCA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFEMjQyNDk5QkM1
QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5QyAqLywKKwkJCQkxNDE1QUQyMzI0OTlCQzVDMDA1
QkIyRTQgLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJMTQxNUFEMjMyNDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyMjI0OTlCQzVDMDA1
QkIyRTQgLyogUmljaGFyZHNNb3N0bHlDICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MTVBRDI0MjQ5OUJDNUMwMDVC
QjJFNCAvKiBSaWNoYXJkc01vc3RseUMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTE0RjNCMEM1MjU2QUNGNUEwMEFDODQyMSAvKiByaWNoYXJkcy5jICov
LAorCQkJCTE0MEFBQzM2MjQ5OUJENkMwMDAxRjExRSAvKiByaWNoYXJkcy5qcyAqLywKKwkJCSk7
CisJCQlwYXRoID0gUmljaGFyZHNNb3N0bHlDOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRh
cmdldCBzZWN0aW9uICovCisJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01v
c3RseUMgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMTQxNUFEMjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJkc01vc3RseUMiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8s
CisJCQkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMTQx
NUFEMjAyNDk5QkM1QzAwNUJCMkU0IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1
bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUmlj
aGFyZHNNb3N0bHlDOworCQkJcHJvZHVjdE5hbWUgPSBSaWNoYXJkc01vc3RseVN3aWZ0OworCQkJ
cHJvZHVjdFJlZmVyZW5jZSA9IDE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01v
c3RseUMgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wi
OworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WFByb2plY3Qgc2VjdGlvbiAqLworCQkxNDE1QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVj
dCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsK
KwkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDEyMDA7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9
IDEyMDA7CisJCQkJVGFyZ2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJMTQxNUFEMjEyNDk5QkM1QzAw
NUJCMkU0ID0geworCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gMTIuMDsKKwkJCQkJCUxh
c3RTd2lmdE1pZ3JhdGlvbiA9IDEyMDA7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNNb3N0bHlDIiAqLzsKKwkJ
CWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDkuMyI7CisJCQlkZXZlbG9wbWVudFJlZ2lv
biA9IGVuOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMg
PSAoCisJCQkJZW4sCisJCQkJQmFzZSwKKwkJCSk7CisJCQltYWluR3JvdXAgPSAxNDE1QUQxOTI0
OTlCQzVCMDA1QkIyRTQ7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSAxNDE1QUQyMzI0OTlCQzVDMDA1
QkIyRTQgLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVj
dFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0
IC8qIFJpY2hhcmRzTW9zdGx5QyAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJ
MTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCQkxNEYzQjBDNjI1NkFDRjVCMDBBQzg0MjEgLyogcmljaGFyZHMuYyBpbiBT
b3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkxNDE1QUQyNzI0OTlCQzVD
MDA1QkIyRTQgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87
CisJCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFMWVpFUl9O
VU1CRVJfT0JKRUNUX0NPTlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19DWFhf
TEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAi
bGliYysrIjsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFC
TEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0RFUFJFQ0FURURfT0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9ET0NV
TUVOVEFUSU9OX0NPTU1FTlRTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9O
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
T0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xV
REVfSU5fRlJBTUVXT1JLX0hFQURFUiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1Bf
QU5BTFlTSVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1VO
R1VBUkRFRF9BVkFJTEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19XQVJOX1VO
UkVBQ0hBQkxFX0NPREUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9N
QVRDSCA9IFlFUzsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gZHdhcmY7CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZ
RVM7CisJCQkJRU5BQkxFX1RFU1RBQklMSVRZID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NU
QU5EQVJEID0gZ251MTE7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX05P
X0NPTU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJ
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJ
CQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9S
OworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNF
RF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJV
R19JTkZPID0gSU5DTFVERV9TT1VSQ0U7CisJCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlP
TkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRf
QUNUSVZFX0NPTVBJTEFUSU9OX0NPTkRJVElPTlMgPSBERUJVRzsKKwkJCQlTV0lGVF9PUFRJTUla
QVRJT05fTEVWRUwgPSAiLU9ub25lIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJ
CTE0MTVBRDI4MjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJ
CQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJ
VkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNM
QU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZ
RVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9P
QkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJ
TkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04g
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOwor
CQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05V
TExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlO
X1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFO
R19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNU
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7
CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
X0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5P
OworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJ
CUVOQUJMRV9OU19BU1NFUlRJT05TID0gTk87CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NF
TkQgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0Nf
Tk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsK
KwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VO
SU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
RlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdf
SU5GTyA9IE5POworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29z
eDsKKwkJCQlTV0lGVF9DT01QSUxBVElPTl9NT0RFID0gd2hvbGVtb2R1bGU7CisJCQkJU1dJRlRf
T1BUSU1JWkFUSU9OX0xFVkVMID0gIi1PIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKwkJMTQxNUFEMkEyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovID0geworCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0VO
QUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJ
CQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJ
CSJAZXhlY3V0YWJsZV9wYXRoLy4uL0ZyYW1ld29ya3MiLAorCQkJCQkiQGxvYWRlcl9wYXRoLy4u
L0ZyYW1ld29ya3MiLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVWRUwgPSAiLU9ub25lIjsKKwkJCQlTV0lGVF9W
RVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxNUFEMkIy
NDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMg
PSBZRVM7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCUxEX1JVTlBBVEhf
U0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIkBleGVjdXRhYmxl
X3BhdGgvLi4vRnJhbWV3b3JrcyIsCisJCQkJCSJAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3JrcyIs
CisJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZU
X1ZFUlNJT04gPSA1LjA7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQg
WENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRp
b25MaXN0IHNlY3Rpb24gKi8KKwkJMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNNb3N0bHlDIiAqLyA9IHsK
KwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAorCQkJCTE0MTVBRDI3MjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLywKKwkJCQkxNDE1QUQy
ODI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxl
YXNlOworCQl9OworCQkxNDE1QUQyOTI0OTlCQzVDMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzTW9zdGx5QyIgKi8gPSB7CisJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
KwkJCQkxNDE1QUQyQTI0OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCisJCQkJMTQxNUFEMkIy
NDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJv
b3RPYmplY3QgPSAxNDE1QUQxQTI0OTlCQzVCMDA1QkIyRTQgLyogUHJvamVjdCBvYmplY3QgKi87
Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1Jp
Y2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3Nj
aGVtZXMvUmljaGFyZHNNb3N0bHlDLnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseUMvUmljaGFyZHNNb3N0bHlDLnhjb2RlcHJvai94
Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5Qy54Y3NjaGVtZQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNWZmNzk5ZTg5NjI2NjYwMzQ5ZjE0YTY1OGI3ZjJlYWIzNDc5NTIwCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3Rs
eUMvUmljaGFyZHNNb3N0bHlDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hh
cmRzTW9zdGx5Qy54Y3NjaGVtZQpAQCAtMCwwICsxLDgxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJVVEYtOCI/PgorPFNjaGVtZQorICAgTGFzdFVwZ3JhZGVWZXJzaW9uID0gIjEy
MDAiCisgICB2ZXJzaW9uID0gIjEuNyI+CisgICA8QnVpbGRBY3Rpb24KKyAgICAgIHBhcmFsbGVs
aXplQnVpbGRhYmxlcyA9ICJZRVMiCisgICAgICBidWlsZEltcGxpY2l0RGVwZW5kZW5jaWVzID0g
IllFUyI+CisgICAgICA8QnVpbGRBY3Rpb25FbnRyaWVzPgorICAgICAgICAgPEJ1aWxkQWN0aW9u
RW50cnkKKyAgICAgICAgICAgIGJ1aWxkRm9yVGVzdGluZyA9ICJZRVMiCisgICAgICAgICAgICBi
dWlsZEZvclJ1bm5pbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JQcm9maWxpbmcgPSAi
WUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBcmNoaXZpbmcgPSAiWUVTIgorICAgICAgICAgICAg
YnVpbGRGb3JBbmFseXppbmcgPSAiWUVTIj4KKyAgICAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVu
Y2UKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAg
ICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0
IgorICAgICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc01vc3RseUMiCisgICAg
ICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzTW9zdGx5QyIKKyAgICAgICAgICAg
ICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5Qy54Y29k
ZXByb2oiPgorICAgICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICAgICA8L0J1
aWxkQWN0aW9uRW50cnk+CisgICAgICA8L0J1aWxkQWN0aW9uRW50cmllcz4KKyAgIDwvQnVpbGRB
Y3Rpb24+CisgICA8VGVzdEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVn
IgorICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3Vu
ZGF0aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9
ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIHNob3VsZFVz
ZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIj4KKyAgICAgIDxUZXN0YWJsZXM+CisgICAgICA8
L1Rlc3RhYmxlcz4KKyAgIDwvVGVzdEFjdGlvbj4KKyAgIDxMYXVuY2hBY3Rpb24KKyAgICAgIGJ1
aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlm
aWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2Vs
ZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5j
aGVyLkxMREIiCisgICAgICBsYXVuY2hTdHlsZSA9ICIwIgorICAgICAgdXNlQ3VzdG9tV29ya2lu
Z0RpcmVjdG9yeSA9ICJOTyIKKyAgICAgIGlnbm9yZXNQZXJzaXN0ZW50U3RhdGVPbkxhdW5jaCA9
ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIKKyAgICAgIGRlYnVn
U2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKKyAgICAgIGFsbG93TG9jYXRpb25TaW11bGF0
aW9uID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBy
dW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNl
CisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAg
ICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAg
ICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlDIgorICAgICAgICAgICAgQmx1
ZXByaW50TmFtZSA9ICJSaWNoYXJkc01vc3RseUMiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29u
dGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc01vc3RseUMueGNvZGVwcm9qIj4KKyAgICAgICAg
IDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+
CisgICA8L0xhdW5jaEFjdGlvbj4KKyAgIDxQcm9maWxlQWN0aW9uCisgICAgICBidWlsZENvbmZp
Z3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYg
PSAiWUVTIgorICAgICAgc2F2ZWRUb29sSWRlbnRpZmllciA9ICIiCisgICAgICB1c2VDdXN0b21X
b3JraW5nRGlyZWN0b3J5ID0gIk5PIgorICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAi
WUVTIj4KKyAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxl
RGVidWdnaW5nTW9kZSA9ICIwIj4KKyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAg
ICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJsdWVw
cmludElkZW50aWZpZXIgPSAiMTQxNUFEMjEyNDk5QkM1QzAwNUJCMkU0IgorICAgICAgICAgICAg
QnVpbGRhYmxlTmFtZSA9ICJSaWNoYXJkc01vc3RseUMiCisgICAgICAgICAgICBCbHVlcHJpbnRO
YW1lID0gIlJpY2hhcmRzTW9zdGx5QyIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIg
PSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5Qy54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWls
ZGFibGVSZWZlcmVuY2U+CisgICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgIDwv
UHJvZmlsZUFjdGlvbj4KKyAgIDxBbmFseXplQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRp
b24gPSAiRGVidWciPgorICAgPC9BbmFseXplQWN0aW9uPgorICAgPEFyY2hpdmVBY3Rpb24KKyAg
ICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgorICAgICAgcmV2ZWFsQXJjaGl2ZUlu
T3JnYW5pemVyID0gIllFUyI+CisgICA8L0FyY2hpdmVBY3Rpb24+CisgICA8SW5zdGFsbEFjdGlv
bgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiPgorICAgPC9JbnN0YWxsQWN0
aW9uPgorPC9TY2hlbWU+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Vw
Y29taW5nQVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMvcmljaGFyZHMuYyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlDL1JpY2hh
cmRzTW9zdGx5Qy9yaWNoYXJkcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MjI5NDdhYThhMGU1Y2I4YzY3ZmFi
ODIyNWYzM2I5YTBiYWZlYmUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMvcmljaGFy
ZHMuYwpAQCAtMCwwICsxLDQ4OCBAQAorLyogIEMgdmVyc2lvbiBvZiB0aGUgc3lzdGVtcyBwcm9n
cmFtbWluZyBsYW5ndWFnZSBiZW5jaG1hcmsKKyoqICBBdXRob3I6ICBNLiBKLiBKb3JkYW4gIENh
bWJyaWRnZSBDb21wdXRlciBMYWJvcmF0b3J5LiAKKyoqICAKKyoqICBNb2RpZmllZCBieTogIE0u
IFJpY2hhcmRzLCBOb3YgMTk5NgorKiogICAgdG8gYmUgQU5TSSBDIGFuZCBydW5uYWJsZSBvbiA2
NCBiaXQgbWFjaGluZXMgKyBvdGhlciBtaW5vciBjaGFuZ2VzCisqKiAgTW9kaWZpZWQgYnk6ICBN
LiBSaWNoYXJkcywgMjAgT2N0IDE5OTgKKyoqICAgIG1hZGUgbWlub3IgY29ycmVjdGlvbnMgdG8g
aW1wcm92ZSBBTlNJIGNvbXBsaWFuY2UgKHN1Z2dlc3RlZAorKiogICAgYnkgRGF2aWQgTGV2aW5l
KQorKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CisKKyNpZiAxCisjZGVmaW5lICAgICAgICAgICAgICAgIENvdW50ICAg
ICAgICAgICAxMDAwCisjZGVmaW5lICAgICAgICAgICAgICAgIFFwa3Rjb3VudHZhbCAgICAyMzIy
CisjZGVmaW5lICAgICAgICAgICAgICAgIEhvbGRjb3VudHZhbCAgICA5MjgKKyNlbmRpZgorCisj
ZGVmaW5lICAgICAgICAgICAgICAgIFRSVUUgICAgICAgICAgICAxCisjZGVmaW5lICAgICAgICAg
ICAgICAgIEZBTFNFICAgICAgICAgICAwCisjZGVmaW5lICAgICAgICAgICAgICAgIE1BWElOVCAg
ICAgICAgICAzMjc2NworCisjZGVmaW5lICAgICAgICAgICAgICAgIEJVRlNJWkUgICAgICAgICAz
CisjZGVmaW5lICAgICAgICAgICAgICAgIElfSURMRSAgICAgICAgICAxCisjZGVmaW5lICAgICAg
ICAgICAgICAgIElfV09SSyAgICAgICAgICAyCisjZGVmaW5lICAgICAgICAgICAgICAgIElfSEFO
RExFUkEgICAgICAzCisjZGVmaW5lICAgICAgICAgICAgICAgIElfSEFORExFUkIgICAgICA0Cisj
ZGVmaW5lICAgICAgICAgICAgICAgIElfREVWQSAgICAgICAgICA1CisjZGVmaW5lICAgICAgICAg
ICAgICAgIElfREVWQiAgICAgICAgICA2CisjZGVmaW5lICAgICAgICAgICAgICAgIFBLVEJJVCAg
ICAgICAgICAxCisjZGVmaW5lICAgICAgICAgICAgICAgIFdBSVRCSVQgICAgICAgICAyCisjZGVm
aW5lICAgICAgICAgICAgICAgIEhPTERCSVQgICAgICAgICA0CisjZGVmaW5lICAgICAgICAgICAg
ICAgIE5PVFBLVEJJVCAgICAgICAhMQorI2RlZmluZSAgICAgICAgICAgICAgICBOT1RXQUlUQklU
ICAgICAgITIKKyNkZWZpbmUgICAgICAgICAgICAgICAgTk9USE9MREJJVCAgICAgIDBYRkZGQgor
CisjZGVmaW5lICAgICAgICAgICAgICAgIFNfUlVOICAgICAgICAgICAwCisjZGVmaW5lICAgICAg
ICAgICAgICAgIFNfUlVOUEtUICAgICAgICAxCisjZGVmaW5lICAgICAgICAgICAgICAgIFNfV0FJ
VCAgICAgICAgICAyCisjZGVmaW5lICAgICAgICAgICAgICAgIFNfV0FJVFBLVCAgICAgICAzCisj
ZGVmaW5lICAgICAgICAgICAgICAgIFNfSE9MRCAgICAgICAgICA0CisjZGVmaW5lICAgICAgICAg
ICAgICAgIFNfSE9MRFBLVCAgICAgICA1CisjZGVmaW5lICAgICAgICAgICAgICAgIFNfSE9MRFdB
SVQgICAgICA2CisjZGVmaW5lICAgICAgICAgICAgICAgIFNfSE9MRFdBSVRQS1QgICA3CisKKyNk
ZWZpbmUgICAgICAgICAgICAgICAgS19ERVYgICAgICAgICAgIDEwMDAKKyNkZWZpbmUgICAgICAg
ICAgICAgICAgS19XT1JLICAgICAgICAgIDEwMDEKKworc3RydWN0IHBhY2tldAoreworICAgIHN0
cnVjdCBwYWNrZXQgICpwX2xpbms7CisgICAgaW50ICAgICAgICAgICAgIHBfaWQ7CisgICAgaW50
ICAgICAgICAgICAgIHBfa2luZDsKKyAgICBpbnQgICAgICAgICAgICAgcF9hMTsKKyAgICBjaGFy
ICAgICAgICAgICAgcF9hMltCVUZTSVpFKzFdOworfTsKKworc3RydWN0IHRhc2sKK3sKKyAgICBz
dHJ1Y3QgdGFzayAgICAqdF9saW5rOworICAgIGludCAgICAgICAgICAgICB0X2lkOworICAgIGlu
dCAgICAgICAgICAgICB0X3ByaTsKKyAgICBzdHJ1Y3QgcGFja2V0ICAqdF93a3E7CisgICAgaW50
ICAgICAgICAgICAgIHRfc3RhdGU7CisgICAgc3RydWN0IHRhc2sgICAgKigqdF9mbikoc3RydWN0
IHBhY2tldCAqKTsKKyAgICBsb25nICAgICAgICAgICAgdF92MTsKKyAgICBsb25nICAgICAgICAg
ICAgdF92MjsKK307CisKK2NoYXIgIGFscGhhYmV0WzI4XSA9ICIwQUJDREVGR0hJSktMTU5PUFFS
U1RVVldYWVoiOworc3RydWN0IHRhc2sgKnRhc2t0YWJbMTFdICA9ICB7KHN0cnVjdCB0YXNrICop
MTAsMCwwLDAsMCwwLDAsMCwwLDAsMH07CitzdHJ1Y3QgdGFzayAqdGFza2xpc3QgICAgPSAgMDsK
K3N0cnVjdCB0YXNrICp0Y2I7Citsb25nICAgIHRhc2tpZDsKK2xvbmcgICAgdjE7Citsb25nICAg
IHYyOworaW50ICAgICBxcGt0Y291bnQgICAgPSAgMDsKK2ludCAgICAgaG9sZGNvdW50ICAgID0g
IDA7CitpbnQgICAgIHRyYWNpbmcgICAgICA9ICAwOworaW50ICAgICBsYXlvdXQgICAgICAgPSAg
MDsKKwordm9pZCBhcHBlbmQoc3RydWN0IHBhY2tldCAqcGt0LCBzdHJ1Y3QgcGFja2V0ICpwdHIp
OworCit2b2lkIGNyZWF0ZXRhc2soaW50IGlkLAorICAgICAgICAgICAgICAgIGludCBwcmksCisg
ICAgICAgICAgICAgICAgc3RydWN0IHBhY2tldCAqd2txLAorICAgICAgICAgICAgICAgIGludCBz
dGF0ZSwKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFzayAqKCpmbikoc3RydWN0IHBhY2tldCAq
KSwKKyAgICAgICAgICAgICAgICBsb25nIHYxLAorICAgICAgICAgICAgICAgIGxvbmcgdjIpCit7
CisgICAgc3RydWN0IHRhc2sgKnQgPSAoc3RydWN0IHRhc2sgKiltYWxsb2Moc2l6ZW9mKHN0cnVj
dCB0YXNrKSk7CisKKyAgICB0YXNrdGFiW2lkXSA9IHQ7CisgICAgdC0+dF9saW5rICAgPSB0YXNr
bGlzdDsKKyAgICB0LT50X2lkICAgICA9IGlkOworICAgIHQtPnRfcHJpICAgID0gcHJpOworICAg
IHQtPnRfd2txICAgID0gd2txOworICAgIHQtPnRfc3RhdGUgID0gc3RhdGU7CisgICAgdC0+dF9m
biAgICAgPSBmbjsKKyAgICB0LT50X3YxICAgICA9IHYxOworICAgIHQtPnRfdjIgICAgID0gdjI7
CisgICAgdGFza2xpc3QgICAgPSB0OworfQorCitzdHJ1Y3QgcGFja2V0ICpwa3Qoc3RydWN0IHBh
Y2tldCAqbGluaywgaW50IGlkLCBpbnQga2luZCkKK3sKKyAgICBpbnQgaTsKKyAgICBzdHJ1Y3Qg
cGFja2V0ICpwID0gKHN0cnVjdCBwYWNrZXQgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBwYWNrZXQp
KTsKKworICAgIGZvciAoaT0wOyBpPD1CVUZTSVpFOyBpKyspCisgICAgICAgIHAtPnBfYTJbaV0g
PSAwOworCisgICAgcC0+cF9saW5rID0gbGluazsKKyAgICBwLT5wX2lkID0gaWQ7CisgICAgcC0+
cF9raW5kID0ga2luZDsKKyAgICBwLT5wX2ExID0gMDsKKworICAgIHJldHVybiAocCk7Cit9CisK
K3ZvaWQgdHJhY2UoY2hhciBhKQoreworICAgaWYgKCAtLWxheW91dCA8PSAwICkKKyAgIHsKKyAg
ICAgICAgbGF5b3V0ID0gNTA7CisgICAgfQorCit9CisKK3ZvaWQgc2NoZWR1bGUoKQoreworICAg
IHdoaWxlICggdGNiICE9IDAgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBhY2tldCAqcGt0Owor
ICAgICAgICBzdHJ1Y3QgdGFzayAqbmV3dGNiOworCisgICAgICAgIHBrdD0wOworCisgICAgICAg
IHN3aXRjaCAoIHRjYi0+dF9zdGF0ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgU19X
QUlUUEtUOgorICAgICAgICAgICAgICAgIHBrdCA9IHRjYi0+dF93a3E7CisgICAgICAgICAgICAg
ICAgdGNiLT50X3drcSA9IHBrdC0+cF9saW5rOworICAgICAgICAgICAgICAgIHRjYi0+dF9zdGF0
ZSA9IHRjYi0+dF93a3EgPT0gMCA/IFNfUlVOIDogU19SVU5QS1Q7CisKKyAgICAgICAgICAgIGNh
c2UgU19SVU46CisgICAgICAgICAgICBjYXNlIFNfUlVOUEtUOgorICAgICAgICAgICAgICAgIHRh
c2tpZCA9IHRjYi0+dF9pZDsKKyAgICAgICAgICAgICAgICB2MSA9IHRjYi0+dF92MTsKKyAgICAg
ICAgICAgICAgICB2MiA9IHRjYi0+dF92MjsKKyAgICAgICAgICAgICAgICBpZiAodHJhY2luZykg
eworICAgICAgICAgIHRyYWNlKHRhc2tpZCsnMCcpOworICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbmV3dGNiID0gKCoodGNiLT50X2ZuKSkocGt0KTsKKyAgICAgICAgICAgICAgICB0Y2ItPnRf
djEgPSB2MTsKKyAgICAgICAgICAgICAgICB0Y2ItPnRfdjIgPSB2MjsKKyAgICAgICAgICAgICAg
ICB0Y2IgPSBuZXd0Y2I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNh
c2UgU19XQUlUOgorICAgICAgICAgICAgY2FzZSBTX0hPTEQ6CisgICAgICAgICAgICBjYXNlIFNf
SE9MRFBLVDoKKyAgICAgICAgICAgIGNhc2UgU19IT0xEV0FJVDoKKyAgICAgICAgICAgIGNhc2Ug
U19IT0xEV0FJVFBLVDoKKyAgICAgICAgICAgICAgICB0Y2IgPSB0Y2ItPnRfbGluazsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0cnVjdCB0YXNrICp3YWl0Xyh2b2lk
KQoreworICAgIHRjYi0+dF9zdGF0ZSB8PSBXQUlUQklUOworICAgIHJldHVybiAodGNiKTsKK30K
Kworc3RydWN0IHRhc2sgKmhvbGRzZWxmKHZvaWQpCit7CisgICAgKytob2xkY291bnQ7CisgICAg
dGNiLT50X3N0YXRlIHw9IEhPTERCSVQ7CisgICAgcmV0dXJuICh0Y2ItPnRfbGluaykgOworfQor
CitzdHJ1Y3QgdGFzayAqZmluZHRjYihpbnQgaWQpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSAw
OworCisgICAgaWYgKDE8PWlkICYmIGlkPD0obG9uZyl0YXNrdGFiWzBdKQorICAgIHQgPSB0YXNr
dGFiW2lkXTsKKyAgICByZXR1cm4odCk7Cit9CisKK3N0cnVjdCB0YXNrICpyZWxlYXNlKGludCBp
ZCkKK3sKKyAgICBzdHJ1Y3QgdGFzayAqdDsKKworICAgIHQgPSBmaW5kdGNiKGlkKTsKKyAgICBp
ZiAoIHQ9PTAgKSByZXR1cm4gKDApOworCisgICAgdC0+dF9zdGF0ZSAmPSBOT1RIT0xEQklUOwor
ICAgIGlmICggdC0+dF9wcmkgPiB0Y2ItPnRfcHJpICkgcmV0dXJuICh0KTsKKworICAgIHJldHVy
biAodGNiKSA7Cit9CisKKworc3RydWN0IHRhc2sgKnFwa3Qoc3RydWN0IHBhY2tldCAqcGt0KQor
eworICAgIHN0cnVjdCB0YXNrICp0OworCisgICAgdCA9IGZpbmR0Y2IocGt0LT5wX2lkKTsKKyAg
ICBpZiAodD09MCkgcmV0dXJuICh0KTsKKworICAgIHFwa3Rjb3VudCsrOworCisgICAgcGt0LT5w
X2xpbmsgPSAwOworICAgIHBrdC0+cF9pZCA9IChpbnQpdGFza2lkOworCisgICBpZiAodC0+dF93
a3E9PTApCisgICAgeworICAgICAgICB0LT50X3drcSA9IHBrdDsKKyAgICAgICAgdC0+dF9zdGF0
ZSB8PSBQS1RCSVQ7CisgICAgICAgIGlmICh0LT50X3ByaSA+IHRjYi0+dF9wcmkpIHJldHVybiAo
dCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGFwcGVuZChwa3QsIChzdHJ1Y3Qg
cGFja2V0ICopJih0LT50X3drcSkpOworICAgIH0KKworICAgIHJldHVybiAodGNiKTsKK30KKwor
c3RydWN0IHRhc2sgKmlkbGVmbihzdHJ1Y3QgcGFja2V0ICpwa3QpCit7CisgICAgaWYgKCAtLXYy
PT0wICkgcmV0dXJuICggaG9sZHNlbGYoKSApOworCisgICAgaWYgKCAodjEmMSkgPT0gMCApCisg
ICAgeworICAgICAgICB2MSA9ICggdjE+PjEpICYgTUFYSU5UOworICAgICAgICByZXR1cm4gKCBy
ZWxlYXNlKElfREVWQSkgKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdjEgPSAo
ICh2MT4+MSkgJiBNQVhJTlQpIF4gMFhEMDA4OworICAgICAgICByZXR1cm4gKCByZWxlYXNlKElf
REVWQikgKTsKKyAgICB9Cit9CisKK3N0YXRpYyBKU0dsb2JhbENvbnRleHRSZWYgY3R4Oworc3Rh
dGljIEpTT2JqZWN0UmVmIGpzV29ya2ZuOworI2RlZmluZSBDSEVDS19FWENFUFRJT04oZXhjZXB0
aW9uKSBcCisgICAgaWYgKGV4Y2VwdGlvbikgeyBcCisgICAgICAgIEpTU3RyaW5nUmVmIG1lc3Nh
Z2UgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGN0eCwgZXhjZXB0aW9uLCBOVUxMKTsgXAorICAgICAg
ICBzaXplX3QgbGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG1lc3Nh
Z2UpOyBcCisgICAgICAgIGNoYXIqIGJ1ZmZlciA9IChjaGFyKiltYWxsb2MobGVuZ3RoICsgMSk7
IFwKKyAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhtZXNzYWdlLCBidWZmZXIsIGxlbmd0
aCArIDEpOyBcCisgICAgICAgIGJ1ZmZlcltsZW5ndGhdID0gMDsgXAorICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgInVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcbiIsIGJ1ZmZlcik7IFwKKyAgICAgICAg
ZXhpdCgxKTsgXAorICAgIH0gXAorICAgIGRvIHsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBDSEVD
S0VEKC4uLikgXAorICAgIF9fVkFfQVJHU19fOyBcCisgICAgQ0hFQ0tfRVhDRVBUSU9OKGV4Y2Vw
dGlvbik7CisKKyNkZWZpbmUgQ09OQ0FUXyhBLCBCKSBBICMjIEIKKyNkZWZpbmUgQ09OQ0FUKEEs
IEIpIENPTkNBVF8oQSwgQikKKworI2RlZmluZSBDSEVDS0VEX0lOVF8odGFyZ2V0LCB0bXAsIC4u
LikgXAorICAgIEpTVmFsdWVSZWYgdG1wID0gQ0hFQ0tFRChfX1ZBX0FSR1NfXyk7IFwKKyAgICB0
YXJnZXQgPSBDSEVDS0VEKEpTVmFsdWVUb051bWJlcihjdHgsIHRtcCwgJmV4Y2VwdGlvbikpCisK
KyNkZWZpbmUgQ0hFQ0tFRF9JTlQodGFyZ2V0LCAuLi4pIFwKKyAgICBDSEVDS0VEX0lOVF8odGFy
Z2V0LCBDT05DQVQodG1wLCBfX0NPVU5URVJfXyksIF9fVkFfQVJHU19fKQorCitzdHJ1Y3QgdGFz
ayogdmFsdWVUb1Rhc2soSlNWYWx1ZVJlZiB2YWx1ZSkKK3sKKyAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbiA9IE5VTEw7CisgICAgZG91YmxlIGQgPSBDSEVDS0VEKEpTVmFsdWVUb051bWJlcihjdHgs
IHZhbHVlLCAmZXhjZXB0aW9uKSk7CisgICAgcmV0dXJuIChzdHJ1Y3QgdGFzayopKGludHB0cl90
KWQ7Cit9CisKK0pTVmFsdWVSZWYgd2FpdFdyYXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgc3RydWN0IHRhc2sqIHRhc2sgPSB3YWl0XygpOworICAgIHJldHVybiBKU1ZhbHVl
TWFrZU51bWJlcihjdHgsIChpbnRwdHJfdCl0YXNrKTsKK30KKworSlNWYWx1ZVJlZiBxcGt0V3Jh
cHBlcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzdHJ1Y3QgcGFja2V0KiBwa3Qg
PSAoc3RydWN0IHBhY2tldCopKGludHB0cl90KUpTVmFsdWVUb051bWJlcihjdHgsIGFyZ3VtZW50
c1swXSwgZXhjZXB0aW9uKTsKKyAgICBDSEVDS19FWENFUFRJT04oKmV4Y2VwdGlvbik7CisgICAg
c3RydWN0IHRhc2sqIHRhc2sgPSBxcGt0KHBrdCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVt
YmVyKGN0eCwgKGludHB0cl90KXRhc2spOworfQorCitKU1N0cmluZ1JlZiByZWFkRmlsZShjb25z
dCBjaGFyKiBwYXRoKQoreworICAgIEZJTEUqIGZpbGUgPSBmb3BlbihwYXRoLCAiciIpOworICAg
IGZzZWVrKGZpbGUsIDAsIFNFRUtfRU5EKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGZ0ZWxsKGZpbGUp
OworICAgIGNoYXIqIGJ1ZmZlciA9IGNhbGxvYyhzaXplLCBzaXplb2YoY2hhcikpOworICAgIGZz
ZWVrKGZpbGUsIDAsIFNFRUtfU0VUKTsKKyAgICBmcmVhZChidWZmZXIsIHNpemVvZihjaGFyKSwg
c2l6ZSwgZmlsZSk7CisgICAgZmNsb3NlKGZpbGUpOworICAgIEpTU3RyaW5nUmVmIGNvbnRlbnRz
ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVmZmVyKTsKKyAgICBmcmVlKGJ1ZmZl
cik7CisgICAgcmV0dXJuIGNvbnRlbnRzOworfQorCitzdHJ1Y3QgdGFzayAqd29ya2ZuKHN0cnVj
dCBwYWNrZXQgKnBrdCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsK
KyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGN0eCA9IEpTR2xvYmFs
Q29udGV4dENyZWF0ZShOVUxMKTsKKyAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0g
SlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGN0eCk7CisgICAgICAgIAorICAgICAgICBKU1N0cmlu
Z1JlZiBzb3VyY2UgPSByZWFkRmlsZSgicmljaGFyZHMuanMiKTsKKyAgICAgICAgSlNTdHJpbmdS
ZWYgd29ya2ZuU3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNyZWF0ZVdv
cmtmbiIpOworICAgICAgICBKU1N0cmluZ1JlZiB3YWl0U3RyaW5nID0gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIndhaXQiKTsKKyAgICAKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChj
dHgsIHNvdXJjZSwgTlVMTCwgTlVMTCwgMCwgTlVMTCk7CisgICAgICAgIAorICAgICAgICBKU09i
amVjdFJlZiBqc0FscGhhYmV0ID0gSlNPYmplY3RNYWtlQXJyYXkoY3R4LCAwLCBOVUxMLCBOVUxM
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI4OyArK2kpCisgICAgICAgICAg
ICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjdHgsIGpzQWxwaGFiZXQsIGksIEpTVmFsdWVN
YWtlTnVtYmVyKGN0eCwgYWxwaGFiZXRbaV0pLCBOVUxMKTsKKyAgICAgICAgCisgICAgICAgIEpT
T2JqZWN0UmVmIGNyZWF0ZVdvcmtmbiA9IEpTVmFsdWVUb09iamVjdChjdHgsIEpTT2JqZWN0R2V0
UHJvcGVydHkoY3R4LCBnbG9iYWxPYmplY3QsIHdvcmtmblN0cmluZywgTlVMTCksIE5VTEwpOwor
ICAgICAgICBKU1ZhbHVlUmVmIGFyZ3NbNl0gPSB7CisgICAgICAgICAgICBKU09iamVjdE1ha2VG
dW5jdGlvbldpdGhDYWxsYmFjayhjdHgsIHdhaXRTdHJpbmcsIHdhaXRXcmFwcGVyKSwKKyAgICAg
ICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgSV9IQU5ETEVSQSksCisgICAgICAgICAgICBK
U1ZhbHVlTWFrZU51bWJlcihjdHgsIElfSEFORExFUkIpLAorICAgICAgICAgICAgSlNWYWx1ZU1h
a2VOdW1iZXIoY3R4LCBCVUZTSVpFKSwKKyAgICAgICAgICAgIGpzQWxwaGFiZXQsCisgICAgICAg
IH07CisgICAgICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihj
dHgsIGNyZWF0ZVdvcmtmbiwgTlVMTCwgNSwgYXJncywgTlVMTCk7CisgICAgICAgIGpzV29ya2Zu
ID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcmVzdWx0LCBOVUxMKTsKKyAgICAgICAgCisgICAgICAg
IEpTU3RyaW5nUmVsZWFzZShzb3VyY2UpOworICAgICAgICBKU1N0cmluZ1JlbGVhc2Uod29ya2Zu
U3RyaW5nKTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHdhaXRTdHJpbmcpOworICAgIH0pOwor
ICAgIAorICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gTlVMTDsKKyAgICBKU1ZhbHVlUmVmIGFy
Z3NbM10gPSB7IEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgKGludHB0cl90KXBrdCksIEpTVmFsdWVN
YWtlTnVtYmVyKGN0eCwgdjEpLCBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHYxKSB9OworICAgIEpT
VmFsdWVSZWYgcmVzdWx0ID0gQ0hFQ0tFRChKU09iamVjdENhbGxBc0Z1bmN0aW9uKGN0eCwganNX
b3JrZm4sIE5VTEwsIDMsIGFyZ3MsICZleGNlcHRpb24pKTsKKyAgICBKU09iamVjdFJlZiByZXN1
bHRPYmplY3QgPSBDSEVDS0VEKEpTVmFsdWVUb09iamVjdChjdHgsIHJlc3VsdCwgJmV4Y2VwdGlv
bikpOworICAgIGlmICghSlNWYWx1ZUlzQXJyYXkoY3R4LCByZXN1bHQpKQorICAgICAgICByZXR1
cm4gdmFsdWVUb1Rhc2socmVzdWx0KTsKKyAgIAorICAgIENIRUNLRURfSU5UKHYxLCBKU09iamVj
dEdldFByb3BlcnR5QXRJbmRleChjdHgsIHJlc3VsdE9iamVjdCwgMCwgJmV4Y2VwdGlvbikpOwor
ICAgIENIRUNLRURfSU5UKHYyLCBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjdHgsIHJlc3Vs
dE9iamVjdCwgMSwgJmV4Y2VwdGlvbikpOworICAgIENIRUNLRURfSU5UKHBrdC0+cF9hMSwgSlNP
YmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY3R4LCByZXN1bHRPYmplY3QsIDIsICZleGNlcHRpb24p
KTsKKyAgICBwa3QtPnBfaWQgPSAoaW50KXYxOworICAgIEpTVmFsdWVSZWYgZGF0YSA9IENIRUNL
RUQoSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY3R4LCByZXN1bHRPYmplY3QsIDMsICZleGNl
cHRpb24pKTsKKyAgICBKU09iamVjdFJlZiBkYXRhT2JqZWN0ID0gQ0hFQ0tFRChKU1ZhbHVlVG9P
YmplY3QoY3R4LCBkYXRhLCAmZXhjZXB0aW9uKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEJVRlNJWkU7ICsraSkgeworICAgICAgICAgQ0hFQ0tFRF9JTlQocGt0LT5wX2EyW2ldLCBK
U09iamVjdEdldFByb3BlcnR5QXRJbmRleChjdHgsIGRhdGFPYmplY3QsIGksICZleGNlcHRpb24p
KTsKKyAgICB9CisgICAgcmV0dXJuIHFwa3QocGt0KTsKK30KKworc3RydWN0IHRhc2sgKmhhbmRs
ZXJmbihzdHJ1Y3QgcGFja2V0ICpwa3QpCit7CisgIGlmICggcGt0IT0wKSB7CisgICAgYXBwZW5k
KHBrdCwgKHN0cnVjdCBwYWNrZXQgKikocGt0LT5wX2tpbmQ9PUtfV09SSyA/ICZ2MSA6ICZ2Mikp
OworICB9CisKKyAgaWYgKCB2MSE9MCApIHsKKyAgICBpbnQgY291bnQ7CisgICAgc3RydWN0IHBh
Y2tldCAqd29ya3BrdCA9IChzdHJ1Y3QgcGFja2V0ICopdjE7CisgICAgY291bnQgPSB3b3JrcGt0
LT5wX2ExOworCisgICAgaWYgKCBjb3VudCA+IEJVRlNJWkUgKSB7CisgICAgICB2MSA9IChsb25n
KSgoKHN0cnVjdCBwYWNrZXQgKil2MSktPnBfbGluayk7CisgICAgICByZXR1cm4gKCBxcGt0KHdv
cmtwa3QpICk7CisgICAgfQorCisgICAgaWYgKCB2MiE9MCApIHsKKyAgICAgIHN0cnVjdCBwYWNr
ZXQgKmRldnBrdDsKKworICAgICAgZGV2cGt0ID0gKHN0cnVjdCBwYWNrZXQgKil2MjsKKyAgICAg
IHYyID0gKGxvbmcpKCgoc3RydWN0IHBhY2tldCAqKXYyKS0+cF9saW5rKTsKKyAgICAgIGRldnBr
dC0+cF9hMSA9IHdvcmtwa3QtPnBfYTJbY291bnRdOworICAgICAgd29ya3BrdC0+cF9hMSA9IGNv
dW50KzE7CisgICAgICByZXR1cm4oIHFwa3QoZGV2cGt0KSApOworICAgIH0KKyAgfQorICByZXR1
cm4gd2FpdF8oKTsKK30KKworc3RydWN0IHRhc2sgKmRldmZuKHN0cnVjdCBwYWNrZXQgKnBrdCkK
K3sKKyAgICBpZiAoIHBrdD09MCApCisgICAgeworICAgICAgICBpZiAoIHYxPT0wICkgcmV0dXJu
ICggd2FpdF8oKSApOworICAgICAgICBwa3QgPSAoc3RydWN0IHBhY2tldCAqKXYxOworICAgICAg
ICB2MSA9IDA7CisgICAgICAgIHJldHVybiAoIHFwa3QocGt0KSApOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICB2MSA9IChsb25nKXBrdDsKKyAgICAgICAgaWYgKHRyYWNpbmcpIHRy
YWNlKHBrdC0+cF9hMSk7CisgICAgICAgIHJldHVybiAoIGhvbGRzZWxmKCkgKTsKKyAgICB9Cit9
CisKK3ZvaWQgYXBwZW5kKHN0cnVjdCBwYWNrZXQgKnBrdCwgc3RydWN0IHBhY2tldCAqcHRyKQor
eworICAgIHBrdC0+cF9saW5rID0gMDsKKworICAgIHdoaWxlICggcHRyLT5wX2xpbmsgKSBwdHIg
PSBwdHItPnBfbGluazsKKworICAgIHB0ci0+cF9saW5rID0gcGt0OworfQorCit2b2lkIHNldHVw
KCkKK3sKKyAgICBzdHJ1Y3QgcGFja2V0ICp3a3EgPSAwOworCisgICAgY3JlYXRldGFzayhJX0lE
TEUsIDAsIHdrcSwgU19SVU4sIGlkbGVmbiwgMSwgQ291bnQpOworCisgICAgd2txID0gcGt0KDAs
IDAsIEtfV09SSyk7CisgICAgd2txID0gcGt0KHdrcSwgMCwgS19XT1JLKTsKKworICAgIGNyZWF0
ZXRhc2soSV9XT1JLLCAxMDAwLCB3a3EsIFNfV0FJVFBLVCwgd29ya2ZuLCBJX0hBTkRMRVJBLCAw
KTsKKworICAgIHdrcSA9IHBrdCgwLCBJX0RFVkEsIEtfREVWKTsKKyAgICB3a3EgPSBwa3Qod2tx
LCBJX0RFVkEsIEtfREVWKTsKKyAgICB3a3EgPSBwa3Qod2txLCBJX0RFVkEsIEtfREVWKTsKKwor
ICAgIGNyZWF0ZXRhc2soSV9IQU5ETEVSQSwgMjAwMCwgd2txLCBTX1dBSVRQS1QsIGhhbmRsZXJm
biwgMCwgMCk7CisKKyAgICB3a3EgPSBwa3QoMCwgSV9ERVZCLCBLX0RFVik7CisgICAgd2txID0g
cGt0KHdrcSwgSV9ERVZCLCBLX0RFVik7CisgICAgd2txID0gcGt0KHdrcSwgSV9ERVZCLCBLX0RF
Vik7CisKKyAgICBjcmVhdGV0YXNrKElfSEFORExFUkIsIDMwMDAsIHdrcSwgU19XQUlUUEtULCBo
YW5kbGVyZm4sIDAsIDApOworCisgICAgd2txID0gMDsKKyAgICBjcmVhdGV0YXNrKElfREVWQSwg
NDAwMCwgd2txLCBTX1dBSVQsIGRldmZuLCAwLCAwKTsKKyAgICBjcmVhdGV0YXNrKElfREVWQiwg
NTAwMCwgd2txLCBTX1dBSVQsIGRldmZuLCAwLCAwKTsKKworICAgIHRjYiA9IHRhc2tsaXN0Owor
CisgICAgcXBrdGNvdW50ID0gaG9sZGNvdW50ID0gMDsKKworICAgIHRyYWNpbmcgPSBGQUxTRTsK
KyAgICBsYXlvdXQgPSAwOworfQorCitpbnQgZ2V0UXBrdGNvdW50KCkKK3sKKyAgICByZXR1cm4g
IHFwa3Rjb3VudDsKK30KKworaW50IGdldEhvbGRjb3VudCgpCit7CisgICAgcmV0dXJuIGhvbGRj
b3VudDsKK30KKworaW50IG1haW4oKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGl0ZXJhdGlvbnMg
PSA1MDsKKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGlt
ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyArK2kpIHsKKyAg
ICAgICAgc2V0dXAoKTsKKyAgICAgICAgc2NoZWR1bGUoKTsKKyAgICAgICAgaWYgKHFwa3Rjb3Vu
dCAhPSBRcGt0Y291bnR2YWwgfHwgaG9sZGNvdW50ICE9IEhvbGRjb3VudHZhbCkgeworICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50
ID0gJWQsIGhvbGRDb3VudCA9ICVkLlxuIiwgcXBrdGNvdW50LCBob2xkY291bnQpOworICAgICAg
ICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25zdCBDRlRpbWVJbnRlcnZh
bCBlbmQgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKKyAgICBwcmludGYoIiVkXG4iLCAoaW50KSgo
ZW5kLXN0YXJ0KSAqIDEwMDApKTsKKyAgICByZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseUMvUmljaGFy
ZHNNb3N0bHlDL3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWlu
Z0FQSS9SaWNoYXJkc01vc3RseUMvUmljaGFyZHNNb3N0bHlDL3JpY2hhcmRzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ3YWNmMWUzYWM1MDRiZjc0ZGZlZGU2OThjMzVmNzNjZWFmODI4NDEKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9z
dGx5Qy9SaWNoYXJkc01vc3RseUMvcmljaGFyZHMuanMKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworZnVuY3Rpb24gY3JlYXRlV29ya2ZuKHdhaXQsIElfSEFORExFUkEsIElfSEFORExFUkIs
IEJVRlNJWkUsIGFscGhhYmV0KSB7CisgICAgY29uc29sZS5sb2coYXJndW1lbnRzKQorICAgIHJl
dHVybiBmdW5jdGlvbihwa3QsIHYxLCB2MikgeworICAgICAgICBpZiAoIXBrdCkKKyAgICAgICAg
ICAgIHJldHVybiB3YWl0KCk7CisgICAgICAgIHZhciB2MSA9IElfSEFORExFUkEgKyBJX0hBTkRM
RVJCIC0gdjE7CisgICAgICAgIHZhciBkYXRhID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDw9IEJVRlNJWkU7IGkrKykgeworICAgICAgICAgICAgdjIrKzsKKyAgICAgICAgICAgIGlm
ICggdjIgPiAyNiApIHYyID0gMTsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBhbHBoYWJldFt2Ml07
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFt2MSwgdjIsIDAsIGRhdGFdOworICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFy
ZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9i
akMvUmljaGFyZHNNb3N0bHlPYmpDLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmI2NGRlNGNlZjc3Y2IwYWMyNGFmNDAzNDY0MjE2NGM4Zjg0MzM0NgotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0
bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0w
LDAgKzEsMzUyIEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNs
YXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyog
QmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQwQUFDMzcyNDk5QkQ3QTAwMDFGMTFF
IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDBBQUMzNjI0OTlCRDZDMDAwMUYxMUUgLyogcmljaGFyZHMuanMgKi87IH07CisJ
CTE0QkFFMkRBMjU2OUU5QzUwMDYzNjdDRiAvKiBEZXZpY2VUYXNrLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJBRTJEOTI1NjlFOUM1MDA2MzY3Q0Yg
LyogRGV2aWNlVGFzay5tICovOyB9OworCQkxNEJBRTJERTI1NjlFQjE2MDA2MzY3Q0YgLyogVGFz
ay5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQUUy
REQyNTY5RUIxNjAwNjM2N0NGIC8qIFRhc2subSAqLzsgfTsKKwkJMTRCQUUyRTIyNTY5RUNDOTAw
NjM2N0NGIC8qIFNjaGVkdWxlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTRCQUUyRTEyNTY5RUNDOTAwNjM2N0NGIC8qIFNjaGVkdWxlci5tICovOyB9
OworCQkxNEJBRTJFOTI1NjlFRDJGMDA2MzY3Q0YgLyogV29ya2VyVGFzay5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQUUyRTgyNTY5RUQyRjAwNjM2
N0NGIC8qIFdvcmtlclRhc2subSAqLzsgfTsKKwkJMTRCQUUyRUUyNTY5RUQ1NTAwNjM2N0NGIC8q
IEhhbmRsZXJUYXNrLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEJBRTJFRDI1NjlFRDU1MDA2MzY3Q0YgLyogSGFuZGxlclRhc2subSAqLzsgfTsKKwkJ
MTRCQUUyRjMyNTY5RUQ3QjAwNjM2N0NGIC8qIElkbGVUYXNrLm0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJBRTJGMjI1NjlFRDdCMDA2MzY3Q0YgLyog
SWRsZVRhc2subSAqLzsgfTsKKwkJMTRCQUUyRjgyNTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQUUyRjcy
NTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5tICovOyB9OworCQkxNEJBRTJGRDI1NkExRDU4MDA2
MzY3Q0YgLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRCQUUyRkMyNTZBMUQ1ODAwNjM2N0NGIC8qIG1haW4ubSAqLzsgfTsKKwkJMTRCQUUz
MDAyNTZBMUQ2NzAwNjM2N0NGIC8qIHJpY2hhcmRzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJBRTJGRjI1NkExRDY3MDA2MzY3Q0YgLyogcmljaGFy
ZHMubSAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMjAyNDk5QkM1QzAwNUJC
MkU0IC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKKwkJCWRzdFBhdGggPSAiIjsKKwkJCWRzdFN1YmZv
bGRlclNwZWMgPSAxNjsKKwkJCWZpbGVzID0gKAorCQkJCTE0MEFBQzM3MjQ5OUJEN0EwMDAxRjEx
RSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LworCQkxNDBBQUMzNjI0OTlCRDZDMDAwMUYxMUUgLyogcmljaGFyZHMuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSByaWNoYXJkcy5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5
T2JqQyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gUmlj
aGFyZHNNb3N0bHlPYmpDOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkx
NEJBRTJEODI1NjlFOUM1MDA2MzY3Q0YgLyogRGV2aWNlVGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZXZpY2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkQ5MjU2OUU5
QzUwMDYzNjdDRiAvKiBEZXZpY2VUYXNrLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IERldmljZVRhc2su
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyREMyNTY5RUIxNjAwNjM2N0NG
IC8qIFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNEJBRTJERDI1NjlFQjE2MDA2MzY3Q0YgLyogVGFzay5tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBUYXNrLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkUwMjU2OUVD
QzkwMDYzNjdDRiAvKiBTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NoZWR1bGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkUxMjU2OUVDQzkwMDYzNjdDRiAvKiBT
Y2hlZHVsZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gU2NoZWR1bGVyLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0QkFFMkU3MjU2OUVEMkYwMDYzNjdDRiAvKiBXb3JrZXJUYXNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdvcmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTRCQUUyRTgyNTY5RUQyRjAwNjM2N0NGIC8qIFdvcmtlclRhc2subSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBw
YXRoID0gV29ya2VyVGFzay5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBRTJF
QzI1NjlFRDU1MDA2MzY3Q0YgLyogSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxl
clRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRUQyNTY5RUQ1NTAw
NjM2N0NGIC8qIEhhbmRsZXJUYXNrLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IEhhbmRsZXJUYXNrLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkFFMkYxMjU2OUVEN0IwMDYzNjdDRiAv
KiBJZGxlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNEJBRTJGMjI1NjlFRDdCMDA2MzY3Q0YgLyogSWRsZVRhc2subSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBwYXRoID0gSWRsZVRhc2subTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTRCQUUyRjYyNTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNr
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRjcyNTY5RURBMDAwNjM2
N0NGIC8qIFBhY2tldC5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBQYWNrZXQubTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUyRkMyNTZBMUQ1ODAwNjM2N0NGIC8qIG1haW4ubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJB
RTJGRjI1NkExRDY3MDA2MzY3Q0YgLyogcmljaGFyZHMubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gcmlj
aGFyZHMubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQUUzMDQyNTZBMjAyNzAw
NjM2N0NGIC8qIERldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQxRjI0OTlC
QzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYR3JvdXAgc2VjdGlvbiAqLworCQkxNDE1QUQxOTI0OTlCQzVCMDA1QkIyRTQgPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MTVBRDI0MjQ5OUJDNUMwMDVC
QjJFNCAvKiBSaWNoYXJkc01vc3RseU9iakMgKi8sCisJCQkJMTQxNUFEMjMyNDk5QkM1QzAwNUJC
MkU0IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFEMjIyNDk5QkM1QzAwNUJC
MkU0IC8qIFJpY2hhcmRzTW9zdGx5T2JqQyAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxNDE1QUQyNDI0OTlCQzVDMDA1
QkIyRTQgLyogUmljaGFyZHNNb3N0bHlPYmpDICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxNEJBRTMwNDI1NkEyMDI3MDA2MzY3Q0YgLyogRGV2aWNlLmgg
Ki8sCisJCQkJMTRCQUUyRDgyNTY5RTlDNTAwNjM2N0NGIC8qIERldmljZVRhc2suaCAqLywKKwkJ
CQkxNEJBRTJEOTI1NjlFOUM1MDA2MzY3Q0YgLyogRGV2aWNlVGFzay5tICovLAorCQkJCTE0QkFF
MkVDMjU2OUVENTUwMDYzNjdDRiAvKiBIYW5kbGVyVGFzay5oICovLAorCQkJCTE0QkFFMkVEMjU2
OUVENTUwMDYzNjdDRiAvKiBIYW5kbGVyVGFzay5tICovLAorCQkJCTE0QkFFMkYxMjU2OUVEN0Iw
MDYzNjdDRiAvKiBJZGxlVGFzay5oICovLAorCQkJCTE0QkFFMkYyMjU2OUVEN0IwMDYzNjdDRiAv
KiBJZGxlVGFzay5tICovLAorCQkJCTE0QkFFMkZDMjU2QTFENTgwMDYzNjdDRiAvKiBtYWluLm0g
Ki8sCisJCQkJMTRCQUUyRjYyNTY5RURBMDAwNjM2N0NGIC8qIFBhY2tldC5oICovLAorCQkJCTE0
QkFFMkY3MjU2OUVEQTAwMDYzNjdDRiAvKiBQYWNrZXQubSAqLywKKwkJCQkxNDBBQUMzNjI0OTlC
RDZDMDAwMUYxMUUgLyogcmljaGFyZHMuanMgKi8sCisJCQkJMTRCQUUyRkYyNTZBMUQ2NzAwNjM2
N0NGIC8qIHJpY2hhcmRzLm0gKi8sCisJCQkJMTRCQUUyRTAyNTY5RUNDOTAwNjM2N0NGIC8qIFNj
aGVkdWxlci5oICovLAorCQkJCTE0QkFFMkUxMjU2OUVDQzkwMDYzNjdDRiAvKiBTY2hlZHVsZXIu
bSAqLywKKwkJCQkxNEJBRTJEQzI1NjlFQjE2MDA2MzY3Q0YgLyogVGFzay5oICovLAorCQkJCTE0
QkFFMkREMjU2OUVCMTYwMDYzNjdDRiAvKiBUYXNrLm0gKi8sCisJCQkJMTRCQUUyRTcyNTY5RUQy
RjAwNjM2N0NGIC8qIFdvcmtlclRhc2suaCAqLywKKwkJCQkxNEJBRTJFODI1NjlFRDJGMDA2MzY3
Q0YgLyogV29ya2VyVGFzay5tICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc01vc3RseU9i
akM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMTQxNUFE
MjEyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5T2JqQyAqLyA9IHsKKwkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQyOTI0
OTlCQzVDMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIlJpY2hhcmRzTW9zdGx5T2JqQyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkx
NDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291cmNlcyAqLywKKwkJCQkxNDE1QUQxRjI0OTlC
QzVDMDA1QkIyRTQgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIy
RTQgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJ
ZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBSaWNoYXJkc01vc3RseU9iakM7CisJ
CQlwcm9kdWN0TmFtZSA9IFJpY2hhcmRzTW9zdGx5U3dpZnQ7CisJCQlwcm9kdWN0UmVmZXJlbmNl
ID0gMTQxNUFEMjIyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzTW9zdGx5T2JqQyAqLzsKKwkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBF
bmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0
aW9uICovCisJCTE0MTVBRDFBMjQ5OUJDNUIwMDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9
IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RTd2lm
dFVwZGF0ZUNoZWNrID0gMTIwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTIwMDsKKwkJCQlU
YXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgPSB7CisJ
CQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMi4wOworCQkJCQkJTGFzdFN3aWZ0TWlncmF0
aW9uID0gMTIwMDsKKwkJCQkJfTsKKwkJCQl9OworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSAxNDE1QUQxRDI0OTlCQzVCMDA1QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc01vc3RseU9iakMiICovOworCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJ
CQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQll
biwKKwkJCQlCYXNlLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MTVBRDE5MjQ5OUJDNUIwMDVC
QjJFNDsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQ
cm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIi
OworCQkJdGFyZ2V0cyA9ICgKKwkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFy
ZHNNb3N0bHlPYmpDICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQx
RTI0OTlCQzVDMDA1QkIyRTQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJCTE0QkFFMkZEMjU2QTFENTgwMDYzNjdDRiAvKiBtYWluLm0gaW4gU291cmNlcyAqLywK
KwkJCQkxNEJBRTJFMjI1NjlFQ0M5MDA2MzY3Q0YgLyogU2NoZWR1bGVyLm0gaW4gU291cmNlcyAq
LywKKwkJCQkxNEJBRTJFOTI1NjlFRDJGMDA2MzY3Q0YgLyogV29ya2VyVGFzay5tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMTRCQUUyREUyNTY5RUIxNjAwNjM2N0NGIC8qIFRhc2subSBpbiBTb3VyY2Vz
ICovLAorCQkJCTE0QkFFMkVFMjU2OUVENTUwMDYzNjdDRiAvKiBIYW5kbGVyVGFzay5tIGluIFNv
dXJjZXMgKi8sCisJCQkJMTRCQUUzMDAyNTZBMUQ2NzAwNjM2N0NGIC8qIHJpY2hhcmRzLm0gaW4g
U291cmNlcyAqLywKKwkJCQkxNEJBRTJGODI1NjlFREEwMDA2MzY3Q0YgLyogUGFja2V0Lm0gaW4g
U291cmNlcyAqLywKKwkJCQkxNEJBRTJGMzI1NjlFRDdCMDA2MzY3Q0YgLyogSWRsZVRhc2subSBp
biBTb3VyY2VzICovLAorCQkJCTE0QkFFMkRBMjU2OUU5QzUwMDYzNjdDRiAvKiBEZXZpY2VUYXNr
Lm0gaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQxNUFEMjcy
NDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5B
TFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xB
TkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJS
QVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xB
TkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01N
QSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dB
Uk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JP
RFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09O
VkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RF
RF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5H
RV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdf
V0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9N
RVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVH
X0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dT
RU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5H
VUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJ
CUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwg
PSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0x
IiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9C
SVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
U19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0g
WUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFC
TEVfREVCVUdfSU5GTyA9IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7
CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVNXSUZUX0FDVElWRV9DT01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7CisJCQkJU1dJRlRf
T1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOwor
CQl9OworCQkxNDE1QUQyODI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0g
WUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19B
R0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsK
KwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RV
TEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19F
TkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRP
UkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFU
SU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19F
UlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJT
SU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElU
RVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lU
X1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJ
CQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZF
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dS
RVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJMRV9TVFJJQ1RfT0JK
Q19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJ
CQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNf
RVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5f
VU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlF
UzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxF
X0RFQlVHX0lORk8gPSBOTzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCVNES1JPT1Qg
PSBtYWNvc3g7CisJCQkJU1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xlbW9kdWxlOworCQkJ
CVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVh
c2U7CisJCX07CisJCTE0MTVBRDJBMjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlD
TEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0
aWM7CisJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCki
LAorCQkJCQkiQGV4ZWN1dGFibGVfcGF0aC8uLi9GcmFtZXdvcmtzIiwKKwkJCQkJIkBsb2FkZXJf
cGF0aC8uLi9GcmFtZXdvcmtzIiwKKwkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdF
VF9OQU1FKSI7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQkJ
U1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTE0
MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0VOQUJMRV9N
T0RVTEVTID0gWUVTOworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlMRF9S
VU5QQVRIX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJAZXhl
Y3V0YWJsZV9wYXRoLy4uL0ZyYW1ld29ya3MiLAorCQkJCQkiQGxvYWRlcl9wYXRoLy4uL0ZyYW1l
d29ya3MiLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9Owor
LyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25m
aWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJFNCAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5T2Jq
QyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkxNDE1QUQyNzI0OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCisJ
CQkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQxNUFEMjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJkc01vc3RseU9i
akMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCisJCQkJMTQxNUFEMkEyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAor
CQkJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9u
ICovCisJfTsKKwlyb290T2JqZWN0ID0gMTQxNUFEMUEyNDk5QkM1QjAwNUJCMkU0IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9V
cGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDLnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9S
aWNoYXJkc01vc3RseU9iakMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFy
ZHNNb3N0bHlTd2lmdC54Y3NjaGVtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Nzg4ZTUwYTNhMDYyNjJiNDFiOGEz
NTJhMWU0OGU3NGY0OGRhNTlhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpD
Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNz
Y2hlbWUKQEAgLTAsMCArMSw4MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KKzxTY2hlbWUKKyAgIExhc3RVcGdyYWRlVmVyc2lvbiA9ICIxMjAwIgorICAgdmVyc2lv
biA9ICIxLjciPgorICAgPEJ1aWxkQWN0aW9uCisgICAgICBwYXJhbGxlbGl6ZUJ1aWxkYWJsZXMg
PSAiWUVTIgorICAgICAgYnVpbGRJbXBsaWNpdERlcGVuZGVuY2llcyA9ICJZRVMiPgorICAgICAg
PEJ1aWxkQWN0aW9uRW50cmllcz4KKyAgICAgICAgIDxCdWlsZEFjdGlvbkVudHJ5CisgICAgICAg
ICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JSdW5uaW5n
ID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUHJvZmlsaW5nID0gIllFUyIKKyAgICAgICAg
ICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6
aW5nID0gIllFUyI+CisgICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAg
ICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICAgICBCbHVl
cHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAg
ICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlPYmpDIgorICAgICAgICAgICAgICAg
Qmx1ZXByaW50TmFtZSA9ICJSaWNoYXJkc01vc3RseU9iakMiCisgICAgICAgICAgICAgICBSZWZl
cmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc01vc3RseU9iakMueGNvZGVwcm9q
Ij4KKyAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgICAgPC9CdWlsZEFj
dGlvbkVudHJ5PgorICAgICAgPC9CdWlsZEFjdGlvbkVudHJpZXM+CisgICA8L0J1aWxkQWN0aW9u
PgorICAgPFRlc3RBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAg
ICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlv
bi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNv
ZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCisgICAgICBzaG91bGRVc2VMYXVu
Y2hTY2hlbWVBcmdzRW52ID0gIllFUyI+CisgICAgICA8VGVzdGFibGVzPgorICAgICAgPC9UZXN0
YWJsZXM+CisgICA8L1Rlc3RBY3Rpb24+CisgICA8TGF1bmNoQWN0aW9uCisgICAgICBidWlsZENv
bmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9
ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVk
TGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5M
TERCIgorICAgICAgbGF1bmNoU3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJl
Y3RvcnkgPSAiTk8iCisgICAgICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8i
CisgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZp
Y2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9
ICJZRVMiPgorICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFi
bGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAg
ICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1
ZXByaW50SWRlbnRpZmllciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAg
ICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRzTW9zdGx5T2JqQyIKKyAgICAgICAgICAgIEJsdWVw
cmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlPYmpDIgorICAgICAgICAgICAgUmVmZXJlbmNlZENv
bnRhaW5lciA9ICJjb250YWluZXI6UmljaGFyZHNNb3N0bHlPYmpDLnhjb2RlcHJvaiI+CisgICAg
ICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5h
YmxlPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRD
b25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdz
RW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElkZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3Vz
dG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5n
ID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5u
YWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisg
ICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBC
bHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAg
ICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlPYmpDIgorICAgICAgICAgICAgQmx1
ZXByaW50TmFtZSA9ICJSaWNoYXJkc01vc3RseU9iakMiCisgICAgICAgICAgICBSZWZlcmVuY2Vk
Q29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc01vc3RseU9iakMueGNvZGVwcm9qIj4KKyAg
ICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVu
bmFibGU+CisgICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFjdGlvbgorICAgICAgYnVp
bGRDb25maWd1cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFjdGlvbj4KKyAgIDxBcmNo
aXZlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHJl
dmVhbEFyY2hpdmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNoaXZlQWN0aW9uPgorICAg
PEluc3RhbGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIj4KKyAg
IDwvSW5zdGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlP
YmpDL0RldmljZS5oIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNo
YXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL0RldmljZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3
MzRkMGY0ZDZkZWYzM2NlNDA4YmViNDk4N2IxNTBlZjQzNGNmYjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8K
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK3R5cGVkZWYgTlNfRU5VTSh1
bnNpZ25lZCwgRGV2aWNlKSB7CisgICAgQSwKKyAgICBCCit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFy
ZHNNb3N0bHlPYmpDL0RldmljZVRhc2suaCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBj
b21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9EZXZpY2VUYXNr
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTcxOTY0YjIyNjViYTJkZTMzOGE3NTAxMmIxYjJjOTFhNTgzMTFjMgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkv
UmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9EZXZpY2VUYXNrLmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1wb3J0ICJQYWNr
ZXQuaCIKKyNpbXBvcnQgIlRhc2suaCIKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8qKgorICogQSB0YXNrIHRoYXQgc3Vz
cGVuZHMgaXRzZWxmIGFmdGVyIGVhY2ggdGltZSBpdCBoYXMgYmVlbiBydW4gdG8gc2ltdWxhdGUK
KyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJvbSBhbiBleHRlcm5hbCBkZXZpY2UuCisgKi8KK0BpbnRl
cmZhY2UgRGV2aWNlVGFzayA6IFRhc2sKKworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwg
cmVhZG9ubHkpIERldmljZSBkZXZpY2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCBu
dWxsYWJsZSkgUGFja2V0ICpwZW5kaW5nUGFja2V0OworCisrIChpbnN0YW5jZXR5cGUpY3JlYXRl
V2l0aFNjaGVkdWxlcjooU2NoZWR1bGVyICopc2NoZWR1bGVyIGRldmljZTooRGV2aWNlKWRldmlj
ZSBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHk7CistIChudWxsYWJsZSBUYXNrICopcnVuOihu
dWxsYWJsZSBQYWNrZXQgKilwYWNrZXQ7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hh
cmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlVGFzay5tIGIvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNN
b3N0bHlPYmpDL0RldmljZVRhc2subQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGQ5NTVhMTYxMmMzZDhlNTE5MjAx
ODQ3Nzg4NWViMTkxY2FiYzM4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpD
L0RldmljZVRhc2subQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworI2ltcG9ydCAiRGV2aWNl
VGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gRGV2aWNlVGFzaworCisrIChpbnN0YW5jZXR5cGUp
Y3JlYXRlV2l0aFNjaGVkdWxlcjooU2NoZWR1bGVyICopc2NoZWR1bGVyIGRldmljZTooRGV2aWNl
KSBkZXZpY2UgcHJpb3JpdHk6KFByaW9yaXR5KXByaW9yaXR5Cit7CisgICAgRGV2aWNlVGFzayAq
dGFzayA9IFtzdXBlciBjcmVhdGVXaXRoU2NoZWR1bGVyOnNjaGVkdWxlciBwcmlvcml0eTpwcmlv
cml0eSBxdWV1ZTpuaWxdOworICAgIHRhc2stPl9kZXZpY2UgPSBkZXZpY2U7CisgICAgW3Rhc2su
c2NoZWR1bGVyIGFkZFRhc2s6dGFza107CisgICAgcmV0dXJuIHRhc2s7Cit9CisKKworLSAobnVs
bGFibGUgVGFzayAqKXJ1bjoobnVsbGFibGUgUGFja2V0ICopcGFja2V0Cit7CisgICAgaWYgKCFw
YWNrZXQpIHsKKyAgICAgICAgaWYgKCFzZWxmLnBlbmRpbmdQYWNrZXQpCisgICAgICAgICAgICBy
ZXR1cm4gW3NlbGYuc2NoZWR1bGVyIHdhaXRDdXJyZW50XTsKKyAgICAgICAgUGFja2V0ICpwYWNr
ZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQ7CisgICAgICAgIF9wZW5kaW5nUGFja2V0ID0gbmlsOwor
ICAgICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIGhhbmRsZTpwYWNrZXRdOworICAgIH0KKwor
ICAgIF9wZW5kaW5nUGFja2V0ID0gcGFja2V0OworICAgIHJldHVybiBbc2VsZi5zY2hlZHVsZXIg
aG9sZEN1cnJlbnRdOworfQorCisKK0BlbmQKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9IYW5kbGVyVGFzay5oIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9S
aWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL0hhbmRsZXJUYXNrLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWQwZDkyNjU3ZmJiNjc4YjExMDhjOGZjOTgyOTNiNmE2YjFmYTNkNgotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNN
b3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9IYW5kbGVyVGFzay5oCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpbXBvcnQgIkRldmljZVRhc2suaCIKKyNpbXBvcnQgIlBhY2tldC5o
IgorI2ltcG9ydCAiVGFzay5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKKy8qKgorICogQSB0YXNrIHRoYXQgbWFuaXB1bGF0ZXMgd29yayBwYWNr
ZXRzIGFuZCB0aGVuIHN1c3BlbmRzIGl0c2VsZi4KKyAqLworQGludGVyZmFjZSBIYW5kbGVyVGFz
ayA6IFRhc2sgPEpTRXhwb3J0PgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCByZWFk
b25seSkgRGV2aWNlIGRldmljZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcsIHJlYWRv
bmx5LCBudWxsYWJsZSkgUGFja2V0ICp3b3JrUXVldWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
c3Ryb25nLCByZWFkb25seSwgbnVsbGFibGUpIFBhY2tldCAqZGV2aWNlUXVldWU7CisKKysgKGlu
c3RhbmNldHlwZSljcmVhdGVXaXRoU2NoZWR1bGVyOihTY2hlZHVsZXIgKilzY2hlZHVsZXIgZGV2
aWNlOihEZXZpY2UpZGV2aWNlIHByaW9yaXR5OihQcmlvcml0eSlwcmlvcml0eSBxdWV1ZTooUGFj
a2V0ICopcXVldWU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9SaWNoYXJkc01vc3RseU9iakMvSGFuZGxlclRhc2subSBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9I
YW5kbGVyVGFzay5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1ZjQ0YTdhMTY4YjIwODNlY2VjNTEyYzQ1NWU4ZTk0
ZmIzZGExYjAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Vw
Y29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvSGFuZGxlclRh
c2subQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJIYW5kbGVyVGFzay5o
IgorCitAaW1wbGVtZW50YXRpb24gSGFuZGxlclRhc2sKKyAgICAKKysgKGluc3RhbmNldHlwZSlj
cmVhdGVXaXRoU2NoZWR1bGVyOihTY2hlZHVsZXIgKilzY2hlZHVsZXIgZGV2aWNlOihEZXZpY2Up
ZGV2aWNlIHByaW9yaXR5OihQcmlvcml0eSlwcmlvcml0eSBxdWV1ZTooUGFja2V0ICopcXVldWUK
K3sKKyAgICBIYW5kbGVyVGFzayAqdGFzayA9IFtzdXBlciBjcmVhdGVXaXRoU2NoZWR1bGVyOnNj
aGVkdWxlciBwcmlvcml0eTpwcmlvcml0eSBxdWV1ZTpxdWV1ZV07CisgICAgdGFzay0+X2Rldmlj
ZSA9IGRldmljZTsKKyAgICBbc2NoZWR1bGVyIGFkZFRhc2s6dGFza107CisgICAgcmV0dXJuIHRh
c2s7Cit9CisKKy0gKG51bGxhYmxlIFRhc2sgKilydW46KG51bGxhYmxlIFBhY2tldCAqKXBhY2tl
dAoreworICAgIGlmIChwYWNrZXQpIHsKKyAgICAgICAgaWYgKFtwYWNrZXQgaXNLaW5kT2ZDbGFz
czpbV29ya1BhY2tldCBjbGFzc11dKQorICAgICAgICAgICAgX3dvcmtRdWV1ZSA9IFtwYWNrZXQg
YWRkVG9RdWV1ZTpzZWxmLndvcmtRdWV1ZV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIF9k
ZXZpY2VRdWV1ZSA9IFtwYWNrZXQgYWRkVG9RdWV1ZTpzZWxmLmRldmljZVF1ZXVlXTsKKyAgICB9
CisgICAgaWYgKHNlbGYud29ya1F1ZXVlKSB7CisgICAgICAgIFdvcmtQYWNrZXQgKndvcmtQYWNr
ZXQgPSAoV29ya1BhY2tldCAqKXNlbGYud29ya1F1ZXVlOworICAgICAgICBpZiAod29ya1BhY2tl
dC5wcm9jZXNzZWQgPCBXb3JrUGFja2V0LnNpemUpIHsKKyAgICAgICAgICAgIGlmIChzZWxmLmRl
dmljZVF1ZXVlKSB7CisgICAgICAgICAgICAgICAgRGV2aWNlUGFja2V0ICpkZXZpY2VQYWNrZXQg
PSAoRGV2aWNlUGFja2V0ICopc2VsZi5kZXZpY2VRdWV1ZTsKKyAgICAgICAgICAgICAgICBfZGV2
aWNlUXVldWUgPSBkZXZpY2VQYWNrZXQubGluazsKKyAgICAgICAgICAgICAgICBkZXZpY2VQYWNr
ZXQubGV0dGVySW5kZXggPSBbd29ya1BhY2tldC5kYXRhW3dvcmtQYWNrZXQucHJvY2Vzc2VkXSBp
bnRWYWx1ZV07CisgICAgICAgICAgICAgICAgKyt3b3JrUGFja2V0LnByb2Nlc3NlZDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIHF1ZXVlOmRldmljZVBhY2tldF07Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBfd29ya1F1ZXVlID0g
d29ya1BhY2tldC5saW5rOworICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnNjaGVkdWxlciBxdWV1
ZTp3b3JrUGFja2V0XTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gW3NlbGYuc2NoZWR1
bGVyIHdhaXRDdXJyZW50XTsKK30KKworCitAZW5kCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3Rs
eU9iakMvSWRsZVRhc2suaCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkv
UmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9JZGxlVGFzay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY5M2JmOWViMWRhNmIyMWQxODdlYzBkMDAyNjg0N2RmYWZhZTQyOWYKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9z
dGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvSWRsZVRhc2suaApAQCAtMCwwICsxLDQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjaW1wb3J0ICJUYXNrLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisvKioKKyAqIEFuIGlkbGUgdGFz
ayBkb2Vzbid0IGRvIGFueSB3b3JrIGl0c2VsZiBidXQgY3ljbGVzIGNvbnRyb2wgYmV0d2VlbiB0
aGUgdHdvIGRldmljZSB0YXNrcy4KKyAqLworQGludGVyZmFjZSBJZGxlVGFzayA6IFRhc2sKKwor
KyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxl
ciBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3JpdHk7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5V
TExfRU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJ
L1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvSWRsZVRhc2subSBiL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hh
cmRzTW9zdGx5T2JqQy9JZGxlVGFzay5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlMzI5N2IwOWRlMDU0ZmRiMTdm
MGFhMThmZGU5NWFkNjFjMjlmOTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9i
akMvSWRsZVRhc2subQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJJZGxl
VGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gSWRsZVRhc2sgeworICAgIHVuc2lnbmVkIF9oYXNo
OworICAgIHVuc2lnbmVkIF9jb3VudDsKK30KKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZVdpdGhT
Y2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eTooUHJpb3JpdHkpcHJpb3Jp
dHkKK3sKKyAgICBJZGxlVGFzayAqdGFzayA9IFtzdXBlciBjcmVhdGVXaXRoU2NoZWR1bGVyOnNj
aGVkdWxlciBwcmlvcml0eTpwcmlvcml0eSBxdWV1ZTpuaWxdOworICAgIHRhc2stPl9oYXNoID0g
MTsKKyAgICB0YXNrLT5fY291bnQgPSAxMDAwOworICAgIFt0YXNrIHJlc3VtZV07CisgICAgW3Nj
aGVkdWxlciBhZGRUYXNrOnRhc2tdOworICAgIHJldHVybiB0YXNrOworfQorCistIChudWxsYWJs
ZSBUYXNrICopcnVuOihQYWNrZXQgKilwYWNrZXQKK3sKKyAgICBpZiAoIS0tX2NvdW50KQorICAg
ICAgICByZXR1cm4gW3NlbGYuc2NoZWR1bGVyIGhvbGRDdXJyZW50XTsKKworICAgIGlmICghKF9o
YXNoICYgMSkpIHsKKyAgICAgICAgX2hhc2ggPj49IDE7CisgICAgICAgIHJldHVybiBbc2VsZi5z
Y2hlZHVsZXIgcmVsZWFzZURldmljZTpBXTsKKyAgICB9CisKKyAgICBfaGFzaCA+Pj0gMTsKKyAg
ICBfaGFzaCBePSAweEQwMDg7CisgICAgcmV0dXJuIFtzZWxmLnNjaGVkdWxlciByZWxlYXNlRGV2
aWNlOkJdOworfQorCisKK0BlbmQKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVu
Y2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9QYWNr
ZXQuaCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0
bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9QYWNrZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzBiZTY3M2Rl
OWJmZTE1OWVkYzc2MGU2NWU3YzE0OTlmMTM1YTI3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFy
ZHNNb3N0bHlPYmpDL1BhY2tldC5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBv
cnQgIkRldmljZS5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1
bGF0ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAorICogb2YgdGhlIHBheWxvYWQg
ZGF0YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhlciBp
cyB0aGUKKyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0aGUg
dGFza3MuCisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlua2Vk
IGxpc3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBkYXRhIGFuZCB3b3JrbGlzdHMu
CisgKi8KK0Bwcm90b2NvbCBQYWNrZXRFeHBvcnRzIDxKU0V4cG9ydD4KKworQHByb3BlcnR5IChu
b25hdG9taWMsIGFzc2lnbikgRGV2aWNlIGRldmljZTsKKworQGVuZAorCitAaW50ZXJmYWNlIFBh
Y2tldCA6IE5TT2JqZWN0IDxQYWNrZXRFeHBvcnRzPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBEZXZpY2UgZGV2aWNlOworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgbnVs
bGFibGUpIFBhY2tldCAqbGluazsKKworKyAoaW5zdGFuY2V0eXBlKWNyZWF0ZTooRGV2aWNlKWRl
dmljZSB3aXRoTGluazoobnVsbGFibGUgUGFja2V0ICopbGluazsKKy0gKG5vbm51bGwgUGFja2V0
ICopYWRkVG9RdWV1ZToobnVsbGFibGUgUGFja2V0ICopcXVldWU7CisKK0BlbmQKKworQGludGVy
ZmFjZSBEZXZpY2VQYWNrZXQgOiBQYWNrZXQKKworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgaW50IGxldHRlckluZGV4OworCisrIChpbnN0YW5jZXR5cGUpY3JlYXRlOihEZXZpY2UpZGV2
aWNlIHdpdGhMaW5rOihudWxsYWJsZSBQYWNrZXQgKilsaW5rOworCitAZW5kCisKK0Bwcm90b2Nv
bCBXb3JrUGFja2V0RXhwb3J0cyA8UGFja2V0RXhwb3J0cywgSlNFeHBvcnQ+CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBwcm9jZXNzZWQ7CitAcHJvcGVydHkgKG5vbmF0b21p
Yywgc3Ryb25nLCByZWFkb25seSkgTlNBcnJheSAqZGF0YTsKKworQGVuZAorCitAaW50ZXJmYWNl
IFdvcmtQYWNrZXQgOiBQYWNrZXQgPFdvcmtQYWNrZXRFeHBvcnRzPgorCitAcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBpbnQgcHJvY2Vzc2VkOworQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZywgcmVhZG9ubHkpIE5TQXJyYXkgKmRhdGE7CisKKysgKGluc3RhbmNldHlwZSljcmVhdGVX
aXRoTGluazoobnVsbGFibGUgUGFja2V0ICopbGluazsKKysgKHVuc2lnbmVkKXNpemU7CisKK0Bl
bmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9i
akMvUGFja2V0Lm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hh
cmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvUGFja2V0Lm0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFi
NDJlZTM3ZmQ3ZTY1NTM4OTk3Y2UwZDJmNjllMjc3NDg1NDAyZgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpD
L1JpY2hhcmRzTW9zdGx5T2JqQy9QYWNrZXQubQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisjaW1wb3J0ICJQYWNrZXQuaCIKKworQGltcGxlbWVudGF0aW9uIFBhY2tldAorCisrIChpbnN0
YW5jZXR5cGUpY3JlYXRlOihEZXZpY2UpZGV2aWNlIHdpdGhMaW5rOihQYWNrZXQgKilsaW5rCit7
CisgICAgUGFja2V0ICpwYWNrZXQgPSBbW3NlbGYgYWxsb2NdIGluaXRdOworICAgIHBhY2tldC5k
ZXZpY2UgPSBkZXZpY2U7CisgICAgcGFja2V0LmxpbmsgPSBsaW5rOworICAgIHJldHVybiBwYWNr
ZXQ7Cit9CisKKy0gKFBhY2tldCAqKWFkZFRvUXVldWU6KFBhY2tldCAqKXF1ZXVlCit7CisgICAg
c2VsZi5saW5rID0gbmlsOworICAgIGlmICghcXVldWUpCisgICAgICAgIHJldHVybiBzZWxmOwor
ICAgIFBhY2tldCogbmV4dCA9IHF1ZXVlOworICAgIHdoaWxlIChuZXh0LmxpbmspCisgICAgICAg
IG5leHQgPSBuZXh0Lmxpbms7CisgICAgbmV4dC5saW5rID0gc2VsZjsKKyAgICByZXR1cm4gcXVl
dWU7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERldmljZVBhY2tldAorCisrIChpbnN0
YW5jZXR5cGUpY3JlYXRlOihEZXZpY2UpZGV2aWNlIHdpdGhMaW5rOihQYWNrZXQgKilsaW5rCit7
CisgICAgRGV2aWNlUGFja2V0ICpwYWNrZXQgPSBbc3VwZXIgY3JlYXRlOmRldmljZSB3aXRoTGlu
azpsaW5rXTsKKyAgICBwYWNrZXQubGV0dGVySW5kZXggPSAwOworICAgIHJldHVybiBwYWNrZXQ7
Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdvcmtQYWNrZXQKKworKyAoaW5zdGFuY2V0
eXBlKWNyZWF0ZVdpdGhMaW5rOihQYWNrZXQgKilsaW5rCit7CisgICAgV29ya1BhY2tldCAqcGFj
a2V0ID0gW3N1cGVyIGNyZWF0ZTpBIHdpdGhMaW5rOmxpbmtdOworICAgIHBhY2tldC5wcm9jZXNz
ZWQgPSAwOworICAgIHBhY2tldC0+X2RhdGEgPSBAW0AwLCBAMCwgQDAsIEAwXTsKKyAgICByZXR1
cm4gcGFja2V0OworfQorCisrICh1bnNpZ25lZClzaXplCit7CisgICAgcmV0dXJuIDQ7Cit9CisK
K0BlbmQKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkv
UmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9TY2hlZHVsZXIuaCBiL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hh
cmRzTW9zdGx5T2JqQy9TY2hlZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODMyMDBmZGY3MDgyMjAyMmQ1
NDY0ODU5YmU4NDU3MDFiNmM3ZjdjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlP
YmpDL1NjaGVkdWxlci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgIlBh
Y2tldC5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK0BjbGFzcyBUYXNrOworCitAcHJvdG9jb2wgU2NoZWR1bGVyRXhwb3J0cyA8SlNFeHBvcnQ+
CisKKy0gKG51bGxhYmxlIFRhc2sgKil3YWl0Q3VycmVudDsKKy0gKG51bGxhYmxlIFRhc2sgKilo
YW5kbGU6KFBhY2tldCAqKXBhY2tldDsKKworQGVuZAorCisvKioKKyogQSBzY2hlZHVsZXIgY2Fu
IGJlIHVzZWQgdG8gc2NoZWR1bGUgYSBzZXQgb2YgdGFza3MgYmFzZWQgb24gdGhlaXIgcmVsYXRp
dmUKKyogcHJpb3JpdGllcy4gIFNjaGVkdWxpbmcgaXMgZG9uZSBieSBtYWludGFpbmluZyBhIGxp
c3Qgb2YgdGFzayBjb250cm9sIGJsb2NrcworKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRh
dGEgcXVldWUgdGhleSBhcmUgcHJvY2Vzc2luZy4KKyovCitAaW50ZXJmYWNlIFNjaGVkdWxlciA6
IE5TT2JqZWN0IDxTY2hlZHVsZXJFeHBvcnRzPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNz
aWduLCByZWFkb25seSkgdW5zaWduZWQgcXVldWVDb3VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24sIHJlYWRvbmx5KSB1bnNpZ25lZCBob2xkQ291bnQ7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgc3Ryb25nLCByZWFkb25seSwgbnVsbGFibGUpIFRhc2sgKmN1cnJlbnRUYXNrOworQHBy
b3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgcmVhZG9ubHksIG51bGxhYmxlKSBUYXNrICpsaXN0
OworCisvKioKKyogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBieSB0aGlzIHNjaGVkdWxlci4K
KyovCistICh2b2lkKXNjaGVkdWxlOworCisvKioKKyogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayB0
byB0aGlzIHNjaGVkdWxlci4KKyovCistICh2b2lkKWFkZFRhc2s6KFRhc2sgKil0YXNrOworCisv
KioKKyogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJu
IHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyovCistIChudWxsYWJsZSBUYXNrICopcmVsZWFzZURl
dmljZTooRGV2aWNlKWRldmljZTsKKworLyoqCisqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0
aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyogdG8gcnVu
LiAgVGhlIGJsb2NrZWQgdGFzayB3aWxsIG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0IGlz
IGV4cGxpY2l0bHkKKyogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gaXQu
CisqLworLSAobnVsbGFibGUgVGFzayAqKWhvbGRDdXJyZW50OworCisvKioKKyogU3VzcGVuZCB0
aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250
cm9sIGJsb2NrCisqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5k
ZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisqLworLSAobnVsbGFibGUgVGFzayAq
KXdhaXRDdXJyZW50OworCisvKioKKyogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBl
bmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyogYXNzb2NpYXRlZCB3aXRoIHRo
ZSBwYWNrZXQgYW5kIG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQgaXMgY3VycmVudGx5Cisq
IHN1c3BlbmRlZC4KKyovCistIChudWxsYWJsZSBUYXNrICopcXVldWU6KFBhY2tldCAqKXBhY2tl
dDsKKworLSAobnVsbGFibGUgVGFzayAqKWhhbmRsZTooUGFja2V0ICopcGFja2V0OworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpD
L1NjaGVkdWxlci5tIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNo
YXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1NjaGVkdWxlci5tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY0NmU5NTFkYjQ5N2NhYjgwNGU2ODIyMDZkNTliMmFjY2Y2M2QxZjAKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5
T2JqQy9SaWNoYXJkc01vc3RseU9iakMvU2NoZWR1bGVyLm0KQEAgLTAsMCArMSwxMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNpbXBvcnQgIlNjaGVkdWxlci5oIgorCisjaW1wb3J0ICJEZXZpY2VUYXNrLmgi
CisjaW1wb3J0ICJIYW5kbGVyVGFzay5oIgorI2ltcG9ydCAiVGFzay5oIgorI2ltcG9ydCAiV29y
a2VyVGFzay5oIgorCitAaW1wbGVtZW50YXRpb24gU2NoZWR1bGVyCisgICAgCistICh2b2lkKXNj
aGVkdWxlCit7CisgICAgX2N1cnJlbnRUYXNrID0gc2VsZi5saXN0OworICAgIFRhc2sgKnRhc2s7
CisgICAgd2hpbGUgKCh0YXNrID0gc2VsZi5jdXJyZW50VGFzaykpIHsKKyAgICAgICAgUGFja2V0
ICpwYWNrZXQgPSBuaWw7CisgICAgICAgIHN3aXRjaCAodGFzay5zdGF0ZSkgeworICAgICAgICBj
YXNlIFdhaXRpbmdXaXRoUGFja2V0OgorICAgICAgICAgICAgcGFja2V0ID0gW3Rhc2sgdGFrZVBh
Y2tldF07CisgICAgICAgIGNhc2UgUnVuOgorICAgICAgICBjYXNlIFJ1bldpdGhQYWNrZXQ6Cisg
ICAgICAgICAgICBfY3VycmVudFRhc2sgPSBbdGFzayBydW46cGFja2V0XTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgX2N1cnJlbnRUYXNrID0gdGFz
ay5uZXh0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisgICAgCist
ICh2b2lkKWFkZFRhc2s6KFRhc2sgKil0YXNrCit7CisgICAgdGFzay5uZXh0ID0gc2VsZi5saXN0
OworICAgIF9saXN0ID0gdGFzazsKK30KKworLSAobnVsbGFibGUgVGFzayAqKXJlbGVhc2VEZXZp
Y2U6KERldmljZSlkZXZpY2UKK3sKKyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2ZpbmQ6XmJvb2wo
VGFzayAqdGFzaykgeworICAgICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbRGV2aWNl
VGFzayBjbGFzc11dICYmICgoRGV2aWNlVGFzayopdGFzaykuZGV2aWNlID09IGRldmljZTsKKyAg
ICB9XTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybiBuaWw7CisgICAgW3Rhc2sgcmVs
ZWFzZV9dOworICAgIGlmICh0YXNrLnByaW9yaXR5ID4gc2VsZi5jdXJyZW50VGFzay5wcmlvcml0
eSkKKyAgICAgICAgcmV0dXJuIHRhc2s7CisgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2s7Cit9
CisKKy0gKG51bGxhYmxlIFRhc2sgKilob2xkQ3VycmVudAoreworICAgICsrX2hvbGRDb3VudDsK
KyAgICBbc2VsZi5jdXJyZW50VGFzayBob2xkXTsKKyAgICByZXR1cm4gW3NlbGYuY3VycmVudFRh
c2sgbmV4dF07Cit9CisKKy0gKG51bGxhYmxlIFRhc2sgKil3YWl0Q3VycmVudAoreworICAgIFtz
ZWxmLmN1cnJlbnRUYXNrIHdhaXRdOworICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrOworfQor
CistIChudWxsYWJsZSBUYXNrICopcXVldWU6KFBhY2tldCAqKXBhY2tldAoreworICAgIGJvb2wg
KF5wcmVkaWNhdGUpKFRhc2sgKik7CisgICAgaWYgKFtwYWNrZXQgaXNLaW5kT2ZDbGFzczpbRGV2
aWNlUGFja2V0IGNsYXNzXV0pIHsKKyAgICAgICAgcHJlZGljYXRlID0gXmJvb2woVGFzayAqdGFz
aykgeworICAgICAgICAgICAgcmV0dXJuIFt0YXNrIGlzS2luZE9mQ2xhc3M6W0RldmljZVRhc2sg
Y2xhc3NdXSAmJiAoKERldmljZVRhc2sgKil0YXNrKS5kZXZpY2UgPT0gcGFja2V0LmRldmljZTsK
KyAgICAgICAgfTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcmVkaWNhdGUgPSBeYm9vbChUYXNr
ICp0YXNrKSB7CisgICAgICAgICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbV29ya2Vy
VGFzayBjbGFzc11dOworICAgICAgICB9OworICAgIH0KKyAgICBUYXNrICp0YXNrID0gW3NlbGYg
X2ZpbmQ6cHJlZGljYXRlXTsKKyAgICByZXR1cm4gW3NlbGYgX3F1ZXVlSW1wbDp0YXNrIHBhY2tl
dDpwYWNrZXRdOworfQorCistIChudWxsYWJsZSBUYXNrICopaGFuZGxlOihQYWNrZXQgKilwYWNr
ZXQKK3sKKyAgICBUYXNrICp0YXNrID0gW3NlbGYgX2ZpbmQ6XmJvb2woVGFzayAqdGFzaykgewor
ICAgICAgICByZXR1cm4gW3Rhc2sgaXNLaW5kT2ZDbGFzczpbSGFuZGxlclRhc2sgY2xhc3NdXSAm
JiAoKEhhbmRsZXJUYXNrKil0YXNrKS5kZXZpY2UgPT0gcGFja2V0LmRldmljZTsKKyAgICB9XTsK
KyAgICByZXR1cm4gW3NlbGYgX3F1ZXVlSW1wbDp0YXNrIHBhY2tldDpwYWNrZXRdOworfQorCisK
Ky0gKG51bGxhYmxlIFRhc2sgKilfcXVldWVJbXBsOihudWxsYWJsZSBUYXNrKil0YXNrIHBhY2tl
dDooUGFja2V0ICopcGFja2V0Cit7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm4gbmls
OworICAgICsrX3F1ZXVlQ291bnQ7CisgICAgcGFja2V0LmxpbmsgPSBuaWw7CisgICAgcmV0dXJu
IFt0YXNrIGNoZWNrUHJpb3JpdHlBZGQ6c2VsZi5jdXJyZW50VGFzayBwYWNrZXQ6cGFja2V0XTsK
K30KKworLSAobnVsbGFibGUgVGFzayAqKV9maW5kOihib29sICheKShUYXNrICopKXByZWRpY2F0
ZQoreworICAgIFRhc2sgKnRhc2sgPSBzZWxmLmxpc3Q7CisgICAgd2hpbGUgKHRhc2spIHsKKyAg
ICAgICAgaWYgKHByZWRpY2F0ZSh0YXNrKSkKKyAgICAgICAgICAgIHJldHVybiB0YXNrOworICAg
ICAgICB0YXNrID0gdGFzay5uZXh0OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCitAZW5k
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hh
cmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvVGFzay5oIGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlP
YmpDL1Rhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjkxZTQzNWQ5ZDA0MjU0MGQ4Nzk3MmVjNGQyOGFlNjkz
ZmEwMDk3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNv
bWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1Rhc2suaApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJQYWNrZXQuaCIKKyNpbXBvcnQgIlNj
aGVkdWxlci5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKwordHlwZWRlZiBOU19FTlVNKHVuc2lnbmVkLCBQcmlvcml0eSkg
eworICAgIElkbGUgPSAwLAorICAgIFdvcmtlciA9IDEwMDAsCisgICAgSGFuZGxlckEgPSAyMDAw
LAorICAgIEhhbmRsZXJCID0gMzAwMCwKKyAgICBEZXZpY2VBID0gNDAwMCwKKyAgICBEZXZpY2VC
ID0gNTAwMCwKK307CisKK3R5cGVkZWYgTlNfRU5VTSh1bnNpZ25lZCwgU3RhdGUpIHsKKyAgICBS
dW4gPSAwLAorICAgIEhhc1BhY2tldCA9IDEgPDwgMCwKKyAgICBXYWl0aW5nID0gMSA8PCAxLAor
ICAgIEhlbGQgPSAxIDw8IDIsCisgICAgCisgICAgUnVuV2l0aFBhY2tldCA9IFJ1biB8IEhhc1Bh
Y2tldCwKKyAgICBXYWl0aW5nV2l0aFBhY2tldCA9IFdhaXRpbmcgfCBIYXNQYWNrZXQsCit9Owor
CitAaW50ZXJmYWNlIFRhc2sgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ry
b25nLCByZWFkb25seSkgU2NoZWR1bGVyICpzY2hlZHVsZXI7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduLCByZWFkb25seSkgUHJpb3JpdHkgcHJpb3JpdHk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgc3Ryb25nLCBudWxsYWJsZSkgVGFzayAqbmV4dDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkgUGFja2V0ICpxdWV1ZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBhc3NpZ24sIHJlYWRvbmx5KSBTdGF0ZSBzdGF0ZTsKKworKyAoaW5zdGFuY2V0
eXBlKWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eToo
UHJpb3JpdHkpcHJpb3JpdHkgcXVldWU6KG51bGxhYmxlIFBhY2tldCAqKXF1ZXVlOworLSAobnVs
bGFibGUgVGFzayAqKXJ1bjoobnVsbGFibGUgUGFja2V0ICopcGFja2V0OworLSAodm9pZClyZWxl
YXNlXzsKKy0gKHZvaWQpaG9sZDsKKy0gKHZvaWQpd2FpdDsKKy0gKHZvaWQpcmVzdW1lOworLSAo
UGFja2V0ICopdGFrZVBhY2tldDsKKy0gKFRhc2sgKiljaGVja1ByaW9yaXR5QWRkOihUYXNrICop
dGFzayBwYWNrZXQ6KFBhY2tldCAqKXBhY2tldDsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1Jp
Y2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvVGFzay5tIGIvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0
bHlPYmpDL1Rhc2subQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2E4YjQ1ZjZhMjI1NDk0OGEzNzQ0YTUzMTI5MjJk
NjhlMGZhMTdjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9V
cGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1Rhc2subQpA
QCAtMCwwICsxLDg4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6
CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNpbXBvcnQgIlRhc2suaCIKKworQGltcGxlbWVudGF0aW9uIFRhc2sKKworKyAoaW5z
dGFuY2V0eXBlKWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlv
cml0eTooUHJpb3JpdHkpcHJpb3JpdHkgcXVldWU6KG51bGxhYmxlIFBhY2tldCAqKXF1ZXVlCit7
CisgICAgVGFzayAqdGFzayA9IFtbc3VwZXIgYWxsb2NdIGluaXRdOworICAgIHRhc2stPl9zY2hl
ZHVsZXIgPSBzY2hlZHVsZXI7CisgICAgdGFzay0+X3ByaW9yaXR5ID0gcHJpb3JpdHk7CisgICAg
dGFzay0+X3F1ZXVlID0gcXVldWU7CisgICAgaWYgKHF1ZXVlKQorICAgICAgICB0YXNrLT5fc3Rh
dGUgfD0gSGFzUGFja2V0OworICAgIHJldHVybiB0YXNrOworfQorCisKKy0gKG51bGxhYmxlIFRh
c2sgKilydW46KG51bGxhYmxlIFBhY2tldCAqKXBhY2tldAoreworICAgIE5TTG9nKEAiVGhpcyBt
ZXRob2QgbXVzdCBiZSBvdmVycmlkZGVuIik7CisgICAgZXhpdCgxKTsKK30KKworLSAodm9pZCly
ZWxlYXNlXworeworICAgIF9zdGF0ZSAmPSB+SGVsZDsKK30KKworLSAodm9pZClob2xkCit7Cisg
ICAgX3N0YXRlIHw9IEhlbGQ7Cit9CisKKy0gKHZvaWQpd2FpdAoreworICAgIF9zdGF0ZSB8PSBX
YWl0aW5nOworfQorCistICh2b2lkKXJlc3VtZQoreworICAgIF9zdGF0ZSAmPSB+V2FpdGluZzsK
K30KKworLSAoUGFja2V0ICopdGFrZVBhY2tldAoreworICAgIFBhY2tldCAqcGFja2V0ID0gc2Vs
Zi5xdWV1ZTsKKyAgICBfcXVldWUgPSBwYWNrZXQubGluazsKKyAgICBfc3RhdGUgPSBzZWxmLnF1
ZXVlID8gUnVuV2l0aFBhY2tldCA6IFJ1bjsKKyAgICByZXR1cm4gcGFja2V0OworfQorCistIChU
YXNrICopY2hlY2tQcmlvcml0eUFkZDooVGFzayAqKXRhc2sgcGFja2V0OihQYWNrZXQgKilwYWNr
ZXQKK3sKKyAgICBpZiAoIXNlbGYucXVldWUpIHsKKyAgICAgICAgX3F1ZXVlID0gcGFja2V0Owor
ICAgICAgICBfc3RhdGUgfD0gSGFzUGFja2V0OworICAgICAgICBpZiAoc2VsZi5wcmlvcml0eSA+
IHRhc2sucHJpb3JpdHkpCisgICAgICAgICAgICByZXR1cm4gc2VsZjsKKyAgICB9IGVsc2UKKyAg
ICAgICAgX3F1ZXVlID0gW3BhY2tldCBhZGRUb1F1ZXVlOnNlbGYucXVldWVdOworICAgIHJldHVy
biB0YXNrOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvV29ya2Vy
VGFzay5oIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01v
c3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1dvcmtlclRhc2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGQ0
ZDQxMmI5ZWYxZGMwZjAxNWExNThlNzA3MDc3OTA4MDAwZWVlCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMv
UmljaGFyZHNNb3N0bHlPYmpDL1dvcmtlclRhc2suaApAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjaW1wb3J0ICJUYXNrLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdvcmtlclRhc2sgOiBU
YXNrCisKKysgKGluc3RhbmNldHlwZSljcmVhdGVXaXRoU2NoZWR1bGVyOihTY2hlZHVsZXIgKilz
Y2hlZHVsZXIgcHJpb3JpdHk6KFByaW9yaXR5KXByaW9yaXR5IHF1ZXVlOihudWxsYWJsZSBQYWNr
ZXQgKilxdWV1ZTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpD
L1JpY2hhcmRzTW9zdGx5T2JqQy9Xb3JrZXJUYXNrLm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvV29y
a2VyVGFzay5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMWJjZDk0NWRkNzFmOTZkNzZmMzYxMzM2ZDI5N2JlZGIz
MjVhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29t
aW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvV29ya2VyVGFzay5t
CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgIldvcmtlclRhc2suaCIKKwor
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKworQGltcGxlbWVudGF0
aW9uIFdvcmtlclRhc2sgeworICAgIEpTVmFsdWUgKl9qczsKK30KKworKyAoaW5zdGFuY2V0eXBl
KWNyZWF0ZVdpdGhTY2hlZHVsZXI6KFNjaGVkdWxlciAqKXNjaGVkdWxlciBwcmlvcml0eTooUHJp
b3JpdHkpcHJpb3JpdHkgcXVldWU6KFBhY2tldCAqKXF1ZXVlCit7CisgICAgV29ya2VyVGFzayAq
dGFzayA9IFtzdXBlciBjcmVhdGVXaXRoU2NoZWR1bGVyOnNjaGVkdWxlciBwcmlvcml0eTpwcmlv
cml0eSBxdWV1ZTpxdWV1ZV07CisgICAgdGFzay0+X2pzID0gW3NlbGYuY29uc3RydWN0b3IgY29u
c3RydWN0V2l0aEFyZ3VtZW50czpAW3NjaGVkdWxlcl1dOworICAgIFtzY2hlZHVsZXIgYWRkVGFz
azp0YXNrXTsKKyAgICByZXR1cm4gdGFzazsKK30KKworKyAoSlNDb250ZXh0ICopY29udGV4dCB7
CisgICAgc3RhdGljIEpTQ29udGV4dCogY29udGV4dDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAg
IGNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIFtjb250ZXh0IHNl
dEV4Y2VwdGlvbkhhbmRsZXI6XihKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWUgKmV4Y2VwdGlv
bikgeworICAgICAgICAgICAgTlNMb2coQCIlQCIsIGV4Y2VwdGlvbi50b1N0cmluZyk7CisgICAg
ICAgICAgICBleGl0KDIpOworICAgICAgICB9XTsKKyAgICAgICAgCisgICAgICAgIE5TU3RyaW5n
ICpzb3VyY2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOkAicmljaGFyZHMu
anMiIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF07CisgICAgICAgIFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OnNvdXJjZV07CisgICAgfSk7CisgICAgcmV0dXJuIGNvbnRl
eHQ7Cit9CisKKysgKEpTVmFsdWUgKiljb25zdHJ1Y3RvciB7CisgICAgc3RhdGljIEpTVmFsdWUg
KmNvbnN0cnVjdG9yOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAg
IGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgY29uc3RydWN0b3IgPSBbW3Nl
bGYuY29udGV4dCBvYmplY3RGb3JLZXllZFN1YnNjcmlwdDpAImNyZWF0ZVdvcmtlclRhc2siXSBj
YWxsV2l0aEFyZ3VtZW50czpAW0AoQSksIEAoQiksIEAoV29ya1BhY2tldC5zaXplKV1dOworICAg
IH0pOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworLSAoVGFzayAqKXJ1bjooUGFja2V0
ICopcGFja2V0Cit7CisgICAgTlNBcnJheSogYXJndW1lbnRzID0gcGFja2V0ID8gQFtwYWNrZXRd
IDogQFtdOworICAgIHJldHVybiBbX2pzIGludm9rZU1ldGhvZDpAInJ1biIgd2l0aEFyZ3VtZW50
czphcmd1bWVudHNdLnRvT2JqZWN0OworfQorCitAZW5kCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01v
c3RseU9iakMvbWFpbi5tIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9S
aWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL21haW4ubQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
OGJlYTExNjYzNzcxNTVmM2UzYTAzMGM5YjIyYWRlY2Q4OTY0MmYzCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9i
akMvUmljaGFyZHNNb3N0bHlPYmpDL21haW4ubQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisjaW1wb3J0ICJEZXZpY2VUYXNrLmgiCisjaW1wb3J0ICJIYW5kbGVyVGFzay5oIgorI2ltcG9y
dCAiSWRsZVRhc2suaCIKKyNpbXBvcnQgIlBhY2tldC5oIgorI2ltcG9ydCAiU2NoZWR1bGVyLmgi
CisjaW1wb3J0ICJXb3JrZXJUYXNrLmgiCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5oPgorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgRVhQRUNURURfUVVFVUVfQ09VTlQgPSAyMzIy
Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKK3Zv
aWQgcnVuUmljaGFyZHMoKQoreworICAgIFNjaGVkdWxlciAqc2NoZWR1bGVyID0gW1tTY2hlZHVs
ZXIgYWxsb2NdIGluaXRdOworCisgICAgW0lkbGVUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6c2No
ZWR1bGVyIHByaW9yaXR5OklkbGVdOworCisgICAgeworICAgICAgICBXb3JrUGFja2V0ICpxdWV1
ZSA9IFtXb3JrUGFja2V0IGNyZWF0ZVdpdGhMaW5rOm5pbF07CisgICAgICAgIHF1ZXVlID0gW1dv
cmtQYWNrZXQgY3JlYXRlV2l0aExpbms6cXVldWVdOworICAgICAgICBbV29ya2VyVGFzayBjcmVh
dGVXaXRoU2NoZWR1bGVyOnNjaGVkdWxlciBwcmlvcml0eTpXb3JrZXIgcXVldWU6cXVldWVdOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgRGV2aWNlUGFja2V0ICpxdWV1ZSA9IFtEZXZpY2VQYWNr
ZXQgY3JlYXRlOkEgd2l0aExpbms6bmlsXTsKKyAgICAgICAgcXVldWUgPSBbRGV2aWNlUGFja2V0
IGNyZWF0ZTpBIHdpdGhMaW5rOiBxdWV1ZV07CisgICAgICAgIHF1ZXVlID0gW0RldmljZVBhY2tl
dCBjcmVhdGU6QSB3aXRoTGluazogcXVldWVdOworICAgICAgICBbSGFuZGxlclRhc2sgY3JlYXRl
V2l0aFNjaGVkdWxlcjpzY2hlZHVsZXIgZGV2aWNlOkEgcHJpb3JpdHk6SGFuZGxlckEgcXVldWU6
cXVldWVdOworICAgIH0KKworICAgIHsKKyAgICAgICAgRGV2aWNlUGFja2V0ICpxdWV1ZSA9IFtE
ZXZpY2VQYWNrZXQgY3JlYXRlOkIgd2l0aExpbms6bmlsXTsKKyAgICAgICAgcXVldWUgPSBbRGV2
aWNlUGFja2V0IGNyZWF0ZTpCIHdpdGhMaW5rOnF1ZXVlXTsKKyAgICAgICAgcXVldWUgPSBbRGV2
aWNlUGFja2V0IGNyZWF0ZTpCIHdpdGhMaW5rOnF1ZXVlXTsKKyAgICAgICAgW0hhbmRsZXJUYXNr
IGNyZWF0ZVdpdGhTY2hlZHVsZXI6c2NoZWR1bGVyIGRldmljZTpCIHByaW9yaXR5OkhhbmRsZXJC
IHF1ZXVlOnF1ZXVlXTsKKyAgICB9CisKKyAgICBbRGV2aWNlVGFzayBjcmVhdGVXaXRoU2NoZWR1
bGVyOnNjaGVkdWxlciBkZXZpY2U6QSBwcmlvcml0eTpEZXZpY2VBXTsKKyAgICBbRGV2aWNlVGFz
ayBjcmVhdGVXaXRoU2NoZWR1bGVyOnNjaGVkdWxlciBkZXZpY2U6QiBwcmlvcml0eTpEZXZpY2VC
XTsKKworICAgIFtzY2hlZHVsZXIgc2NoZWR1bGVdOworCisgICAgaWYgKHNjaGVkdWxlci5xdWV1
ZUNvdW50ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8IHNjaGVkdWxlci5ob2xkQ291bnQgIT0g
RVhQRUNURURfSE9MRF9DT1VOVCkgeworICAgICAgICBOU0xvZyhAIkVycm9yIGR1cmluZyBleGVj
dXRpb246IHF1ZXVlQ291bnQgPSAlZCwgaG9sZENvdW50ID0gJWQuIiwgc2NoZWR1bGVyLnF1ZXVl
Q291bnQsIHNjaGVkdWxlci5ob2xkQ291bnQpOworICAgICAgICBleGl0KDEpOworICAgIH0KK30K
KworCitpbnQgbWFpbigpCit7CisgICAgY29uc3QgdW5zaWduZWQgaXRlcmF0aW9ucyA9IDUwOwor
ICAgIGNvbnN0IENGVGltZUludGVydmFsIHN0YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7ICsraSkKKyAgICAgICAgcnVu
UmljaGFyZHMoKTsKKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBlbmQgPSBDQUN1cnJlbnRNZWRp
YVRpbWUoKTsKKyAgICBwcmludGYoIiVkXG4iLCAoaW50KSgoZW5kLXN0YXJ0KSAqIDEwMDApKTsK
KyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
VXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9yaWNoYXJk
cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0
bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9yaWNoYXJkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzM2MDU2
MjBlNjI2MDNmNjgxYjlmZjYzMWM4MDI0NzBiNWM2NmJlCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmlj
aGFyZHNNb3N0bHlPYmpDL3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
K2Z1bmN0aW9uIGNyZWF0ZVdvcmtlclRhc2soZGV2aWNlQSwgZGV2aWNlQiwgREFUQV9TSVpFKSB7
CisgICAgcmV0dXJuIGNsYXNzIHsKKyAgICAgICAgY29uc3RydWN0b3Ioc2NoZWR1bGVyKSB7Cisg
ICAgICAgICAgICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgICAgICAgICAgIHRoaXMu
ZGV2aWNlID0gZGV2aWNlQTsKKyAgICAgICAgICAgIHRoaXMubGV0dGVySW5kZXggPSAwOworICAg
ICAgICB9CisKKyAgICAgICAgcnVuKHBhY2tldCkgeworICAgICAgICAgICAgaWYgKHBhY2tldCA9
PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLndhaXRDdXJy
ZW50KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNl
ID0gdGhpcy5kZXZpY2UgPT09IGRldmljZUEgPyBkZXZpY2VCIDogZGV2aWNlQTsKKyAgICAgICAg
ICAgICAgICBwYWNrZXQuZGV2aWNlID0gdGhpcy5kZXZpY2U7CisgICAgICAgICAgICAgICAgcGFj
a2V0LnByb2Nlc3NlZCA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBE
QVRBX1NJWkU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4Kys7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxldHRlckluZGV4ID4gMjYpCisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgcGFja2V0LmRhdGFbaV0gPSB0aGlzLmxldHRlckluZGV4OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaGFuZGxlKHBhY2tldCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNN
b3N0bHlPYmpDL3JpY2hhcmRzLm0gYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5n
QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvcmljaGFyZHMubQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYWViYmQzYzE4MTYyOGMyM2U4YmZmNDY4ZWYyZWUzYzkxN2JhNjVhCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJk
c01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL3JpY2hhcmRzLm0KQEAgLTAsMCArMSwyNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorKi8KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21p
bmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI5NjBhNWRhYTJhNWM4YmI4NGRlYjU5MzM5ZmUyMTk3YzU2YTAz
N2UKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5n
QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMzIyIEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2
ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJ
b2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQwQUFD
MzcyNDk5QkQ3QTAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzNjI0OTlCRDZDMDAwMUYxMUUgLyogcmlj
aGFyZHMuanMgKi87IH07CisJCTE0MEFBQzQwMjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dp
ZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMz
ODI0OUIwMUQxMDAwMUYxMUUgLyogUGFja2V0LnN3aWZ0ICovOyB9OworCQkxNDBBQUM0MTI0OUIw
MUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzOTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMu
c3dpZnQgKi87IH07CisJCTE0MEFBQzQyMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dp
ZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMz
QTI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0MzI0
OUIwMUQxMDAwMUYxMUUgLyogVGFzay5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNCMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0
ICovOyB9OworCQkxNDBBQUM0NDI0OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzQzI0OUIw
MUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQgKi87IH07CisJCTE0MEFBQzQ1MjQ5QjAxRDEw
MDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNEMjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFz
ay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDYyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2su
c3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBB
QUMzRTI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFD
NDcyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzRjI0OUIwMUQxMDAwMUYxMUUgLyog
RGV2aWNlVGFzay5zd2lmdCAqLzsgfTsKKwkJMTQxNUFEMjYyNDk5QkM1QzAwNUJCMkU0IC8qIG1h
aW4uc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDE1QUQyNTI0OTlCQzVDMDA1QkIyRTQgLyogbWFpbi5zd2lmdCAqLzsgfTsKKy8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KKwkJMTQxNUFEMjAyNDk5QkM1QzAwNUJCMkU0IC8qIENvcHlGaWxlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAx
MjsKKwkJCWRzdFBhdGggPSAiIjsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsKKwkJCWZpbGVz
ID0gKAorCQkJCTE0MEFBQzM3MjQ5OUJEN0EwMDAxRjExRSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5
RmlsZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxNDBBQUMzNjI0OTlCRDZDMDAw
MUYxMUUgLyogcmljaGFyZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSByaWNoYXJkcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDMzgy
NDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dp
ZnQ7IHBhdGggPSBQYWNrZXQuc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0
MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5zd2lmdCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuc3dpZnQ7IHBhdGggPSByaWNoYXJkcy5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTQwQUFDM0EyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBTY2hlZHVsZXIuc3dpZnQ7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNCMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3
aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IFRhc2suc3dpZnQ7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNDMjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxl
VGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBJZGxlVGFzay5z
d2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0QyNDlCMDFEMTAwMDFG
MTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0
aCA9IEhhbmRsZXJUYXNrLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBB
QUMzRTI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuc3dpZnQ7IHBhdGggPSBXb3JrZXJUYXNrLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDBBQUMzRjI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBEZXZpY2VUYXNrLnN3aWZ0OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmlj
aGFyZHNNb3N0bHlTd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gUmljaGFyZHNNb3N0bHlTd2lmdDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKKwkJMTQxNUFEMjUyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3
aWZ0OyBwYXRoID0gbWFpbi5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDE1QUQxRjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3
b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLwor
CQkxNDE1QUQxOTI0OTlCQzVCMDA1QkIyRTQgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3Rs
eVN3aWZ0ICovLAorCQkJCTE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLywK
KwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxNDE1QUQyMzI0OTlC
QzVDMDA1QkIyRTQgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01vc3Rs
eVN3aWZ0ICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCTE0MTVBRDI0MjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc01v
c3RseVN3aWZ0ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkxNDBBQUMzRjI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCAqLywKKwkJCQkx
NDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyogSGFuZGxlclRhc2suc3dpZnQgKi8sCisJCQkJMTQw
QUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0ICovLAorCQkJCTE0MTVBRDI1
MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0ICovLAorCQkJCTE0MEFBQzM4MjQ5QjAxRDEw
MDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi8sCisJCQkJMTQwQUFDMzYyNDk5QkQ2QzAwMDFGMTFF
IC8qIHJpY2hhcmRzLmpzICovLAorCQkJCTE0MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNo
YXJkcy5zd2lmdCAqLywKKwkJCQkxNDBBQUMzQTI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVy
LnN3aWZ0ICovLAorCQkJCTE0MEFBQzNCMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICov
LAorCQkJCTE0MEFBQzNFMjQ5QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovLAor
CQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc01vc3RseVN3aWZ0OworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBS
aWNoYXJkc01vc3RseVN3aWZ0ICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTVBRDI5MjQ5OUJDNUMwMDVCQjJFNCAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNNb3N0bHlT
d2lmdCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDE1QUQxRTI0OTlCQzVDMDA1QkIy
RTQgLyogU291cmNlcyAqLywKKwkJCQkxNDE1QUQxRjI0OTlCQzVDMDA1QkIyRTQgLyogRnJhbWV3
b3JrcyAqLywKKwkJCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICovLAor
CQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJ
KTsKKwkJCW5hbWUgPSBSaWNoYXJkc01vc3RseVN3aWZ0OworCQkJcHJvZHVjdE5hbWUgPSBSaWNo
YXJkc01vc3RseVN3aWZ0OworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0MTVBRDIyMjQ5OUJDNUMw
MDVCQjJFNCAvKiBSaWNoYXJkc01vc3RseVN3aWZ0ICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29t
LmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQg
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJMTQxNUFEMUEy
NDk5QkM1QjAwNUJCMkU0IC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJv
amVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAxMjAw
OworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMjAwOworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7
CisJCQkJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xz
VmVyc2lvbiA9IDEyLjA7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNNb3N0bHlTd2lmdCIgKi87CisJCQljb21w
YXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSA5LjMiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBl
bjsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAor
CQkJCWVuLAorCQkJCUJhc2UsCisJCQkpOworCQkJbWFpbkdyb3VwID0gMTQxNUFEMTkyNDk5QkM1
QjAwNUJCMkU0OworCQkJcHJvZHVjdFJlZkdyb3VwID0gMTQxNUFEMjMyNDk5QkM1QzAwNUJCMkU0
IC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290
ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCAvKiBS
aWNoYXJkc01vc3RseVN3aWZ0ICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkx
NDE1QUQxRTI0OTlCQzVDMDA1QkIyRTQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTE0MEFBQzQ3MjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0
IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDUyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJU
YXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDQyNDlCMDFEMTAwMDFGMTFFIC8q
IElkbGVUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMjYyNDk5QkM1QzAwNUJC
MkU0IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLywKKwkJCQkxNDBBQUM0MDI0OUIwMUQxMDAw
MUYxMUUgLyogUGFja2V0LnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDEyNDlCMDFE
MTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDIy
NDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0
MEFBQzQzMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJ
MTQwQUFDNDYyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgaW4gU291cmNlcyAq
LywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
fTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhD
QnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQxNUFEMjcyNDk5QkM1QzAwNUJCMkU0
IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNM
QU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09C
SkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdF
X1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7
CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNf
QVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9C
T09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBS
RUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNU
X09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElP
Tl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklU
RV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9P
VF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZS
QU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lT
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURf
QVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJM
RV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZ
RVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJ
CUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9
IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19OT19DT01NT05f
QkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19Q
UkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5o
ZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlH
Q0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElB
TElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJ
T04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9
IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJT05MWV9BQ1RJ
VkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0FDVElWRV9D
T01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xF
VkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDE1QUQy
ODI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJf
UEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5H
X0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJ
CUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhf
TElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJ
CUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFL
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
Q09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFO
R19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBU
WV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5U
X0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZF
UlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9R
VU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
UkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNM
QU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNB
VEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVf
TlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVT
OworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJR0NDX05PX0NPTU1P
Tl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0ND
X1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJ
WkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9O
ID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBO
TzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJ
U1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xlbW9kdWxlOworCQkJCVNXSUZUX09QVElNSVpB
VElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0
MTVBRDJBMjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUg
PSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlT
V0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQx
NUFEMkIyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxF
ID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8q
IEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmln
dXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDE1QUQxRDI0OTlCQzVCMDA1QkIyRTQgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc01vc3RseVN3aWZ0
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCTE0MTVBRDI3MjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLywKKwkJ
CQkxNDE1QUQyODI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBSZWxlYXNlOworCQl9OworCQkxNDE1QUQyOTI0OTlCQzVDMDA1QkIyRTQgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzTW9zdGx5U3dp
ZnQiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCisJCQkJMTQxNUFEMkEyNDk5QkM1QzAwNUJCMkU0IC8qIERlYnVnICovLAor
CQkJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9u
ICovCisJfTsKKwlyb290T2JqZWN0ID0gMTQxNUFEMUEyNDk5QkM1QjAwNUJCMkU0IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9V
cGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVw
cm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlTd2lmdC54Y3NjaGVtZSBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lm
dC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Jp
Y2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQyZWE5ODkyZjIyZjUyYjFi
ZGVlN2I4ODE2ZWQ5Njc0NzNjN2U5MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3Rs
eVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dp
ZnQueGNzY2hlbWUKQEAgLTAsMCArMSw4MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzxTY2hlbWUKKyAgIExhc3RVcGdyYWRlVmVyc2lvbiA9ICIxMjAwIgorICAg
dmVyc2lvbiA9ICIxLjciPgorICAgPEJ1aWxkQWN0aW9uCisgICAgICBwYXJhbGxlbGl6ZUJ1aWxk
YWJsZXMgPSAiWUVTIgorICAgICAgYnVpbGRJbXBsaWNpdERlcGVuZGVuY2llcyA9ICJZRVMiPgor
ICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KKyAgICAgICAgIDxCdWlsZEFjdGlvbkVudHJ5Cisg
ICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JS
dW5uaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUHJvZmlsaW5nID0gIllFUyIKKyAg
ICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9y
QW5hbHl6aW5nID0gIllFUyI+CisgICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAg
ICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICAg
ICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAg
ICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAg
ICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAg
ICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5U3dpZnQu
eGNvZGVwcm9qIj4KKyAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgICAg
PC9CdWlsZEFjdGlvbkVudHJ5PgorICAgICAgPC9CdWlsZEFjdGlvbkVudHJpZXM+CisgICA8L0J1
aWxkQWN0aW9uPgorICAgPFRlc3RBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJE
ZWJ1ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2Vy
Rm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZp
ZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCisgICAgICBzaG91
bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+CisgICAgICA8VGVzdGFibGVzPgorICAg
ICAgPC9UZXN0YWJsZXM+CisgICA8L1Rlc3RBY3Rpb24+CisgICA8TGF1bmNoQWN0aW9uCisgICAg
ICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRl
bnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAg
IHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5M
YXVuY2hlci5MTERCIgorICAgICAgbGF1bmNoU3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdv
cmtpbmdEaXJlY3RvcnkgPSAiTk8iCisgICAgICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVu
Y2ggPSAiTk8iCisgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBk
ZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2lt
dWxhdGlvbiA9ICJZRVMiPgorICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAg
ICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVy
ZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAg
ICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisg
ICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAg
ICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICBS
ZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2Rl
cHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxl
UHJvZHVjdFJ1bm5hYmxlPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8UHJvZmlsZUFjdGlvbgor
ICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBzaG91bGRVc2VMYXVu
Y2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElkZW50aWZpZXIgPSAiIgor
ICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1l
bnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisg
ICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxl
UmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisg
ICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJF
NCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAg
ICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAg
ICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5U3dpZnQu
eGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWls
ZGFibGVQcm9kdWN0UnVubmFibGU+CisgICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFj
dGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFj
dGlvbj4KKyAgIDxBcmNoaXZlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVs
ZWFzZSIKKyAgICAgIHJldmVhbEFyY2hpdmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNo
aXZlQWN0aW9uPgorICAgPEluc3RhbGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9
ICJSZWxlYXNlIj4KKyAgIDwvSW5zdGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0
L1JpY2hhcmRzTW9zdGx5U3dpZnQvRGV2aWNlVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3
aWZ0L0RldmljZVRhc2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM2MWFiNDE0YjYyYzgyNzBkNTZiMTRj
NGU3YmFhNGUyZWQ5MDY4MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0
L0RldmljZVRhc2suc3dpZnQKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IEZv
dW5kYXRpb24KKworQG9iamMgZW51bSBEZXZpY2UgOiBJbnQgeworICAgIGNhc2UgQQorICAgIGNh
c2UgQgorfQorCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNo
IHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZy
b20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICovCitjbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7Cisg
ICAgbGV0IGRldmljZTogRGV2aWNlCisgICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQYWNr
ZXQ/ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIs
IGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBsZXQg
dGFzayA9IERldmljZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBw
cmlvcml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKKyAg
ICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/Cisg
ICAgeworICAgICAgICBpZiBwYWNrZXQgPT0gbmlsIHsKKyAgICAgICAgICAgIGd1YXJkIGxldCBw
YWNrZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYuc2NoZWR1bGVyLndhaXRDdXJyZW50KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHNlbGYucGVuZGluZ1BhY2tldCA9IG5pbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1
bGVyLmhhbmRsZShwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYucGVu
ZGluZ1BhY2tldCA9IChwYWNrZXQgYXMhIERldmljZVBhY2tldCkKKyAgICAgICAgcmV0dXJuIHNl
bGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICB9CisKKyAgICBwcml2YXRlIGluaXQoc2No
ZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisg
ICAgeworICAgICAgICBzZWxmLmRldmljZSA9IGRldmljZQorICAgICAgICBzdXBlci5pbml0KHNj
aGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgfQorfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNN
b3N0bHlTd2lmdC9IYW5kbGVyVGFzay5zd2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTU5ZDkwZjc0Yzg0ZWU2
NTgwMTY5OTEyZWYyZDU1NWE1NjE5ZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9z
dGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
aW1wb3J0IEZvdW5kYXRpb24KK2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCisvKioKKyAqIEEgdGFz
ayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYu
CisgKi8KK0BvYmpjIHByb3RvY29sIEhhbmRsZXJUYXNrRXhwb3J0cyA6IEpTRXhwb3J0IHsKK30K
KworQG9iamMgcHVibGljIGNsYXNzIEhhbmRsZXJUYXNrIDogVGFzaywgSGFuZGxlclRhc2tFeHBv
cnRzIHsKKyAgICB2YXIgZGV2aWNlOiBEZXZpY2UKKyAgICB2YXIgd29ya1F1ZXVlIDogV29ya1Bh
Y2tldD8gPSBuaWwKKyAgICB2YXIgZGV2aWNlUXVldWUgOiBEZXZpY2VQYWNrZXQ/ID0gbmlsCisK
KyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2
aWNlLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBEZXZpY2VQYWNrZXQpCisgICAgeworICAg
ICAgICBsZXQgdGFzayA9IEhhbmRsZXJUYXNrKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBkZXZpY2U6
IGRldmljZSwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVldWUpCisgICAgICAgIHNjaGVk
dWxlci5hZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNr
ZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBpZiBsZXQgcCA9IHBhY2tldCB7
CisgICAgICAgICAgICBpZiBsZXQgd29yayA9IHAgYXM/IFdvcmtQYWNrZXQgeworICAgICAgICAg
ICAgICAgIHNlbGYud29ya1F1ZXVlID0gd29yay5hZGRUbyhxdWV1ZTogc2VsZi53b3JrUXVldWUp
IGFzISBXb3JrUGFja2V0PworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
ZWxmLmRldmljZVF1ZXVlID0gKHAgYXMhIERldmljZVBhY2tldCkuYWRkVG8ocXVldWU6IHNlbGYu
ZGV2aWNlUXVldWUpIGFzISBEZXZpY2VQYWNrZXQ/CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgbGV0IHdvcmtQYWNrZXQgPSBzZWxmLndvcmtRdWV1ZSB7CisgICAgICAgICAg
ICBsZXQgcHJvY2Vzc2VkID0gd29ya1BhY2tldC5wcm9jZXNzZWQKKyAgICAgICAgICAgIGlmIChw
cm9jZXNzZWQgPCBXb3JrUGFja2V0LlNJWkUpIHsKKyAgICAgICAgICAgICAgICBpZiBsZXQgZGV2
aWNlUGFja2V0ID0gc2VsZi5kZXZpY2VRdWV1ZSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
ZGV2aWNlUXVldWUgPSBkZXZpY2VQYWNrZXQubGluayBhcyEgRGV2aWNlUGFja2V0PworICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VQYWNrZXQubGV0dGVySW5kZXggPSB3b3JrUGFja2V0LmRhdGFb
cHJvY2Vzc2VkXQorICAgICAgICAgICAgICAgICAgICB3b3JrUGFja2V0LnByb2Nlc3NlZCA9IHBy
b2Nlc3NlZCArIDEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnF1
ZXVlKHBhY2tldDogZGV2aWNlUGFja2V0KQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VsZi53b3JrUXVldWUgPSB3b3JrUGFja2V0Lmxp
bmsgYXMhIFdvcmtQYWNrZXQ/CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVy
LnF1ZXVlKHBhY2tldDogd29ya1BhY2tldCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQoKQorICAgIH0KKworICAgIHBy
aXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNlOiBEZXZpY2UsIHByaW9yaXR5
OiBQcmlvcml0eSwgcXVldWU6IERldmljZVBhY2tldCkKKyAgICB7CisgICAgICAgIHNlbGYuZGV2
aWNlID0gZGV2aWNlCisgICAgICAgIHN1cGVyLmluaXQoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHBy
aW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9S
aWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQv
SWRsZVRhc2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU4Nzc5MjUyYTE5MTFkZDcxMTk2MTVkZTlhMmVh
MDUwYTU0ODUwZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
VXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0lkbGVU
YXNrLnN3aWZ0CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKy8qKgorICogQW4gaWRsZSB0
YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsgaXRzZWxmIGJ1dCBjeWNsZXMgY29udHJvbCBiZXR3ZWVu
IHRoZSB0d28gZGV2aWNlIHRhc2tzLgorICovCitjbGFzcyBJZGxlVGFzayA6IFRhc2sgeworICAg
IHZhciBoYXNoXyA6IEludCA9IDEKKyAgICB2YXIgY291bnQgOiBJbnQgPSAxMDAwCisKKyAgICBz
dGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0
eSkKKyAgICB7CisgICAgICAgIGxldCB0YXNrID0gSWRsZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVs
ZXIsIHByaW9yaXR5OiBwcmlvcml0eSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNr
KQorICAgIH0KKworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFz
az8KKyAgICB7CisgICAgICBzZWxmLmNvdW50IC09IDEKKyAgICAgIGlmIHNlbGYuY291bnQgPT0g
MCB7CisgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICAg
IH0KKyAgICAgIGlmIChzZWxmLmhhc2hfICYgMSkgPT0gMCB7CisgICAgICAgIHNlbGYuaGFzaF8g
PSBzZWxmLmhhc2hfID4+IDEKKyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVhc2Vf
KGRldmljZTogLkEpCisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxmLmhhc2hfID0gKHNlbGYu
aGFzaF8gPj4gMSkgXiAweEQwMDgKKyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVh
c2VfKGRldmljZTogLkIpCisgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0KHNjaGVk
dWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgc3VwZXIu
aW5pdChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5KQorICAgICAgc2Vs
Zi5yZXN1bWUoKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVu
Y2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Bh
Y2tldC5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFy
ZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1BhY2tldC5zd2lmdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOWE0ZDk1NThlYjQ3M2I2NzdmZGI3OWNlZGVkZjQxOWVmMGJmZWRlCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvUGFja2V0LnN3aWZ0CkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKK2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCisvKioKKyAqIEEgc2ltcGxlIHBh
Y2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBleGFj
dCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBpcyBu
b3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdvcmsg
cGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2Fycnlp
bmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQgYm90
aCBhcworICogZGF0YSBhbmQgd29ya2xpc3RzLgorICovCisKK0BvYmpjIHByb3RvY29sIFBhY2tl
dEV4cG9ydHMgOiBKU0V4cG9ydCB7CisgICAgdmFyIGRldmljZSA6IERldmljZSB7IGdldCBzZXQg
fQorfQorCitAb2JqYyBwdWJsaWMgY2xhc3MgUGFja2V0IDogTlNPYmplY3QsIFBhY2tldEV4cG9y
dHMgeworICAgIGR5bmFtaWMgdmFyIGRldmljZSA6IERldmljZQorICAgIHZhciBsaW5rIDogUGFj
a2V0PworCisgICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0PykKKyAgICB7Cisg
ICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHNlbGYubGluayA9IGxpbmsKKyAg
ICB9CisKKyAgICAvKioKKyAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEgd29y
a2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICAgICovCisgICAgZnVuYyBhZGRUbyhx
dWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7CisgICAgICAgIHNlbGYubGluayA9IG5pbAorICAg
ICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHNl
bGYKKyAgICAgICAgfQorICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmlsIHsKKyAgICAgICAg
ICAgIG5leHQgPSBuZXh0LmxpbmshCisgICAgICAgIH0KKyAgICAgICAgbmV4dC5saW5rID0gc2Vs
ZgorICAgICAgICByZXR1cm4gcXVldWU7CisgICAgfQorfQorCitwdWJsaWMgZmluYWwgY2xhc3Mg
RGV2aWNlUGFja2V0IDogUGFja2V0IHsKKyAgICB2YXIgbGV0dGVySW5kZXggOiBJbnQgPSAwCit9
CisKK0BvYmpjIHByb3RvY29sIFdvcmtQYWNrZXRFeHBvcnRzIDogUGFja2V0RXhwb3J0cywgSlNF
eHBvcnQgeworICAgIHZhciBwcm9jZXNzZWQgOiBJbnQgeyBnZXQgc2V0IH0KKyAgICB2YXIgZGF0
YSA6IFtJbnRdIHsgZ2V0IHNldCB9Cit9CisKK0BvYmpjIHB1YmxpYyBmaW5hbCBjbGFzcyBXb3Jr
UGFja2V0IDogUGFja2V0LCBXb3JrUGFja2V0RXhwb3J0cyB7CisgICAgc3RhdGljIGxldCBTSVpF
IDogSW50ID0gNAorCisgICAgZHluYW1pYyB2YXIgcHJvY2Vzc2VkIDogSW50ID0gMAorICAgIGR5
bmFtaWMgdmFyIGRhdGEgOiBbSW50XSA9IFtJbnRdKHJlcGVhdGluZzogMCwgY291bnQ6IFNJWkUp
CisKKyAgICBpbml0KGxpbms6IFBhY2tldD8pCisgICAgeworICAgICAgICBzdXBlci5pbml0KGRl
dmljZTogLkEsIGxpbms6IGxpbmspCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9z
dGx5U3dpZnQvU2NoZWR1bGVyLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNv
bWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvU2NoZWR1bGVy
LnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM4OWZmN2IyZmZmZTIzYjI0ZjY5Njk2OGVhNDgyOTllMzU0ZDE2
YzYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5n
QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9TY2hlZHVsZXIuc3dp
ZnQKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBKYXZhU2NyaXB0Q29yZQor
CitAb2JqYyBwcm90b2NvbCBTY2hlZHVsZXJFeHBvcnRzIDogSlNFeHBvcnQgeworICAgIGZ1bmMg
d2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIGZ1bmMgaGFuZGxlKHBhY2tldDogV29ya1BhY2tl
dCkgLT4gVGFzaz8KK30KKworLyoqCisqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVk
dWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisqIHByaW9yaXRpZXMu
ICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0IG9mIHRhc2sgY29udHJv
bCBibG9ja3MKKyogd2hpY2ggaG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJl
IHByb2Nlc3NpbmcuCisqIEBjb25zdHJ1Y3RvcgorKi8KK0BvYmpjIHB1YmxpYyBjbGFzcyBTY2hl
ZHVsZXIgOiBOU09iamVjdCwgU2NoZWR1bGVyRXhwb3J0cyB7CisgICAgcHJpdmF0ZShzZXQpIHZh
ciBxdWV1ZUNvdW50ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgaG9sZENvdW50ID0gMAorICAg
IHByaXZhdGUoc2V0KSB2YXIgY3VycmVudFRhc2sgOiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUo
c2V0KSB2YXIgbGlzdCA6IFRhc2s/ID0gbmlsCisKKyAgICAvKioKKyAgICAqIEV4ZWN1dGUgdGhl
IHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgICAgKi8KKyAgICBmdW5jIHNjaGVk
dWxlKCkKKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSBzZWxmLmxpc3QKKyAgICAg
ICAgd2hpbGUgbGV0IHRhc2sgPSBzZWxmLmN1cnJlbnRUYXNrIHsKKyAgICAgICAgICAgIHZhciBw
YWNrZXQgOiBQYWNrZXQ/ID0gbmlsCisgICAgICAgICAgICBzd2l0Y2ggdGFzay5zdGF0ZSB7Cisg
ICAgICAgICAgICBjYXNlIC53YWl0aW5nV2l0aFBhY2tldDoKKyAgICAgICAgICAgICAgICBwYWNr
ZXQgPSB0YXNrLnRha2VQYWNrZXQoKQorICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoCisgICAg
ICAgICAgICBjYXNlIC5ydW4sIC5ydW5XaXRoUGFja2V0OgorICAgICAgICAgICAgICAgIHNlbGYu
Y3VycmVudFRhc2sgPSB0YXNrLnJ1bihwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50VGFzayA9IHRhc2submV4dAorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBBZGQgdGhlIHNwZWNp
ZmllZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICAgICovCisgICAgZnVuYyBhZGQodGFzazog
VGFzaykKKyAgICB7CisgICAgICAgIHRhc2submV4dCA9IHNlbGYubGlzdAorICAgICAgICBzZWxm
Lmxpc3QgPSB0YXNrCisgICAgfQorCisgICAgLyoqCisgICAgKiBSZWxlYXNlIGEgdGFzayB0aGF0
IGlzIGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVuLgor
ICAgICovCisgICAgZnVuYyByZWxlYXNlXyhkZXZpY2U6IERldmljZSkgLT4gVGFzaz8KKyAgICB7
CisgICAgICAgIGd1YXJkIGxldCB0YXNrIDogRGV2aWNlVGFzayA9IGZpbmQod2hlcmU6IHsgJDAu
ZGV2aWNlID09IGRldmljZSB9KSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuaWwKKyAgICAg
ICAgfQorICAgICAgICB0YXNrLnJlbGVhc2VfKCkKKyAgICAgICAgaWYgdGFzay5wcmlvcml0eSA+
IHNlbGYuY3VycmVudFRhc2shLnByaW9yaXR5IHsKKyAgICAgICAgICAgIHJldHVybiB0YXNrCisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2sKKyAgICB9CisKKyAgICAv
KioKKyAgICAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0
aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAgICAqIHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRh
c2sgd2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNpdGx5CisgICAg
KiByZWxlYXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAgICAqLworICAg
IGZ1bmMgaG9sZEN1cnJlbnQoKSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgc2VsZi5ob2xkQ291
bnQgKz0gMQorICAgICAgICBzZWxmLmN1cnJlbnRUYXNrIS5ob2xkKCkKKyAgICAgICAgcmV0dXJu
IHNlbGYuY3VycmVudFRhc2shLm5leHQKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFN1c3BlbmQg
dGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0IHRhc2sgY29u
dHJvbCBibG9jaworICAgICogdG8gcnVuLiAgSWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gdGhlIHN1
c3BlbmRlZCB0YXNrIGl0IHdpbGwgYmUgbWFkZSBydW5uYWJsZS4KKyAgICAqLworICAgIGZ1bmMg
d2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgc2VsZi5jdXJyZW50VGFzayEu
d2FpdCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrCisgICAgfQorCisgICAgLyoq
CisgICAgKiBBZGQgdGhlIHNwZWNpZmllZCBwYWNrZXQgdG8gdGhlIGVuZCBvZiB0aGUgd29ya2xp
c3QgdXNlZCBieSB0aGUgdGFzaworICAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5k
IG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQgaXMgY3VycmVudGx5CisgICAgKiBzdXNwZW5k
ZWQuCisgICAgKi8KKyAgICBmdW5jIHF1ZXVlKHBhY2tldDogRGV2aWNlUGFja2V0KSAtPiBUYXNr
PworICAgIHsKKyAgICAgICAgbGV0IHRhc2sgOiBEZXZpY2VUYXNrPyA9IHNlbGYuZmluZCh3aGVy
ZTogeyAkMC5kZXZpY2UgPT0gcGFja2V0LmRldmljZSB9KQorICAgICAgICByZXR1cm4gcXVldWVJ
bXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQorICAgIH0KKworICAgIGZ1bmMgcXVldWUo
cGFja2V0OiBXb3JrUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRhc2sgOiBX
b3JrZXJUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyBfIGluIHRydWUgfSkKKyAgICAgICAgcmV0
dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBm
dW5jIGhhbmRsZShwYWNrZXQ6IFdvcmtQYWNrZXQpIC0+IFRhc2s/CisgICAgeworICAgICAgICBs
ZXQgdGFzayA6IEhhbmRsZXJUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyAkMC5kZXZpY2UgPT0g
cGFja2V0LmRldmljZSB9KQorICAgICAgICByZXR1cm4gcXVldWVJbXBsKHRhc2s6IHRhc2ssIHBh
Y2tldDogcGFja2V0KQorICAgIH0KKworICAgIGZ1bmMgaGFuZGxlKHBhY2tldDogRGV2aWNlUGFj
a2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRhc2sgOiBIYW5kbGVyVGFzaz8gPSBz
ZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBhY2tldC5kZXZpY2UgfSkKKyAgICAgICAg
cmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAg
ICBwcml2YXRlIGZ1bmMgcXVldWVJbXBsKHRhc2s6IFRhc2s/LCBwYWNrZXQ6IFBhY2tldCkgLT4g
VGFzaz8KKyAgICB7CisgICAgICAgIGd1YXJkIHRhc2sgIT0gbmlsIGVsc2UgeyByZXR1cm4gbmls
IH0KKyAgICAgICAgc2VsZi5xdWV1ZUNvdW50ICs9IDEKKyAgICAgICAgcGFja2V0LmxpbmsgPSBu
aWwKKyAgICAgICAgcmV0dXJuIHRhc2shLmNoZWNrUHJpb3JpdHlBZGQodGFzazogc2VsZi5jdXJy
ZW50VGFzayEsIHBhY2tldDogcGFja2V0KQorICAgIH0KKworICAgIHByaXZhdGUgZnVuYyBmaW5k
PFQ6IFRhc2s+KHdoZXJlIGNvbmRpdGlvbjogKFQpIC0+IEJvb2wpIC0+IFQ/CisgICAgeworICAg
ICAgICB2YXIgdGFzayA9IHNlbGYubGlzdAorICAgICAgICB3aGlsZSB0YXNrICE9IG5pbCB7Cisg
ICAgICAgICAgICBpZiBsZXQgdCA9IHRhc2sgYXM/IFQgeworICAgICAgICAgICAgICAgIGlmIGNv
bmRpdGlvbih0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFzayA9IHRhc2shLm5leHQKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gbmlsCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRz
TW9zdGx5U3dpZnQvVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21p
bmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRmNDUyODhlMDAxMDc2ZTBkMTRjZjJjNjYyYzhkN2EwNzZlMjhiMgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmlj
aGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQKQEAgLTAsMCAr
MSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBGb3VuZGF0aW9uCitpbXBvcnQgSmF2YVNjcmlw
dENvcmUKKworZW51bSBQcmlvcml0eSA6IEludCB7CisgICAgY2FzZSBJZGxlID0gMAorICAgIGNh
c2UgV29ya2VyID0gMTAwMAorICAgIGNhc2UgSGFuZGxlckEgPSAyMDAwCisgICAgY2FzZSBIYW5k
bGVyQiA9IDMwMDAKKyAgICBjYXNlIERldmljZUEgPSA0MDAwCisgICAgY2FzZSBEZXZpY2VCID0g
NTAwMAorCisgICAgc3RhdGljIGZ1bmMgPihsaHM6U2VsZiwgcmhzOlNlbGYpIC0+IEJvb2wgCisg
ICAgeworICAgICAgICByZXR1cm4gbGhzLnJhd1ZhbHVlID4gcmhzLnJhd1ZhbHVlCisgICAgfQor
fQorCitAb2JqYyBwdWJsaWMgY2xhc3MgVGFzayA6IE5TT2JqZWN0LCBKU0V4cG9ydCB7CisgICAg
bGV0IHNjaGVkdWxlciA6IFNjaGVkdWxlcgorICAgIGxldCBwcmlvcml0eSA6IFByaW9yaXR5Cisg
ICAgdmFyIG5leHQgOiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0KSB2YXIgcXVldWUgOiBQ
YWNrZXQ/CisgICAgcHJpdmF0ZShzZXQpIHZhciBzdGF0ZSA6IFN0YXRlID0gLndhaXRpbmcKKwor
ICAgIHN0cnVjdCBTdGF0ZSA6IE9wdGlvblNldCB7CisgICAgICAgIGxldCByYXdWYWx1ZTogSW50
CisKKyAgICAgICAgc3RhdGljIGxldCBydW4gOiBTdGF0ZSA9IFtdCisgICAgICAgIHN0YXRpYyBs
ZXQgaGFzUGFja2V0ID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMCkKKyAgICAgICAgc3RhdGljIGxl
dCB3YWl0aW5nID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMSkKKyAgICAgICAgc3RhdGljIGxldCBo
ZWxkID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMikKKworICAgICAgICBzdGF0aWMgbGV0IHJ1bldp
dGhQYWNrZXQgPSBoYXNQYWNrZXQudW5pb24ocnVuKQorICAgICAgICBzdGF0aWMgbGV0IHdhaXRp
bmdXaXRoUGFja2V0ID0gaGFzUGFja2V0LnVuaW9uKHdhaXRpbmcpCisKKyAgICAgICAgaW5pdChy
YXdWYWx1ZTogSW50KQorICAgICAgICB7CisgICAgICAgICAgICBzZWxmLnJhd1ZhbHVlID0gcmF3
VmFsdWUKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0Pykg
LT4gVGFzaz8KKyAgICB7CisgICAgICAgIHByZWNvbmRpdGlvbkZhaWx1cmUoIlRoaXMgbWV0aG9k
IG11c3QgYmUgb3ZlcnJpZGRlbiIpIAorICAgIH0KKworICAgIGZ1bmMgcmVsZWFzZV8oKQorICAg
IHsKKyAgICAgICAgc2VsZi5zdGF0ZS5yZW1vdmUoLmhlbGQpCisgICAgfQorCisgICAgZnVuYyBo
b2xkKCkKKyAgICB7CisgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5oZWxkKQorICAgIH0KKwor
ICAgIGZ1bmMgd2FpdCgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLmluc2VydCgud2FpdGlu
ZykKKyAgICB9CisKKyAgICBmdW5jIHJlc3VtZSgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRl
LnJlbW92ZSgud2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHRha2VQYWNrZXQoKSAtPiBQYWNr
ZXQKKyAgICB7CisgICAgICAgIGxldCBwYWNrZXQgPSBzZWxmLnF1ZXVlIQorICAgICAgICBzZWxm
LnF1ZXVlID0gcGFja2V0LmxpbmsKKyAgICAgICAgaWYgc2VsZi5xdWV1ZSA9PSBuaWwgeworICAg
ICAgICAgICAgc2VsZi5zdGF0ZSA9IC5ydW4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNlbGYuc3RhdGUgPSAucnVuV2l0aFBhY2tldAorICAgICAgICB9CisgICAgICAgIHJldHVybiBw
YWNrZXQKKyAgICB9CisKKyAgICBmdW5jIGNoZWNrUHJpb3JpdHlBZGQodGFzazogVGFzaywgcGFj
a2V0OiBQYWNrZXQpIC0+IFRhc2sKKyAgICB7CisgICAgICAgIGlmIHNlbGYucXVldWUgPT0gbmls
IHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQKKyAgICAgICAgICAgIHNlbGYuc3Rh
dGUuaW5zZXJ0KC5oYXNQYWNrZXQpCisgICAgICAgICAgICBpZiBzZWxmLnByaW9yaXR5ID4gdGFz
ay5wcmlvcml0eSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQuYWRkVG8o
cXVldWU6IHNlbGYucXVldWUpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhc2sKKyAgICB9
CisKKyAgICBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1
ZXVlOiBQYWNrZXQ/ID0gbmlsKQorICAgIHsKKyAgICAgICAgc2VsZi5zY2hlZHVsZXIgPSBzY2hl
ZHVsZXIKKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5CisgICAgICAgIHNlbGYucXVl
dWUgPSBxdWV1ZQorICAgICAgICBpZiBxdWV1ZSAhPSBuaWwgeworICAgICAgICAgICAgc2VsZi5z
dGF0ZS5pbnNlcnQoLmhhc1BhY2tldCkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lm
dC9SaWNoYXJkc01vc3RseVN3aWZ0L1dvcmtlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlT
d2lmdC9Xb3JrZXJUYXNrLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzZiMGU3MjUxMGVhZDcwNTdkMzdk
N2RlMGFiMjhiZjY3Njg4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lm
dC9Xb3JrZXJUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBK
YXZhU2NyaXB0Q29yZQorCitjbGFzcyBXb3JrZXJUYXNrIDogVGFzayB7CisgICAgcHJpdmF0ZSB2
YXIganMgOiBKU1ZhbHVlCisKKyAgICBwcml2YXRlIHN0YXRpYyBsZXQgY29udGV4dCA6IEpTQ29u
dGV4dCA9IHsKKyAgICAgICAgbGV0IGNvbnRleHQgPSBKU0NvbnRleHQoKSEKKyAgICAgICAgbGV0
IHNvdXJjZSA9IHRyeSEgU3RyaW5nKGNvbnRlbnRzT2ZGaWxlOiAicmljaGFyZHMuanMiKQorICAg
ICAgICBjb250ZXh0LmV2YWx1YXRlU2NyaXB0KHNvdXJjZSkKKyAgICAgICAgY29udGV4dC5leGNl
cHRpb25IYW5kbGVyID0geyBjb250ZXh0LCBleGNlcHRpb24gaW4KKyAgICAgICAgICAgIHByaW50
KGV4Y2VwdGlvbiEudG9TdHJpbmcoKSEpCisgICAgICAgICAgICBleGl0KDIpCisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGNvbnRleHQKKyAgICB9KCkKKyAgICBwcml2YXRlIHN0YXRpYyBsZXQg
Y29uc3RydWN0b3IgOiBKU1ZhbHVlID0geworICAgICAgICByZXR1cm4gY29udGV4dC5vYmplY3RG
b3JLZXllZFN1YnNjcmlwdCgiY3JlYXRlV29ya2VyVGFzayIpLmNhbGwod2l0aEFyZ3VtZW50czog
W0RldmljZS5BLnJhd1ZhbHVlLCBEZXZpY2UuQi5yYXdWYWx1ZSwgV29ya1BhY2tldC5TSVpFXSkK
KyAgICB9KCkKKworICAgIHN0YXRpYyBmdW5jIGNyZWF0ZShzY2hlZHVsZXI6IFNjaGVkdWxlciwg
cHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogUGFja2V0KQorICAgIHsKKyAgICAgICAgbGV0IHRh
c2sgPSBXb3JrZXJUYXNrKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHks
IHF1ZXVlOiBxdWV1ZSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNrKQorICAgIH0K
KworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAgICB7
CisgICAgICAgIHJldHVybiBzZWxmLmpzLmludm9rZU1ldGhvZCgicnVuIiwgd2l0aEFyZ3VtZW50
czogW3BhY2tldF0pLnRvT2JqZWN0KCkgYXMhIFRhc2s/CisgICAgfQorCisgICAgcHJpdmF0ZSBp
bml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBQYWNr
ZXQpCisgICAgeworICAgICAgICBzZWxmLmpzID0gV29ya2VyVGFzay5jb25zdHJ1Y3Rvci5jb25z
dHJ1Y3Qod2l0aEFyZ3VtZW50czogW3NjaGVkdWxlcl0pCisgICAgICAgIHN1cGVyLmluaXQoc2No
ZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAg
IH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkv
UmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L21haW4uc3dpZnQgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmlj
aGFyZHNNb3N0bHlTd2lmdC9tYWluLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzU4MTU4NDA4NzhhN2Fm
ZjZjYjVjMDRmYWNmNjZiNzk4MDEyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0
bHlTd2lmdC9tYWluLnN3aWZ0CkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBR
dWFydHpDb3JlCisKK2xldCBpdGVyYXRpb25zID0gNTAKK2xldCBzdGFydCA9IENBQ3VycmVudE1l
ZGlhVGltZSgpCitmb3IgXyBpbiAxLi4uaXRlcmF0aW9ucyB7CisgICAgcnVuUmljaGFyZHMoKQor
fQorbGV0IGVuZCA9IENBQ3VycmVudE1lZGlhVGltZSgpCitwcmludChJbnQoKGVuZC1zdGFydCkg
KiAxMDAwKSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdB
UEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0
L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI0NzFlNWMxOTAy
NWE4Y2M0NTY4M2Y4ZmZlNDJlODdhODM5OWRkNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJk
c01vc3RseVN3aWZ0L3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2Z1
bmN0aW9uIGNyZWF0ZVdvcmtlclRhc2soZGV2aWNlQSwgZGV2aWNlQiwgREFUQV9TSVpFKSB7Cisg
ICAgcmV0dXJuIGNsYXNzIHsKKyAgICAgICAgY29uc3RydWN0b3Ioc2NoZWR1bGVyKSB7CisgICAg
ICAgICAgICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgICAgICAgICAgIHRoaXMuZGV2
aWNlID0gZGV2aWNlQTsKKyAgICAgICAgICAgIHRoaXMubGV0dGVySW5kZXggPSAwOworICAgICAg
ICB9CisKKyAgICAgICAgcnVuKHBhY2tldCkgeworICAgICAgICAgICAgaWYgKHBhY2tldCA9PSBu
dWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLndhaXRDdXJyZW50
KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlID0g
dGhpcy5kZXZpY2UgPT09IGRldmljZUEgPyBkZXZpY2VCIDogZGV2aWNlQTsKKyAgICAgICAgICAg
ICAgICBwYWNrZXQuZGV2aWNlID0gdGhpcy5kZXZpY2U7CisgICAgICAgICAgICAgICAgcGFja2V0
LnByb2Nlc3NlZCA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRB
X1NJWkU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4Kys7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxldHRlckluZGV4ID4gMjYpCisgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
cGFja2V0LmRhdGFbaV0gPSB0aGlzLmxldHRlckluZGV4OworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaGFuZGxlV2l0aFBhY2tldChwYWNr
ZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9S
aWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQv
cmljaGFyZHMuc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QwMzVhOTFjY2I3ZmZhNmU5ZGY5MjdlMzg2YmIw
NTFiNWI1YzY0MgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
VXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3JpY2hh
cmRzLnN3aWZ0CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBEYXJ3aW4KKwor
bGV0IEVYUEVDVEVEX1FVRVVFX0NPVU5UID0gMjMyMjsKK2xldCBFWFBFQ1RFRF9IT0xEX0NPVU5U
ID0gOTI4OworCitmdW5jIHJ1blJpY2hhcmRzKCkKK3sKKyAgbGV0IHNjaGVkdWxlciA9IFNjaGVk
dWxlcigpCisKKyAgSWRsZVRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0
eTogLklkbGUpCisKKyAgKHsKKyAgICAgIHZhciBxdWV1ZSA9IFdvcmtQYWNrZXQobGluazogbmls
KQorICAgICAgcXVldWUgPSBXb3JrUGFja2V0KGxpbms6IHF1ZXVlKQorICAgICAgV29ya2VyVGFz
ay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0eS5Xb3JrZXIs
IHF1ZXVlOiBxdWV1ZSkKKyAgfSkoKQorCisgICh7CisgICAgICB2YXIgcXVldWUgPSBEZXZpY2VQ
YWNrZXQoZGV2aWNlOiAuQSwgbGluazogbmlsKQorICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQo
ZGV2aWNlOiAuQSwgbGluazogcXVldWUpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZp
Y2U6IC5BLCBsaW5rOiBxdWV1ZSkKKyAgICAgIEhhbmRsZXJUYXNrLmNyZWF0ZShzY2hlZHVsZXI6
IHNjaGVkdWxlciwgZGV2aWNlOiAuQSwgcHJpb3JpdHk6IFByaW9yaXR5LkhhbmRsZXJBLCBxdWV1
ZTogcXVldWUpCisgIH0pKCkKKworICAoeworICAgICAgdmFyIHF1ZXVlID0gRGV2aWNlUGFja2V0
KGRldmljZTogLkIsIGxpbms6IG5pbCkKKyAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmlj
ZTogLkIsIGxpbms6IHF1ZXVlKQorICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAu
QiwgbGluazogcXVldWUpCisgICAgICBIYW5kbGVyVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hl
ZHVsZXIsIGRldmljZTogLkIsIHByaW9yaXR5OiBQcmlvcml0eS5IYW5kbGVyQiwgcXVldWU6IHF1
ZXVlKQorICB9KSgpCisKKyAgRGV2aWNlVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIs
IGRldmljZTogLkEsIHByaW9yaXR5OiBQcmlvcml0eS5EZXZpY2VBKQorICBEZXZpY2VUYXNrLmNy
ZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQiwgcHJpb3JpdHk6IFByaW9yaXR5
LkRldmljZUIpCisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCkKKworICBpZiBzY2hlZHVsZXIucXVl
dWVDb3VudCAhPSBFWFBFQ1RFRF9RVUVVRV9DT1VOVCB8fCBzY2hlZHVsZXIuaG9sZENvdW50ICE9
IEVYUEVDVEVEX0hPTERfQ09VTlQgeworICAgIHByaW50KCJFcnJvciBkdXJpbmcgZXhlY3V0aW9u
OiBxdWV1ZUNvdW50ID0gXChzY2hlZHVsZXIucXVldWVDb3VudCksIGhvbGRDb3VudCA9IFwoc2No
ZWR1bGVyLmhvbGRDb3VudCkuIikKKyAgICBleGl0KDEpCisgIH0KK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21lQy9SaWNoYXJk
c1NvbWVDLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NGI5MTk3NGM5YmZmOGU3YjVhNTI1YWMxOTU5NmY2
MjJlMTdkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Vw
Y29taW5nQVBJL1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0wLDAgKzEsMjkwIEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNp
b24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0
cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMTgyNDk5
QTQxNDAwNUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMu
anMgKi87IH07CisJCTE0MzZCMjMyMjUxQzBENEIwMDZBRTY5NSAvKiBtYWluLm0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDM2QjIzMTI1MUMwRDRBMDA2
QUU2OTUgLyogbWFpbi5tICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDAxMTgxNjI0
OTk4NTE3MDAzOTg3QTkgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9ICIiOwor
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJMTQxNUFEMTgyNDk5
QTQxNDAwNUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5j
ZSBzZWN0aW9uICovCisJCTE0MDExODE4MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVD
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJk
c1NvbWVDOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNDE1QUQxNjI0
OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSByaWNoYXJkcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQzNkIyMzEyNTFDMEQ0QTAwNkFFNjk1IC8qIG1haW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTE0MDExODE1MjQ5OTg1MTcwMDM5ODdBOSAvKiBGcmFtZXdv
cmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJ
CTE0MDExODBGMjQ5OTg1MTcwMDM5ODdBOSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJMTQwMTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZUMg
Ki8sCisJCQkJMTQwMTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAorCQkJKTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1MTcwMDM5
ODdBOSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJMTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZUMgKi8sCisJ
CQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJMTQwMTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZUMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MzZCMjMxMjUxQzBENEEw
MDZBRTY5NSAvKiBtYWluLm0gKi8sCisJCQkJMTQxNUFEMTYyNDk5ODYwNTAwNUJCMkU0IC8qIHJp
Y2hhcmRzLmpzICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc1NvbWVDOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTE0MDExODE3MjQ5OTg1MTcwMDM5
ODdBOSAvKiBSaWNoYXJkc1NvbWVDICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MDExODFGMjQ5OTg1MTcwMDM5ODdBOSAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNTb21l
QyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDAxMTgxNDI0OTk4NTE3MDAzOTg3QTkg
LyogU291cmNlcyAqLywKKwkJCQkxNDAxMTgxNTI0OTk4NTE3MDAzOTg3QTkgLyogRnJhbWV3b3Jr
cyAqLywKKwkJCQkxNDAxMTgxNjI0OTk4NTE3MDAzOTg3QTkgLyogQ29weUZpbGVzICovLAorCQkJ
KTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsK
KwkJCW5hbWUgPSBSaWNoYXJkc1NvbWVDOworCQkJcHJvZHVjdE5hbWUgPSBSaWNoYXJkc1NvbWVD
OworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0MDExODE4MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNo
YXJkc1NvbWVDICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50
b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJMTQwMTE4MTAyNDk5ODUxNzAwMzk4N0E5IC8qIFBy
b2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMg
PSB7CisJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAxMjAwOworCQkJCUxhc3RVcGdyYWRlQ2hl
Y2sgPSAxMjAwOworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCTE0MDExODE3MjQ5OTg1
MTcwMDM5ODdBOSA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEyLjA7CisJCQkJ
CX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQwMTE4MTMy
NDk5ODUxNzAwMzk4N0E5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiUmljaGFyZHNTb21lQyIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSA5
LjMiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBlbjsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGlu
Z3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJCUJhc2UsCisJCQkpOwor
CQkJbWFpbkdyb3VwID0gMTQwMTE4MEYyNDk5ODUxNzAwMzk4N0E5OworCQkJcHJvZHVjdFJlZkdy
b3VwID0gMTQwMTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovOworCQkJcHJvamVj
dERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJ
CTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVDICovLAorCQkJKTsKKwkJ
fTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDAxMTgxNDI0OTk4NTE3MDAzOTg3QTkgLyogU291cmNl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0MzZCMjMyMjUxQzBENEIwMDZB
RTY5NSAvKiBtYWluLm0gaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8K
KwkJMTQwMTE4MUQyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJ
CQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJ
VkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNM
QU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZ
RVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9P
QkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJ
TkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04g
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOwor
CQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05V
TExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlO
X1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFO
R19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNU
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7
CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
X0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5P
OworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJ
Q1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJ
CQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJ
QyA9IE5POworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUla
QVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJ
CQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRV
Uk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsK
KwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VE
X1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2Owor
CQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNU
X01BVEggPSBZRVM7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0g
bWFjb3N4OworCQkJCVNXSUZUX0FDVElWRV9DT01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7
CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFt
ZSA9IERlYnVnOworCQl9OworCQkxNDAxMTgxRTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpF
Ul9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVS
U0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9
ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5H
X0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsK
KwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tf
Q0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJT
SU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9D
T05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpD
X0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9V
U0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
RU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9O
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9P
QkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRF
UkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZ
RVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVB
REVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VT
UElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElU
WSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNP
UFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdh
cmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJM
RV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251MTE7CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJO
X1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJ
CQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9W
QVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJ
CQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBOTzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xl
bW9kdWxlOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJ
bmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0MDExODIwMjQ5OTg1MTcwMDM5ODdBOSAvKiBEZWJ1
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJ
CW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQwMTE4MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVh
c2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFN
RSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDAx
MTgxMzI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQ
cm9qZWN0ICJSaWNoYXJkc1NvbWVDIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MDExODFEMjQ5OTg1MTcwMDM5
ODdBOSAvKiBEZWJ1ZyAqLywKKwkJCQkxNDAxMTgxRTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFz
ZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDAxMTgxRjI0OTk4
NTE3MDAzOTg3QTkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIlJpY2hhcmRzU29tZUMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQwMTE4MjAyNDk5ODUxNzAwMzk4N0E5
IC8qIERlYnVnICovLAorCQkJCTE0MDExODIxMjQ5OTg1MTcwMDM5ODdBOSAvKiBSZWxlYXNlICov
LAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0
aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gMTQwMTE4MTAyNDk5ODUxNzAw
Mzk4N0E5IC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVDL1JpY2hhcmRzU29tZUMvbWFp
bi5tIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVD
L1JpY2hhcmRzU29tZUMvbWFpbi5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMmRiYjIwNDM3YzMxMTU1NzFjNGNj
NWM1NWI2YmZiOTk0YTI2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy9tYWluLm0KQEAg
LTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorCitzdGF0aWMgdW5zaWduZWQgSURfSEFORExFUl9B
ID0gMjsKK3N0YXRpYyB1bnNpZ25lZCBJRF9IQU5ETEVSX0IgPSAzOworc3RhdGljIHVuc2lnbmVk
IERBVEFfU0laRSA9IDQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBKU09iamVjdFJlZiBzY2hl
ZHVsZXI7CisgICAgaW50IHYxOworICAgIGludCB2MjsKK30gV29ya2VyVGFzazsKKworSlNWYWx1
ZVJlZiBXb3JrZXJUYXNrX3J1bihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
dHgpOworICAgIAorICAgIEpTVmFsdWVSZWYgZW1wdHkgPSBOVUxMOworICAgIGlmICghZXhjZXB0
aW9uKQorICAgICAgICBleGNlcHRpb24gPSAmZW1wdHk7CisgICAgZWxzZQorICAgICAgICAqZXhj
ZXB0aW9uID0gZW1wdHk7CisgICAgSlNWYWx1ZVJlZiBwYWNrZXRWYWx1ZSA9IGFyZ3VtZW50c1sw
XTsKKyAgICAKKyAgICBXb3JrZXJUYXNrKiB0YXNrID0gSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpOworICAgIGlmIChKU1ZhbHVlSXNVbmRlZmluZWQoY3R4LCBwYWNrZXRWYWx1ZSkgfHwg
SlNWYWx1ZUlzTnVsbChjdHgsIHBhY2tldFZhbHVlKSkgeworICAgICAgICBKU1N0cmluZ1JlZiBz
dXNwZW5kQ3VycmVudFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJzdXNw
ZW5kQ3VycmVudCIpOworICAgICAgICBKU1ZhbHVlUmVmIHN1c3BlbmRDdXJyZW50VmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGN0eCwgdGFzay0+c2NoZWR1bGVyLCBzdXNwZW5kQ3VycmVudFN0
cmluZywgZXhjZXB0aW9uKTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHN1c3BlbmRDdXJyZW50
U3RyaW5nKTsKKyAgICAgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKyAgICAgICAgSlNPYmplY3RSZWYgc3VzcGVuZEN1cnJl
bnRPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY3R4LCBzdXNwZW5kQ3VycmVudFZhbHVlLCBleGNl
cHRpb24pOworICAgICAgICBpZiAoKmV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgICAgICByZXR1cm4gSlNPYmplY3RDYWxsQXNGdW5j
dGlvbihjdHgsIHN1c3BlbmRDdXJyZW50T2JqZWN0LCB0YXNrLT5zY2hlZHVsZXIsIDAsIE5VTEws
IGV4Y2VwdGlvbik7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0UmVmIHBhY2tldE9iamVjdCA9
IEpTVmFsdWVUb09iamVjdChjdHgsIHBhY2tldFZhbHVlLCBleGNlcHRpb24pOworICAgIGlmICgq
ZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKwor
ICAgIHRhc2stPnYxID0gSURfSEFORExFUl9BICsgSURfSEFORExFUl9CIC0gdGFzay0+djE7Cisg
ICAgCisgICAgSlNTdHJpbmdSZWYgaWRTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiaWQiKTsKKyAgICBKU09iamVjdFNldFByb3BlcnR5KGN0eCwgcGFja2V0T2JqZWN0LCBp
ZFN0cmluZywgSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCB0YXNrLT52MSksIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSwgZXhjZXB0aW9uKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UoaWRTdHJpbmcpOwor
ICAgIGlmICgqZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y3R4KTsKKyAgICAKKyAgICBKU1N0cmluZ1JlZiBhMVN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJhMSIpOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY3R4LCBwYWNrZXRP
YmplY3QsIGExU3RyaW5nLCBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIDApLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUsIGV4Y2VwdGlvbik7CisgICAgSlNTdHJpbmdSZWxlYXNlKGExU3RyaW5nKTsK
KyAgICBpZiAoKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGN0eCk7CisKKyAgICBKU1N0cmluZ1JlZiBhMlN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJhMiIpOworICAgIEpTVmFsdWVSZWYgYTJWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY3R4LCBwYWNrZXRPYmplY3QsIGEyU3RyaW5nLCBleGNlcHRpb24pOworICAgIEpTU3Ry
aW5nUmVsZWFzZShhMlN0cmluZyk7CisgICAgaWYgKCpleGNlcHRpb24pCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIEpTT2JqZWN0UmVmIGEyT2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KGN0eCwgYTJWYWx1ZSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoKmV4Y2Vw
dGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IERBVEFfU0laRTsgKytpKSB7CisgICAgICAgIGlm
ICgrK3Rhc2stPnYyID4gMjYpCisgICAgICAgICAgICB0YXNrLT52MiA9IDE7CisgICAgICAgIEpT
T2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGN0eCwgYTJPYmplY3QsIGksIEpTVmFsdWVNYWtlTnVt
YmVyKGN0eCwgdGFzay0+djIpLCBleGNlcHRpb24pOworICAgICAgICBpZiAoKmV4Y2VwdGlvbikK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIH0KKyAg
ICAKKyAgICBKU1N0cmluZ1JlZiBxdWV1ZVN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJxdWV1ZSIpOworICAgIEpTVmFsdWVSZWYgcXVldWVWYWx1ZSA9IEpTT2JqZWN0R2V0
UHJvcGVydHkoY3R4LCB0YXNrLT5zY2hlZHVsZXIsIHF1ZXVlU3RyaW5nLCBleGNlcHRpb24pOwor
ICAgIEpTU3RyaW5nUmVsZWFzZShxdWV1ZVN0cmluZyk7CisgICAgaWYgKCpleGNlcHRpb24pCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIEpTT2JqZWN0UmVm
IHF1ZXVlT2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcXVldWVWYWx1ZSwgZXhjZXB0aW9u
KTsKKyAgICBpZiAoKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGN0eCk7CisgICAgSlNWYWx1ZVJlZiBxdWV1ZUFyZ3VtZW50c1tdID0geyBwYWNrZXRWYWx1
ZSB9OworICAgIHJldHVybiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGN0eCwgcXVldWVPYmplY3Qs
IHRhc2stPnNjaGVkdWxlciwgMSwgcXVldWVBcmd1bWVudHMsIGV4Y2VwdGlvbik7Cit9CisKK0pT
Q2xhc3NSZWYgd29ya2VyVGFza0NsYXNzOworCitKU09iamVjdFJlZiBXb3JrZXJUYXNrX2NvbnN0
cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yLCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIFdvcmtlclRhc2sqIHRhc2sgPSAoV29ya2VyVGFzayopbWFsbG9j
KHNpemVvZihXb3JrZXJUYXNrKSk7CisgICAgdGFzay0+c2NoZWR1bGVyID0gSlNWYWx1ZVRvT2Jq
ZWN0KGN0eCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgIHRhc2stPnYxID0gSlNWYWx1
ZVRvTnVtYmVyKGN0eCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pOworICAgIHRhc2stPnYyID0g
SlNWYWx1ZVRvTnVtYmVyKGN0eCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pOworICAgIHJldHVy
biBKU09iamVjdE1ha2UoY3R4LCB3b3JrZXJUYXNrQ2xhc3MsIHRhc2spOworfQorCitKU1ZhbHVl
UmVmIFdvcmtlclRhc2tfZ2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhwcm9wZXJ0eU5hbWUsICJy
dW4iKSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGN0
eCwgcHJvcGVydHlOYW1lLCBXb3JrZXJUYXNrX3J1bik7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Cit9CisKK2ludCBtYWluKCkKK3sKKyAgICBKU0dsb2JhbENvbnRleHRS
ZWYgY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZShOVUxMKTsKKyAgICBpZiAoIWNvbnRl
eHQpCisgICAgICAgIGV4aXQoMSk7CisgICAgCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBO
VUxMOworICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9i
amVjdChjb250ZXh0KTsKKyAgICAKKyAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0aW9uID0g
a0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSAiV29y
a2VyVGFzayI7CisgICAgZGVmaW5pdGlvbi5jYWxsQXNDb25zdHJ1Y3RvciA9IFdvcmtlclRhc2tf
Y29uc3RydWN0b3I7CisgICAgZGVmaW5pdGlvbi5nZXRQcm9wZXJ0eSA9IFdvcmtlclRhc2tfZ2V0
UHJvcGVydHk7CisgICAgd29ya2VyVGFza0NsYXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlv
bik7CisgICAgSlNPYmplY3RSZWYgd29ya2VyVGFza09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250
ZXh0LCB3b3JrZXJUYXNrQ2xhc3MsICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pCisg
ICAgICAgIGV4aXQoMSk7CisgICAgCisgICAgSlNTdHJpbmdSZWYgd29ya2VyVGFza1N0cmluZyA9
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXb3JrZXJUYXNrIik7CisgICAgCisgICAg
SlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHdvcmtlclRhc2tTdHJp
bmcsIHdvcmtlclRhc2tPYmplY3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgJmV4Y2VwdGlv
bik7CisgICAgSlNTdHJpbmdSZWxlYXNlKHdvcmtlclRhc2tTdHJpbmcpOworICAgIGlmIChleGNl
cHRpb24pCisgICAgICAgIGV4aXQoMSk7CisgICAgCisgICAgSlNDbGFzc1JlbGVhc2Uod29ya2Vy
VGFza0NsYXNzKTsKKworICAgIE5TU3RyaW5nKiBzb3VyY2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENvbnRlbnRzT2ZGaWxlOkAicmljaGFyZHMuanMiIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nIGVycm9yOm5pbF07CisgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoc291cmNlLlVURjhTdHJpbmcpOworICAgIEpTRXZhbHVhdGVTY3JpcHQo
Y29udGV4dCwgc2NyaXB0LCBOVUxMLCBOVUxMLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhj
ZXB0aW9uKQorICAgICAgICBleGl0KDEpOworICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHQpOwor
CisgICAgdW5zaWduZWQgaXRlcmF0aW9ucyA9IDUwOworICAgIENGVGltZUludGVydmFsIHN0YXJ0
ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBp
dGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgSlNTdHJpbmdSZWYgcnVuUmljaGFyZHNTdHJpbmcg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicnVuUmljaGFyZHMiKTsKKyAgICAgICAg
SlNWYWx1ZVJlZiBydW5uZXIgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9i
amVjdCwgcnVuUmljaGFyZHNTdHJpbmcsICZleGNlcHRpb24pOworICAgICAgICBpZiAoZXhjZXB0
aW9uKQorICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgSlNPYmplY3RSZWYgcnVubmVyT2Jq
ZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHJ1bm5lciwgJmV4Y2VwdGlvbik7CisgICAg
ICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICBKU09iamVj
dENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIHJ1bm5lck9iamVjdCwgZ2xvYmFsT2JqZWN0LCAwLCBO
VUxMLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIGV4
aXQoMSk7CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShydW5SaWNoYXJkc1N0cmluZyk7CisgICAg
fQorICAgIENGVGltZUludGVydmFsIGVuZCA9IENBQ3VycmVudE1lZGlhVGltZSgpOworICAgIHBy
aW50ZigiJWRcbiIsIChpbnQpKChlbmQtc3RhcnQpICogMTAwMCkpOworICAgIAorICAgIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CisKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNo
YXJkc1NvbWVDL1JpY2hhcmRzU29tZUMvcmljaGFyZHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy9yaWNoYXJkcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOTU3M2Q5YWY0NDBmZGEzYzllNmE2NmE5ZTcxYTVkOGYzOWQzZjg0Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9S
aWNoYXJkc1NvbWVDL1JpY2hhcmRzU29tZUMvcmljaGFyZHMuanMKQEAgLTAsMCArMSw0OTcgQEAK
Ky8vIENvcHlyaWdodCAyMDA2LTIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8g
ICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAg
ICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRoaXMgaXMgYSBKYXZhU2Ny
aXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSaWNoYXJkcworLy8gYmVuY2htYXJrIGZyb206Cisv
LworLy8gICAgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1yMTAvQmVuY2guaHRtbAorLy8KKy8v
IFRoZSBiZW5jaG1hcmsgd2FzIG9yaWdpbmFsbHkgaW1wbGVtZW50ZWQgaW4gQkNQTCBieQorLy8g
TWFydGluIFJpY2hhcmRzLgorCisKKy8qKgorICogVGhlIFJpY2hhcmRzIGJlbmNobWFyayBzaW11
bGF0ZXMgdGhlIHRhc2sgZGlzcGF0Y2hlciBvZiBhbgorICogb3BlcmF0aW5nIHN5c3RlbS4KKyAq
Ki8KK2Z1bmN0aW9uIHJ1blJpY2hhcmRzKCkgeworICB2YXIgc2NoZWR1bGVyID0gbmV3IFNjaGVk
dWxlcigpOworICBzY2hlZHVsZXIuYWRkSWRsZVRhc2soSURfSURMRSwgMCwgbnVsbCwgQ09VTlQp
OworCisgIHZhciBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfV09SS0VSLCBLSU5EX1dPUksp
OworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9XT1JLRVIsIEtJTkRfV09SSyk7Cisg
IHNjaGVkdWxlci5hZGRXb3JrZXJUYXNrKElEX1dPUktFUiwgMTAwMCwgcXVldWUpOworCisgIHF1
ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1
ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1
ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBzY2hl
ZHVsZXIuYWRkSGFuZGxlclRhc2soSURfSEFORExFUl9BLCAyMDAwLCBxdWV1ZSk7CisKKyAgcXVl
dWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVl
ID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVl
ID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHNjaGVk
dWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0IsIDMwMDAsIHF1ZXVlKTsKKworICBzY2hl
ZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQSwgNDAwMCwgbnVsbCk7CisKKyAgc2NoZWR1
bGVyLmFkZERldmljZVRhc2soSURfREVWSUNFX0IsIDUwMDAsIG51bGwpOworCisgIHNjaGVkdWxl
ci5zY2hlZHVsZSgpOworCisgIGlmIChzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9R
VUVVRV9DT1VOVCB8fAorICAgICAgc2NoZWR1bGVyLmhvbGRDb3VudCAhPSBFWFBFQ1RFRF9IT0xE
X0NPVU5UKSB7CisgICAgdmFyIG1zZyA9CisgICAgICAgICJFcnJvciBkdXJpbmcgZXhlY3V0aW9u
OiBxdWV1ZUNvdW50ID0gIiArIHNjaGVkdWxlci5xdWV1ZUNvdW50ICsKKyAgICAgICAgIiwgaG9s
ZENvdW50ID0gIiArIHNjaGVkdWxlci5ob2xkQ291bnQgKyAiLiI7CisgICAgdGhyb3cgbmV3IEVy
cm9yKG1zZyk7CisgIH0KK30KKwordmFyIENPVU5UID0gMTAwMDsKKworLyoqCisgKiBUaGVzZSB0
d28gY29uc3RhbnRzIHNwZWNpZnkgaG93IG1hbnkgdGltZXMgYSBwYWNrZXQgaXMgcXVldWVkIGFu
ZAorICogaG93IG1hbnkgdGltZXMgYSB0YXNrIGlzIHB1dCBvbiBob2xkIGluIGEgY29ycmVjdCBy
dW4gb2YgcmljaGFyZHMuCisgKiBUaGV5IGRvbid0IGhhdmUgYW55IG1lYW5pbmcgYSBzdWNoIGJ1
dCBhcmUgY2hhcmFjdGVyaXN0aWMgb2YgYQorICogY29ycmVjdCBydW4gc28gaWYgdGhlIGFjdHVh
bCBxdWV1ZSBvciBob2xkIGNvdW50IGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgZXhwZWN0ZWQg
dGhlcmUgbXVzdCBiZSBhIGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisgKiovCit2YXIgRVhQ
RUNURURfUVVFVUVfQ09VTlQgPSAyMzIyOwordmFyIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7
CisKKworLyoqCisgKiBBIHNjaGVkdWxlciBjYW4gYmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBv
ZiB0YXNrcyBiYXNlZCBvbiB0aGVpciByZWxhdGl2ZQorICogcHJpb3JpdGllcy4gIFNjaGVkdWxp
bmcgaXMgZG9uZSBieSBtYWludGFpbmluZyBhIGxpc3Qgb2YgdGFzayBjb250cm9sIGJsb2Nrcwor
ICogd2hpY2ggaG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3Np
bmcuCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gU2NoZWR1bGVyKCkgeworICB0aGlz
LnF1ZXVlQ291bnQgPSAwOworICB0aGlzLmhvbGRDb3VudCA9IDA7CisgIHRoaXMuYmxvY2tzID0g
bmV3IEFycmF5KE5VTUJFUl9PRl9JRFMpOworICB0aGlzLmxpc3QgPSBudWxsOworICB0aGlzLmN1
cnJlbnRUY2IgPSBudWxsOworICB0aGlzLmN1cnJlbnRJZCA9IG51bGw7Cit9CisKK3ZhciBJRF9J
RExFICAgICAgID0gMDsKK3ZhciBJRF9XT1JLRVIgICAgID0gMTsKK3ZhciBJRF9IQU5ETEVSX0Eg
ID0gMjsKK3ZhciBJRF9IQU5ETEVSX0IgID0gMzsKK3ZhciBJRF9ERVZJQ0VfQSAgID0gNDsKK3Zh
ciBJRF9ERVZJQ0VfQiAgID0gNTsKK3ZhciBOVU1CRVJfT0ZfSURTID0gNjsKKwordmFyIEtJTkRf
REVWSUNFICAgPSAwOwordmFyIEtJTkRfV09SSyAgICAgPSAxOworCisvKioKKyAqIEFkZCBhbiBp
ZGxlIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50
aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlv
cml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHBy
b2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBudW1iZXIgb2Yg
dGltZXMgdG8gc2NoZWR1bGUgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRJ
ZGxlVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCBjb3VudCkgeworICB0aGlz
LmFkZFJ1bm5pbmdUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBJZGxlVGFzayh0aGlzLCAx
LCBjb3VudCkpOworfTsKKworLyoqCisgKiBBZGQgYSB3b3JrIHRhc2sgdG8gdGhpcyBzY2hlZHVs
ZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFy
YW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9
IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICov
CitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFdvcmtlclRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9y
aXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IFdv
cmtlclRhc2sodGhpcywgSURfSEFORExFUl9BLCAwKSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhh
bmRsZXIgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRl
bnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHBy
aW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUg
cHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkSGFuZGxl
clRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2so
aWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IEhhbmRsZXJUYXNrKHRoaXMpKTsKK307CisKKy8qKgor
ICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9
IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRo
ZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Yg
d29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlw
ZS5hZGREZXZpY2VUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhp
cy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBEZXZpY2VUYXNrKHRoaXMpKQorfTsK
KworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIGFuZCBtYXJrIGl0IGFzIHJ1bm5pbmcu
CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0g
e2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1
ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBh
cmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBl
LmFkZFJ1bm5pbmdUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsK
KyAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlzLmN1cnJl
bnRUY2Iuc2V0UnVubmluZygpOworfTsKKworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNr
IHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0
aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAq
IEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQg
YnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzayB0byBhZGQKKyAqLwor
U2NoZWR1bGVyLnByb3RvdHlwZS5hZGRUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVl
dWUsIHRhc2spIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gbmV3IFRhc2tDb250cm9sQmxvY2sodGhp
cy5saXN0LCBpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKTsKKyAgdGhpcy5saXN0ID0gdGhpcy5j
dXJyZW50VGNiOworICB0aGlzLmJsb2Nrc1tpZF0gPSB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisv
KioKKyAqIEV4ZWN1dGUgdGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgKi8K
K1NjaGVkdWxlci5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3Vy
cmVudFRjYiA9IHRoaXMubGlzdDsKKyAgd2hpbGUgKHRoaXMuY3VycmVudFRjYiAhPSBudWxsKSB7
CisgICAgaWYgKHRoaXMuY3VycmVudFRjYi5pc0hlbGRPclN1c3BlbmRlZCgpKSB7CisgICAgICB0
aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmN1cnJlbnRUY2IubGluazsKKyAgICB9IGVsc2UgeworICAg
ICAgdGhpcy5jdXJyZW50SWQgPSB0aGlzLmN1cnJlbnRUY2IuaWQ7CisgICAgICB0aGlzLmN1cnJl
bnRUY2IgPSB0aGlzLmN1cnJlbnRUY2IucnVuKCk7CisgICAgfQorICB9Cit9OworCisvKioKKyAq
IFJlbGVhc2UgYSB0YXNrIHRoYXQgaXMgY3VycmVudGx5IGJsb2NrZWQgYW5kIHJldHVybiB0aGUg
bmV4dCBibG9jayB0byBydW4uCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoZSB0YXNr
IHRvIHN1c3BlbmQKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24g
KGlkKSB7CisgIHZhciB0Y2IgPSB0aGlzLmJsb2Nrc1tpZF07CisgIGlmICh0Y2IgPT0gbnVsbCkg
cmV0dXJuIHRjYjsKKyAgdGNiLm1hcmtBc05vdEhlbGQoKTsKKyAgaWYgKHRjYi5wcmlvcml0eSA+
IHRoaXMuY3VycmVudFRjYi5wcmlvcml0eSkgeworICAgIHJldHVybiB0Y2I7CisgIH0gZWxzZSB7
CisgICAgcmV0dXJuIHRoaXMuY3VycmVudFRjYjsKKyAgfQorfTsKKworLyoqCisgKiBCbG9jayB0
aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250
cm9sIGJsb2NrCisgKiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdpbGwgbm90IGJlIG1hZGUg
cnVubmFibGUgdW50aWwgaXQgaXMgZXhwbGljaXRseQorICogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3
IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuaG9sZEN1cnJl
bnQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuaG9sZENvdW50Kys7CisgIHRoaXMuY3VycmVudFRj
Yi5tYXJrQXNIZWxkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2IubGluazsKK307CisKKy8q
KgorICogU3VzcGVuZCB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhl
IG5leHQgdGFzayBjb250cm9sIGJsb2NrCisgKiB0byBydW4uICBJZiBuZXcgd29yayBpcyBhZGRl
ZCB0byB0aGUgc3VzcGVuZGVkIHRhc2sgaXQgd2lsbCBiZSBtYWRlIHJ1bm5hYmxlLgorICovCitT
Y2hlZHVsZXIucHJvdG90eXBlLnN1c3BlbmRDdXJyZW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlz
LmN1cnJlbnRUY2IubWFya0FzU3VzcGVuZGVkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7
Cit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHBhY2tldCB0byB0aGUgZW5kIG9mIHRo
ZSB3b3JrbGlzdCB1c2VkIGJ5IHRoZSB0YXNrCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tl
dCBhbmQgbWFrZSB0aGUgdGFzayBydW5uYWJsZSBpZiBpdCBpcyBjdXJyZW50bHkKKyAqIHN1c3Bl
bmRlZC4KKyAqIEBwYXJhbSB7UGFja2V0fSBwYWNrZXQgdGhlIHBhY2tldCB0byBhZGQKKyAqLwor
U2NoZWR1bGVyLnByb3RvdHlwZS5xdWV1ZSA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdmFyIHQg
PSB0aGlzLmJsb2Nrc1twYWNrZXQuaWRdOworICBpZiAodCA9PSBudWxsKSByZXR1cm4gdDsKKyAg
dGhpcy5xdWV1ZUNvdW50Kys7CisgIHBhY2tldC5saW5rID0gbnVsbDsKKyAgcGFja2V0LmlkID0g
dGhpcy5jdXJyZW50SWQ7CisgIHJldHVybiB0LmNoZWNrUHJpb3JpdHlBZGQodGhpcy5jdXJyZW50
VGNiLCBwYWNrZXQpOworfTsKKworLyoqCisgKiBBIHRhc2sgY29udHJvbCBibG9jayBtYW5hZ2Vz
IGEgdGFzayBhbmQgdGhlIHF1ZXVlIG9mIHdvcmsgcGFja2FnZXMgYXNzb2NpYXRlZAorICogd2l0
aCBpdC4KKyAqIEBwYXJhbSB7VGFza0NvbnRyb2xCbG9ja30gbGluayB0aGUgcHJlY2VkaW5nIGJs
b2NrIGluIHRoZSBsaW5rZWQgYmxvY2sgbGlzdAorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBv
ZiB0aGlzIGJsb2NrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHByaW9yaXR5IG9mIHRo
aXMgYmxvY2sKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2YgcGFja2FnZXMg
dG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRh
c2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBUYXNrQ29udHJvbEJsb2NrKGxpbmss
IGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhp
cy5pZCA9IGlkOworICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7CisgIHRoaXMucXVldWUgPSBx
dWV1ZTsKKyAgdGhpcy50YXNrID0gdGFzazsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHsKKyAgICB0
aGlzLnN0YXRlID0gU1RBVEVfU1VTUEVOREVEOworICB9IGVsc2UgeworICAgIHRoaXMuc3RhdGUg
PSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEU7CisgIH0KK30KKworLyoqCisgKiBUaGUgdGFzayBp
cyBydW5uaW5nIGFuZCBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgorICovCit2YXIgU1RBVEVfUlVO
TklORyA9IDA7CisKKy8qKgorICogVGhlIHRhc2sgaGFzIHBhY2tldHMgbGVmdCB0byBwcm9jZXNz
LgorICovCit2YXIgU1RBVEVfUlVOTkFCTEUgPSAxOworCisvKioKKyAqIFRoZSB0YXNrIGlzIG5v
dCBjdXJyZW50bHkgcnVubmluZy4gIFRoZSB0YXNrIGlzIG5vdCBibG9ja2VkIGFzIHN1Y2ggYW5k
IG1heQorKiBiZSBzdGFydGVkIGJ5IHRoZSBzY2hlZHVsZXIuCisgKi8KK3ZhciBTVEFURV9TVVNQ
RU5ERUQgPSAyOworCisvKioKKyAqIFRoZSB0YXNrIGlzIGJsb2NrZWQgYW5kIGNhbm5vdCBiZSBy
dW4gdW50aWwgaXQgaXMgZXhwbGljaXRseSByZWxlYXNlZC4KKyAqLwordmFyIFNUQVRFX0hFTEQg
PSA0OworCit2YXIgU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFID0gU1RBVEVfU1VTUEVOREVEIHwg
U1RBVEVfUlVOTkFCTEU7Cit2YXIgU1RBVEVfTk9UX0hFTEQgPSB+U1RBVEVfSEVMRDsKKworVGFz
a0NvbnRyb2xCbG9jay5wcm90b3R5cGUuc2V0UnVubmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgdGhp
cy5zdGF0ZSA9IFNUQVRFX1JVTk5JTkc7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5tYXJrQXNOb3RIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0
ZSAmIFNUQVRFX05PVF9IRUxEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFy
a0FzSGVsZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFU
RV9IRUxEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5k
ZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5zdGF0ZSAmIFNUQVRFX0hFTEQpICE9
IDAgfHwgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEKTsKK307CisKK1Rhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLm1hcmtBc1N1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5z
dGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9TVVNQRU5ERUQ7Cit9OworCitUYXNrQ29udHJvbEJs
b2NrLnByb3RvdHlwZS5tYXJrQXNSdW5uYWJsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0
ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9SVU5OQUJMRTsKK307CisKKy8qKgorICogUnVucyB0aGlz
IHRhc2ssIGlmIGl0IGlzIHJlYWR5IHRvIGJlIHJ1biwgYW5kIHJldHVybnMgdGhlIG5leHQgdGFz
ayB0byBydW4uCisgKi8KK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIHBhY2tldDsKKyAgaWYgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVE
X1JVTk5BQkxFKSB7CisgICAgcGFja2V0ID0gdGhpcy5xdWV1ZTsKKyAgICB0aGlzLnF1ZXVlID0g
cGFja2V0Lmxpbms7CisgICAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgICAgdGhpcy5z
dGF0ZSA9IFNUQVRFX1JVTk5JTkc7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBT
VEFURV9SVU5OQUJMRTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgcGFja2V0ID0gbnVsbDsKKyAg
fQorICByZXR1cm4gdGhpcy50YXNrLnJ1bihwYWNrZXQpOworfTsKKworLyoqCisgKiBBZGRzIGEg
cGFja2V0IHRvIHRoZSB3b3JrbGlzdCBvZiB0aGlzIGJsb2NrJ3MgdGFzaywgbWFya3MgdGhpcyBh
cyBydW5uYWJsZSBpZgorICogbmVjZXNzYXJ5LCBhbmQgcmV0dXJucyB0aGUgbmV4dCBydW5uYWJs
ZSBvYmplY3QgdG8gcnVuICh0aGUgb25lCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5KS4K
KyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlvcml0eUFkZCA9IGZ1bmN0
aW9uICh0YXNrLCBwYWNrZXQpIHsKKyAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgIHRo
aXMucXVldWUgPSBwYWNrZXQ7CisgICAgdGhpcy5tYXJrQXNSdW5uYWJsZSgpOworICAgIGlmICh0
aGlzLnByaW9yaXR5ID4gdGFzay5wcmlvcml0eSkgcmV0dXJuIHRoaXM7CisgIH0gZWxzZSB7Cisg
ICAgdGhpcy5xdWV1ZSA9IHBhY2tldC5hZGRUbyh0aGlzLnF1ZXVlKTsKKyAgfQorICByZXR1cm4g
dGFzazsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rp
b24gKCkgeworICByZXR1cm4gInRjYiB7ICIgKyB0aGlzLnRhc2sgKyAiQCIgKyB0aGlzLnN0YXRl
ICsgIiB9IjsKK307CisKKy8qKgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsg
aXRzZWxmIGJ1dCBjeWNsZXMgY29udHJvbCBiZXR3ZWVuIHRoZSB0d28KKyAqIGRldmljZSB0YXNr
cy4KKyAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1h
bmFnZXMgdGhpcyB0YXNrCisgKiBAcGFyYW0ge2ludH0gdjEgYSBzZWVkIHZhbHVlIHRoYXQgY29u
dHJvbHMgaG93IHRoZSBkZXZpY2UgdGFza3MgYXJlIHNjaGVkdWxlZAorICogQHBhcmFtIHtpbnR9
IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgdGhpcyB0YXNrIHNob3VsZCBiZSBzY2hlZHVsZWQK
KyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBJZGxlVGFzayhzY2hlZHVsZXIsIHYxLCBj
b3VudCkgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOwor
ICB0aGlzLmNvdW50ID0gY291bnQ7Cit9CisKK0lkbGVUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5j
dGlvbiAocGFja2V0KSB7CisgIHRoaXMuY291bnQtLTsKKyAgaWYgKHRoaXMuY291bnQgPT0gMCkg
cmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIGlmICgodGhpcy52MSAmIDEp
ID09IDApIHsKKyAgICB0aGlzLnYxID0gdGhpcy52MSA+PiAxOworICAgIHJldHVybiB0aGlzLnNj
aGVkdWxlci5yZWxlYXNlKElEX0RFVklDRV9BKTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0g
KHRoaXMudjEgPj4gMSkgXiAweEQwMDg7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVh
c2UoSURfREVWSUNFX0IpOworICB9Cit9OworCitJZGxlVGFzay5wcm90b3R5cGUudG9TdHJpbmcg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiSWRsZVRhc2siCit9OworCisvKioKKyAqIEEgdGFz
ayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRv
IHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgor
ICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdl
cyB0aGlzIHRhc2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBEZXZpY2VUYXNrKHNj
aGVkdWxlcikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51
bGw7Cit9CisKK0RldmljZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsK
KyAgaWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgaWYgKHRoaXMudjEgPT0gbnVsbCkgcmV0dXJu
IHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgICAgdmFyIHYgPSB0aGlzLnYxOwor
ICAgIHRoaXMudjEgPSBudWxsOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsK
KyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0gcGFja2V0OworICAgIHJldHVybiB0aGlzLnNjaGVk
dWxlci5ob2xkQ3VycmVudCgpOworICB9Cit9OworCitEZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0
cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJEZXZpY2VUYXNrIjsKK307CisKKy8qKgor
ICogQSB0YXNrIHRoYXQgbWFuaXB1bGF0ZXMgd29yayBwYWNrZXRzIGFuZCB0aGVuIHN1c3BlbmRz
IGl0c2VsZi4KKyAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0
aGF0IG1hbmFnZXMgdGhpcyB0YXNrCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gSGFu
ZGxlclRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0
aGlzLnYxID0gbnVsbDsKKyAgdGhpcy52MiA9IG51bGw7Cit9CisKK0hhbmRsZXJUYXNrLnByb3Rv
dHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIGlmIChwYWNrZXQgIT0gbnVsbCkgewor
ICAgIGlmIChwYWNrZXQua2luZCA9PSBLSU5EX1dPUkspIHsKKyAgICAgIHRoaXMudjEgPSBwYWNr
ZXQuYWRkVG8odGhpcy52MSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMudjIgPSBwYWNrZXQu
YWRkVG8odGhpcy52Mik7CisgICAgfQorICB9CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHsKKyAg
ICB2YXIgY291bnQgPSB0aGlzLnYxLmExOworICAgIHZhciB2OworICAgIGlmIChjb3VudCA8IERB
VEFfU0laRSkgeworICAgICAgaWYgKHRoaXMudjIgIT0gbnVsbCkgeworICAgICAgICB2ID0gdGhp
cy52MjsKKyAgICAgICAgdGhpcy52MiA9IHRoaXMudjIubGluazsKKyAgICAgICAgdi5hMSA9IHRo
aXMudjEuYTJbY291bnRdOworICAgICAgICB0aGlzLnYxLmExID0gY291bnQgKyAxOworICAgICAg
ICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgIHYgPSB0aGlzLnYxOworICAgICAgdGhpcy52MSA9IHRoaXMudjEubGluazsKKyAgICAg
IHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHRo
aXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7Cit9OworCitIYW5kbGVyVGFzay5wcm90b3R5
cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiSGFuZGxlclRhc2siOworfTsK
KworLyogLS0tICoKKyAqIFAgYSBjIGsgZSB0CisgKiAtLS0gKi8KKwordmFyIERBVEFfU0laRSA9
IDQ7CisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0
ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAorICogb2YgdGhlIHBheWxvYWQgZGF0
YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhlciBpcyB0
aGUKKyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0aGUgdGFz
a3MuCisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlua2VkIGxp
c3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBkYXRhIGFuZCB3b3JrbGlzdHMuCisg
KiBAcGFyYW0ge1BhY2tldH0gbGluayB0aGUgdGFpbCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgcGFj
a2V0cworICogQHBhcmFtIHtpbnR9IGlkIGFuIElEIGZvciB0aGlzIHBhY2tldAorICogQHBhcmFt
IHtpbnR9IGtpbmQgdGhlIHR5cGUgb2YgdGhpcyBwYWNrZXQKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitmdW5jdGlvbiBQYWNrZXQobGluaywgaWQsIGtpbmQpIHsKKyAgdGhpcy5saW5rID0gbGluazsK
KyAgdGhpcy5pZCA9IGlkOworICB0aGlzLmtpbmQgPSBraW5kOworICB0aGlzLmExID0gMDsKKyAg
dGhpcy5hMiA9IG5ldyBBcnJheShEQVRBX1NJWkUpOworfQorCisvKioKKyAqIEFkZCB0aGlzIHBh
Y2tldCB0byB0aGUgZW5kIG9mIGEgd29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0Lgor
ICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSB3b3JrbGlzdCB0byBhZGQgdGhpcyBwYWNrZXQg
dG8KKyAqLworUGFja2V0LnByb3RvdHlwZS5hZGRUbyA9IGZ1bmN0aW9uIChxdWV1ZSkgeworICB0
aGlzLmxpbmsgPSBudWxsOworICBpZiAocXVldWUgPT0gbnVsbCkgcmV0dXJuIHRoaXM7CisgIHZh
ciBwZWVrLCBuZXh0ID0gcXVldWU7CisgIHdoaWxlICgocGVlayA9IG5leHQubGluaykgIT0gbnVs
bCkKKyAgICBuZXh0ID0gcGVlazsKKyAgbmV4dC5saW5rID0gdGhpczsKKyAgcmV0dXJuIHF1ZXVl
OworfTsKKworUGFja2V0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0
dXJuICJQYWNrZXQiOworfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
VXBjb21pbmdBUEkvUmljaGFyZHNTb21lT2JqQy9SaWNoYXJkc1NvbWVPYmpDLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1Jp
Y2hhcmRzU29tZU9iakMvUmljaGFyZHNTb21lT2JqQy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVmNWRhNDNjOWU4MWY0ZjQzYmFkNGRjYjgxYjhjNWE5ODZlZGMzYmIKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1Jp
Y2hhcmRzU29tZU9iakMvUmljaGFyZHNTb21lT2JqQy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0wLDAgKzEsMjkwIEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAx
OworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsK
KworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMTgyNDk5QTQxNDAw
NUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi87
IH07CisJCTE0MzZCMjMyMjUxQzBENEIwMDZBRTY5NSAvKiBtYWluLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDM2QjIzMTI1MUMwRDRBMDA2QUU2OTUg
LyogbWFpbi5tICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxNDAxMTgxNjI0OTk4NTE3
MDAzOTg3QTkgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9ICIiOworCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJMTQxNUFEMTgyNDk5QTQxNDAw
NUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCisJCTE0MDExODE4MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVPYmpDICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJkc1Nv
bWVPYmpDOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNDE1QUQxNjI0
OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSByaWNoYXJkcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQzNkIyMzEyNTFDMEQ0QTAwNkFFNjk1IC8qIG1haW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTE0MDExODE1MjQ5OTg1MTcwMDM5ODdBOSAvKiBGcmFtZXdv
cmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJ
CTE0MDExODBGMjQ5OTg1MTcwMDM5ODdBOSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJMTQwMTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZU9i
akMgKi8sCisJCQkJMTQwMTE4MTkyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAorCQkJ
KTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1MTcw
MDM5ODdBOSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMTQwMTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZU9iakMg
Ki8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJMTQwMTE4MUEyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZU9iakMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MzZCMjMx
MjUxQzBENEEwMDZBRTY5NSAvKiBtYWluLm0gKi8sCisJCQkJMTQxNUFEMTYyNDk5ODYwNTAwNUJC
MkU0IC8qIHJpY2hhcmRzLmpzICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc1NvbWVPYmpD
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTE0MDExODE3
MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVPYmpDICovID0geworCQkJaXNhID0gUEJY
TmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MDExODFGMjQ5OTg1
MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdl
dCAiUmljaGFyZHNTb21lT2JqQyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDAxMTgx
NDI0OTk4NTE3MDAzOTg3QTkgLyogU291cmNlcyAqLywKKwkJCQkxNDAxMTgxNTI0OTk4NTE3MDAz
OTg3QTkgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxNDAxMTgxNjI0OTk4NTE3MDAzOTg3QTkgLyog
Q29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5k
ZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBSaWNoYXJkc1NvbWVPYmpDOworCQkJcHJvZHVj
dE5hbWUgPSBSaWNoYXJkc1NvbWVPYmpDOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0MDExODE4
MjQ5OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVPYmpDICovOworCQkJcHJvZHVjdFR5cGUg
PSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVU
YXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJMTQw
MTE4MTAyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0g
UEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sg
PSAxMjAwOworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMjAwOworCQkJCVRhcmdldEF0dHJpYnV0
ZXMgPSB7CisJCQkJCTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSA9IHsKKwkJCQkJCUNyZWF0ZWRP
blRvb2xzVmVyc2lvbiA9IDEyLjA7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQwMTE4MTMyNDk5ODUxNzAwMzk4N0E5IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNTb21lT2JqQyIgKi87CisJCQlj
b21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSA5LjMiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24g
PSBlbjsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0g
KAorCQkJCWVuLAorCQkJCUJhc2UsCisJCQkpOworCQkJbWFpbkdyb3VwID0gMTQwMTE4MEYyNDk5
ODUxNzAwMzk4N0E5OworCQkJcHJvZHVjdFJlZkdyb3VwID0gMTQwMTE4MTkyNDk5ODUxNzAwMzk4
N0E5IC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RS
b290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSAv
KiBSaWNoYXJkc1NvbWVPYmpDICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkx
NDAxMTgxNDI0OTk4NTE3MDAzOTg3QTkgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTE0MzZCMjMyMjUxQzBENEIwMDZBRTY5NSAvKiBtYWluLm0gaW4gU291cmNl
cyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQwMTE4MUQyNDk5ODUxNzAwMzk4
N0E5IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVS
X09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdV
QUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMr
KyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09C
SkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9E
RVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRElS
RUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRB
VElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJ
TklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNf
Uk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNMVURFX0lO
X0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZ
U0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJE
RURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNI
QUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0gg
PSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOwor
CQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFS
RCA9IGdudTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19OT19DT01N
T05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdD
Q19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQo
aW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJ
CQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5J
VElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVO
Q1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5G
TyA9IElOQ0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJT05MWV9B
Q1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0FDVElW
RV9DT01QSUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9O
X0xFVkVMID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDAx
MTgxRTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VT
RVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNM
QU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOwor
CQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19D
WFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOwor
CQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19X
RUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlD
TEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9F
TVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
SU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NP
TlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxG
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FS
Tl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9U
T1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJ
CUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBM
SUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFC
TEVfTlNfQVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0g
WUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJR0NDX05PX0NP
TU1PTl9CTE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJ
R0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJ
QUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNU
SU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNP
U1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8g
PSBOTzsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJ
CQkJU1dJRlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xlbW9kdWxlOworCQkJCVNXSUZUX09QVElN
SVpBVElPTl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJ
CTE0MDExODIwMjQ5OTg1MTcwMDM5ODdBOSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZ
TEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTV0lGVF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
MTQwMTE4MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NU
WUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
Ky8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29u
ZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDAxMTgxMzI0OTk4NTE3MDAzOTg3QTkgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc1NvbWVPYmpD
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCTE0MDExODFEMjQ5OTg1MTcwMDM5ODdBOSAvKiBEZWJ1ZyAqLywKKwkJ
CQkxNDAxMTgxRTI0OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBSZWxlYXNlOworCQl9OworCQkxNDAxMTgxRjI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzU29tZU9iakMi
ICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCisJCQkJMTQwMTE4MjAyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovLAorCQkJ
CTE0MDExODIxMjQ5OTg1MTcwMDM5ODdBOSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICov
CisJfTsKKwlyb290T2JqZWN0ID0gMTQwMTE4MTAyNDk5ODUxNzAwMzk4N0E5IC8qIFByb2plY3Qg
b2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNv
bWluZ0FQSS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMueGNvZGVwcm9qL3hjc2hh
cmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNTb21lT2JqQy54Y3NjaGVtZSBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21lT2JqQy9SaWNoYXJkc1NvbWVP
YmpDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU29tZU9iakMueGNz
Y2hlbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTRkMmI3ZWIwOWRkOWY0NmExY2VmZWVhMTAzZjQ5YjVlMmYyYWRh
NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdB
UEkvUmljaGFyZHNTb21lT2JqQy9SaWNoYXJkc1NvbWVPYmpDLnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1JpY2hhcmRzU29tZU9iakMueGNzY2hlbWUKQEAgLTAsMCArMSw4MSBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTY2hlbWUKKyAgIExhc3RV
cGdyYWRlVmVyc2lvbiA9ICIxMjAwIgorICAgdmVyc2lvbiA9ICIxLjciPgorICAgPEJ1aWxkQWN0
aW9uCisgICAgICBwYXJhbGxlbGl6ZUJ1aWxkYWJsZXMgPSAiWUVTIgorICAgICAgYnVpbGRJbXBs
aWNpdERlcGVuZGVuY2llcyA9ICJZRVMiPgorICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KKyAg
ICAgICAgIDxCdWlsZEFjdGlvbkVudHJ5CisgICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAi
WUVTIgorICAgICAgICAgICAgYnVpbGRGb3JSdW5uaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1
aWxkRm9yUHJvZmlsaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5nID0g
IllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+CisgICAgICAgICAg
ICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVy
ID0gInByaW1hcnkiCisgICAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MDEx
ODE3MjQ5OTg1MTcwMDM5ODdBOSIKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmlj
aGFyZHNTb21lT2JqQyIKKyAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNT
b21lT2JqQyIKKyAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVy
OlJpY2hhcmRzU29tZU9iakMueGNvZGVwcm9qIj4KKyAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVm
ZXJlbmNlPgorICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5PgorICAgICAgPC9CdWlsZEFjdGlv
bkVudHJpZXM+CisgICA8L0J1aWxkQWN0aW9uPgorICAgPFRlc3RBY3Rpb24KKyAgICAgIGJ1aWxk
Q29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVy
ID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0
ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVy
LkxMREIiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyI+CisgICAg
ICA8VGVzdGFibGVzPgorICAgICAgPC9UZXN0YWJsZXM+CisgICA8L1Rlc3RBY3Rpb24+CisgICA8
TGF1bmNoQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBz
ZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVi
dWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRl
YnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgbGF1bmNoU3R5bGUgPSAiMCIK
KyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisgICAgICBpZ25vcmVzUGVy
c2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmlu
ZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCisgICAg
ICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAgPEJ1aWxkYWJsZVByb2R1
Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAgICAg
ICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9
ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDAxMTgxNzI0
OTk4NTE3MDAzOTg3QTkiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRzU29t
ZU9iakMiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzU29tZU9iakMiCisg
ICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc1NvbWVP
YmpDLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwv
QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8UHJvZmls
ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBzaG91
bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElkZW50aWZp
ZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAgIGRl
YnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1
bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAgICA8
QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInBy
aW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MDExODE3MjQ5OTg1
MTcwMDM5ODdBOSIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTb21lT2Jq
QyIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTb21lT2JqQyIKKyAgICAg
ICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU29tZU9iakMu
eGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWls
ZGFibGVQcm9kdWN0UnVubmFibGU+CisgICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFj
dGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFj
dGlvbj4KKyAgIDxBcmNoaXZlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVs
ZWFzZSIKKyAgICAgIHJldmVhbEFyY2hpdmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNo
aXZlQWN0aW9uPgorICAgPEluc3RhbGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9
ICJSZWxlYXNlIj4KKyAgIDwvSW5zdGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVPYmpDL1Jp
Y2hhcmRzU29tZU9iakMvbWFpbi5tIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWlu
Z0FQSS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMvbWFpbi5tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0ZmQwMjc4MzY1MDg2MTBiYjJlZDZlMTZkMjJiMjlkYmEzOTYxZGMKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29tZU9i
akMvUmljaGFyZHNTb21lT2JqQy9tYWluLm0KQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgor
CitzdGF0aWMgdW5zaWduZWQgSURfSEFORExFUl9BID0gMjsKK3N0YXRpYyB1bnNpZ25lZCBJRF9I
QU5ETEVSX0IgPSAzOworc3RhdGljIHVuc2lnbmVkIERBVEFfU0laRSA9IDQ7CisKK0Bwcm90b2Nv
bCBXb3JrZXJUYXNrRXhwb3J0czxKU0V4cG9ydD4KKworQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZywgcmVhZG9ubHkpIEpTVmFsdWUgKnNjaGVkdWxlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24sIHJlYWRvbmx5KSBpbnQgdjE7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
LCByZWFkb25seSkgaW50IHYyOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY2hlZHVsZXI6
KEpTVmFsdWUgKilzY2hlZHVsZXIgdjE6KGludCl2MSB2MjooaW50KXYyOworLSAoTlNPYmplY3Qg
KilydW46KEpTVmFsdWUgKilydW47CistIChOU1N0cmluZyAqKXRvU3RyaW5nOworCitAZW5kCisK
K0BpbnRlcmZhY2UgV29ya2VyVGFzayA6IE5TT2JqZWN0PFdvcmtlclRhc2tFeHBvcnRzPgorQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV29ya2VyVGFzayB7CisgICAgSlNWYWx1ZSogX3NjaGVkdWxl
cjsKKyAgICBpbnQgX3YxOworICAgIGludCBfdjI7Cit9CisKK0BkeW5hbWljIHNjaGVkdWxlcjsK
K0BkeW5hbWljIHYxOworQGR5bmFtaWMgdjI7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNj
aGVkdWxlcjooSlNWYWx1ZSAqKXNjaGVkdWxlciB2MTooaW50KXYxIHYyOihpbnQpdjIKK3sKKyAg
ICBfc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICAgIF92MSA9IHYxOworICAgIF92MiA9IHYyOwor
ICAgIHJldHVybiBzZWxmOworfQorCistIChOU1N0cmluZyAqKXRvU3RyaW5nCit7CisgICAgcmV0
dXJuIEAiV29ya2VyVGFzayI7Cit9CisKKy0gKE5TT2JqZWN0ICopcnVuOihKU1ZhbHVlKilwYWNr
ZXQKK3sKKyAgICBpZiAocGFja2V0LmlzTnVsbCB8fCBwYWNrZXQuaXNVbmRlZmluZWQpCisgICAg
ICAgIHJldHVybiBbX3NjaGVkdWxlciBpbnZva2VNZXRob2Q6QCJzdXNwZW5kQ3VycmVudCIgd2l0
aEFyZ3VtZW50czpAW11dOworCisgICAgX3YxID0gSURfSEFORExFUl9BICsgSURfSEFORExFUl9C
IC0gX3YxOworICAgIFtwYWNrZXQgc2V0VmFsdWU6QChfdjEpIGZvclByb3BlcnR5OkAiaWQiXTsK
KyAgICBbcGFja2V0IHNldFZhbHVlOkAwIGZvclByb3BlcnR5OkAiYTEiXTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgREFUQV9TSVpFOyArK2kpIHsKKyAgICAgICAgX3YyICs9IDE7Cisg
ICAgICAgIGlmIChfdjIgPiAyNikKKyAgICAgICAgICAgIF92MiA9IDE7CisgICAgICAgIFtbcGFj
a2V0IHZhbHVlRm9yUHJvcGVydHk6QCJhMiJdIHNldFZhbHVlOkAoX3YyKSBmb3JQcm9wZXJ0eTpA
KGkpXTsKKyAgICB9CisgICAgcmV0dXJuIFtfc2NoZWR1bGVyIGludm9rZU1ldGhvZDpAInF1ZXVl
IiB3aXRoQXJndW1lbnRzOkBbcGFja2V0XV07Cit9CisKK0BlbmQKKworaW50IG1haW4oKQorewor
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgIGV4aXQoMSk7CisKKyAgICBbY29udGV4dCBzZXRPYmplY3Q6
V29ya2VyVGFzay5zZWxmIGZvcktleWVkU3Vic2NyaXB0OkAiV29ya2VyVGFzayJdOworICAgIFtj
b250ZXh0IHNldEV4Y2VwdGlvbkhhbmRsZXI6XihKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWUg
KmV4Y2VwdGlvbikgeworICAgICAgICBOU0xvZyhAIiVAIiwgZXhjZXB0aW9uLnRvU3RyaW5nKTsK
KyAgICAgICAgZXhpdCgxKTsKKyAgICB9XTsKKworICAgIE5TU3RyaW5nKiBzb3VyY2UgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOkAicmljaGFyZHMuanMiIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF07CisgICAgW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6c291cmNlXTsKKworICAgIHVuc2lnbmVkIGl0ZXJhdGlvbnMgPSA1MDsKKyAgICBDRlRpbWVJ
bnRlcnZhbCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGltZSgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPD0gaXRlcmF0aW9uczsgKytpKQorICAgICAgICBbW2NvbnRleHQgb2JqZWN0Rm9y
S2V5ZWRTdWJzY3JpcHQ6QCJydW5SaWNoYXJkcyJdIGNhbGxXaXRoQXJndW1lbnRzOkBbXV07Cisg
ICAgQ0ZUaW1lSW50ZXJ2YWwgZW5kID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgcHJpbnRm
KCIlZFxuIiwgKGludCkoKGVuZC1zdGFydCkgKiAxMDAwKSk7CisKKyAgICByZXR1cm4gRVhJVF9T
VUNDRVNTOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWlu
Z0FQSS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMvcmljaGFyZHMuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29tZU9iakMvUmljaGFy
ZHNTb21lT2JqQy9yaWNoYXJkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTU3M2Q5YWY0NDBmZGEzYzllNmE2
NmE5ZTcxYTVkOGYzOWQzZjg0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMvcmlj
aGFyZHMuanMKQEAgLTAsMCArMSw0OTcgQEAKKy8vIENvcHlyaWdodCAyMDA2LTIwMDggdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKy8vIFRoaXMgaXMgYSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSaWNo
YXJkcworLy8gYmVuY2htYXJrIGZyb206CisvLworLy8gICAgaHR0cDovL3d3dy5jbC5jYW0uYWMu
dWsvfm1yMTAvQmVuY2guaHRtbAorLy8KKy8vIFRoZSBiZW5jaG1hcmsgd2FzIG9yaWdpbmFsbHkg
aW1wbGVtZW50ZWQgaW4gQkNQTCBieQorLy8gTWFydGluIFJpY2hhcmRzLgorCisKKy8qKgorICog
VGhlIFJpY2hhcmRzIGJlbmNobWFyayBzaW11bGF0ZXMgdGhlIHRhc2sgZGlzcGF0Y2hlciBvZiBh
bgorICogb3BlcmF0aW5nIHN5c3RlbS4KKyAqKi8KK2Z1bmN0aW9uIHJ1blJpY2hhcmRzKCkgewor
ICB2YXIgc2NoZWR1bGVyID0gbmV3IFNjaGVkdWxlcigpOworICBzY2hlZHVsZXIuYWRkSWRsZVRh
c2soSURfSURMRSwgMCwgbnVsbCwgQ09VTlQpOworCisgIHZhciBxdWV1ZSA9IG5ldyBQYWNrZXQo
bnVsbCwgSURfV09SS0VSLCBLSU5EX1dPUkspOworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUs
ICBJRF9XT1JLRVIsIEtJTkRfV09SSyk7CisgIHNjaGVkdWxlci5hZGRXb3JrZXJUYXNrKElEX1dP
UktFUiwgMTAwMCwgcXVldWUpOworCisgIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9ERVZJ
Q0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJ
Q0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9ERVZJ
Q0VfQSwgS0lORF9ERVZJQ0UpOworICBzY2hlZHVsZXIuYWRkSGFuZGxlclRhc2soSURfSEFORExF
Ul9BLCAyMDAwLCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklD
RV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklD
RV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklD
RV9CLCBLSU5EX0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVS
X0IsIDMwMDAsIHF1ZXVlKTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0Vf
QSwgNDAwMCwgbnVsbCk7CisKKyAgc2NoZWR1bGVyLmFkZERldmljZVRhc2soSURfREVWSUNFX0Is
IDUwMDAsIG51bGwpOworCisgIHNjaGVkdWxlci5zY2hlZHVsZSgpOworCisgIGlmIChzY2hlZHVs
ZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9RVUVVRV9DT1VOVCB8fAorICAgICAgc2NoZWR1bGVy
LmhvbGRDb3VudCAhPSBFWFBFQ1RFRF9IT0xEX0NPVU5UKSB7CisgICAgdmFyIG1zZyA9CisgICAg
ICAgICJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50ID0gIiArIHNjaGVkdWxlci5x
dWV1ZUNvdW50ICsKKyAgICAgICAgIiwgaG9sZENvdW50ID0gIiArIHNjaGVkdWxlci5ob2xkQ291
bnQgKyAiLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7CisgIH0KK30KKwordmFyIENPVU5U
ID0gMTAwMDsKKworLyoqCisgKiBUaGVzZSB0d28gY29uc3RhbnRzIHNwZWNpZnkgaG93IG1hbnkg
dGltZXMgYSBwYWNrZXQgaXMgcXVldWVkIGFuZAorICogaG93IG1hbnkgdGltZXMgYSB0YXNrIGlz
IHB1dCBvbiBob2xkIGluIGEgY29ycmVjdCBydW4gb2YgcmljaGFyZHMuCisgKiBUaGV5IGRvbid0
IGhhdmUgYW55IG1lYW5pbmcgYSBzdWNoIGJ1dCBhcmUgY2hhcmFjdGVyaXN0aWMgb2YgYQorICog
Y29ycmVjdCBydW4gc28gaWYgdGhlIGFjdHVhbCBxdWV1ZSBvciBob2xkIGNvdW50IGlzIGRpZmZl
cmVudCBmcm9tCisgKiB0aGUgZXhwZWN0ZWQgdGhlcmUgbXVzdCBiZSBhIGJ1ZyBpbiB0aGUgaW1w
bGVtZW50YXRpb24uCisgKiovCit2YXIgRVhQRUNURURfUVVFVUVfQ09VTlQgPSAyMzIyOwordmFy
IEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKKworLyoqCisgKiBBIHNjaGVkdWxlciBjYW4g
YmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBvZiB0YXNrcyBiYXNlZCBvbiB0aGVpciByZWxhdGl2
ZQorICogcHJpb3JpdGllcy4gIFNjaGVkdWxpbmcgaXMgZG9uZSBieSBtYWludGFpbmluZyBhIGxp
c3Qgb2YgdGFzayBjb250cm9sIGJsb2NrcworICogd2hpY2ggaG9sZHMgdGFza3MgYW5kIHRoZSBk
YXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVu
Y3Rpb24gU2NoZWR1bGVyKCkgeworICB0aGlzLnF1ZXVlQ291bnQgPSAwOworICB0aGlzLmhvbGRD
b3VudCA9IDA7CisgIHRoaXMuYmxvY2tzID0gbmV3IEFycmF5KE5VTUJFUl9PRl9JRFMpOworICB0
aGlzLmxpc3QgPSBudWxsOworICB0aGlzLmN1cnJlbnRUY2IgPSBudWxsOworICB0aGlzLmN1cnJl
bnRJZCA9IG51bGw7Cit9CisKK3ZhciBJRF9JRExFICAgICAgID0gMDsKK3ZhciBJRF9XT1JLRVIg
ICAgID0gMTsKK3ZhciBJRF9IQU5ETEVSX0EgID0gMjsKK3ZhciBJRF9IQU5ETEVSX0IgID0gMzsK
K3ZhciBJRF9ERVZJQ0VfQSAgID0gNDsKK3ZhciBJRF9ERVZJQ0VfQiAgID0gNTsKK3ZhciBOVU1C
RVJfT0ZfSURTID0gNjsKKwordmFyIEtJTkRfREVWSUNFICAgPSAwOwordmFyIEtJTkRfV09SSyAg
ICAgPSAxOworCisvKioKKyAqIEFkZCBhbiBpZGxlIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisg
KiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2lu
dH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVl
IHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFt
IHtpbnR9IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgdG8gc2NoZWR1bGUgdGhlIHRhc2sKKyAq
LworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRJZGxlVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3Jp
dHksIHF1ZXVlLCBjb3VudCkgeworICB0aGlzLmFkZFJ1bm5pbmdUYXNrKGlkLCBwcmlvcml0eSwg
cXVldWUsIG5ldyBJZGxlVGFzayh0aGlzLCAxLCBjb3VudCkpOworfTsKKworLyoqCisgKiBBZGQg
YSB3b3JrIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlk
ZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBw
cmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJl
IHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFdvcmtl
clRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2so
aWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IFdvcmtlclRhc2sodGhpcywgSURfSEFORExFUl9BLCAw
KSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhhbmRsZXIgdGFzayB0byB0aGlzIHNjaGVkdWxlci4K
KyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7
aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVl
dWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKi8KK1Nj
aGVkdWxlci5wcm90b3R5cGUuYWRkSGFuZGxlclRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5
LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IEhhbmRs
ZXJUYXNrKHRoaXMpKTsKK307CisKKy8qKgorICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMg
c2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzawor
ICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7
UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRh
c2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGREZXZpY2VUYXNrID0gZnVuY3Rpb24gKGlk
LCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUs
IG5ldyBEZXZpY2VUYXNrKHRoaXMpKQorfTsKKworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0
YXNrIGFuZCBtYXJrIGl0IGFzIHJ1bm5pbmcuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50
aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlv
cml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHBy
b2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFk
ZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdUYXNrID0gZnVuY3Rpb24gKGlk
LCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwg
cXVldWUsIHRhc2spOworICB0aGlzLmN1cnJlbnRUY2Iuc2V0UnVubmluZygpOworfTsKKworLyoq
CisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFt
IHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9y
aXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVl
dWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFza30g
dGFzayB0aGUgdGFzayB0byBhZGQKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRUYXNrID0g
ZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5jdXJyZW50VGNi
ID0gbmV3IFRhc2tDb250cm9sQmxvY2sodGhpcy5saXN0LCBpZCwgcHJpb3JpdHksIHF1ZXVlLCB0
YXNrKTsKKyAgdGhpcy5saXN0ID0gdGhpcy5jdXJyZW50VGNiOworICB0aGlzLmJsb2Nrc1tpZF0g
PSB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisvKioKKyAqIEV4ZWN1dGUgdGhlIHRhc2tzIG1hbmFn
ZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuc2NoZWR1bGUg
PSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMubGlzdDsKKyAgd2hpbGUg
KHRoaXMuY3VycmVudFRjYiAhPSBudWxsKSB7CisgICAgaWYgKHRoaXMuY3VycmVudFRjYi5pc0hl
bGRPclN1c3BlbmRlZCgpKSB7CisgICAgICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmN1cnJlbnRU
Y2IubGluazsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5jdXJyZW50SWQgPSB0aGlzLmN1cnJl
bnRUY2IuaWQ7CisgICAgICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmN1cnJlbnRUY2IucnVuKCk7
CisgICAgfQorICB9Cit9OworCisvKioKKyAqIFJlbGVhc2UgYSB0YXNrIHRoYXQgaXMgY3VycmVu
dGx5IGJsb2NrZWQgYW5kIHJldHVybiB0aGUgbmV4dCBibG9jayB0byBydW4uCisgKiBAcGFyYW0g
e2ludH0gaWQgdGhlIGlkIG9mIHRoZSB0YXNrIHRvIHN1c3BlbmQKKyAqLworU2NoZWR1bGVyLnBy
b3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24gKGlkKSB7CisgIHZhciB0Y2IgPSB0aGlzLmJsb2Nr
c1tpZF07CisgIGlmICh0Y2IgPT0gbnVsbCkgcmV0dXJuIHRjYjsKKyAgdGNiLm1hcmtBc05vdEhl
bGQoKTsKKyAgaWYgKHRjYi5wcmlvcml0eSA+IHRoaXMuY3VycmVudFRjYi5wcmlvcml0eSkgewor
ICAgIHJldHVybiB0Y2I7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHRoaXMuY3VycmVudFRjYjsK
KyAgfQorfTsKKworLyoqCisgKiBCbG9jayB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFu
ZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJsb2NrCisgKiB0byBydW4uICBUaGUgYmxv
Y2tlZCB0YXNrIHdpbGwgbm90IGJlIG1hZGUgcnVubmFibGUgdW50aWwgaXQgaXMgZXhwbGljaXRs
eQorICogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisgKi8KK1Nj
aGVkdWxlci5wcm90b3R5cGUuaG9sZEN1cnJlbnQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuaG9s
ZENvdW50Kys7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNIZWxkKCk7CisgIHJldHVybiB0aGlz
LmN1cnJlbnRUY2IubGluazsKK307CisKKy8qKgorICogU3VzcGVuZCB0aGUgY3VycmVudGx5IGV4
ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJsb2NrCisgKiB0
byBydW4uICBJZiBuZXcgd29yayBpcyBhZGRlZCB0byB0aGUgc3VzcGVuZGVkIHRhc2sgaXQgd2ls
bCBiZSBtYWRlIHJ1bm5hYmxlLgorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnN1c3BlbmRDdXJy
ZW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmN1cnJlbnRUY2IubWFya0FzU3VzcGVuZGVkKCk7
CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lm
aWVkIHBhY2tldCB0byB0aGUgZW5kIG9mIHRoZSB3b3JrbGlzdCB1c2VkIGJ5IHRoZSB0YXNrCisg
KiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldCBhbmQgbWFrZSB0aGUgdGFzayBydW5uYWJsZSBp
ZiBpdCBpcyBjdXJyZW50bHkKKyAqIHN1c3BlbmRlZC4KKyAqIEBwYXJhbSB7UGFja2V0fSBwYWNr
ZXQgdGhlIHBhY2tldCB0byBhZGQKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5xdWV1ZSA9IGZ1
bmN0aW9uIChwYWNrZXQpIHsKKyAgdmFyIHQgPSB0aGlzLmJsb2Nrc1twYWNrZXQuaWRdOworICBp
ZiAodCA9PSBudWxsKSByZXR1cm4gdDsKKyAgdGhpcy5xdWV1ZUNvdW50Kys7CisgIHBhY2tldC5s
aW5rID0gbnVsbDsKKyAgcGFja2V0LmlkID0gdGhpcy5jdXJyZW50SWQ7CisgIHJldHVybiB0LmNo
ZWNrUHJpb3JpdHlBZGQodGhpcy5jdXJyZW50VGNiLCBwYWNrZXQpOworfTsKKworLyoqCisgKiBB
IHRhc2sgY29udHJvbCBibG9jayBtYW5hZ2VzIGEgdGFzayBhbmQgdGhlIHF1ZXVlIG9mIHdvcmsg
cGFja2FnZXMgYXNzb2NpYXRlZAorICogd2l0aCBpdC4KKyAqIEBwYXJhbSB7VGFza0NvbnRyb2xC
bG9ja30gbGluayB0aGUgcHJlY2VkaW5nIGJsb2NrIGluIHRoZSBsaW5rZWQgYmxvY2sgbGlzdAor
ICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBvZiB0aGlzIGJsb2NrCisgKiBAcGFyYW0ge2ludH0g
cHJpb3JpdHkgdGhlIHByaW9yaXR5IG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJhbSB7UGFja2V0fSBx
dWV1ZSB0aGUgcXVldWUgb2YgcGFja2FnZXMgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisg
KiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5j
dGlvbiBUYXNrQ29udHJvbEJsb2NrKGxpbmssIGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsK
KyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhpcy5pZCA9IGlkOworICB0aGlzLnByaW9yaXR5ID0g
cHJpb3JpdHk7CisgIHRoaXMucXVldWUgPSBxdWV1ZTsKKyAgdGhpcy50YXNrID0gdGFzazsKKyAg
aWYgKHF1ZXVlID09IG51bGwpIHsKKyAgICB0aGlzLnN0YXRlID0gU1RBVEVfU1VTUEVOREVEOwor
ICB9IGVsc2UgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEU7Cisg
IH0KK30KKworLyoqCisgKiBUaGUgdGFzayBpcyBydW5uaW5nIGFuZCBpcyBjdXJyZW50bHkgc2No
ZWR1bGVkLgorICovCit2YXIgU1RBVEVfUlVOTklORyA9IDA7CisKKy8qKgorICogVGhlIHRhc2sg
aGFzIHBhY2tldHMgbGVmdCB0byBwcm9jZXNzLgorICovCit2YXIgU1RBVEVfUlVOTkFCTEUgPSAx
OworCisvKioKKyAqIFRoZSB0YXNrIGlzIG5vdCBjdXJyZW50bHkgcnVubmluZy4gIFRoZSB0YXNr
IGlzIG5vdCBibG9ja2VkIGFzIHN1Y2ggYW5kIG1heQorKiBiZSBzdGFydGVkIGJ5IHRoZSBzY2hl
ZHVsZXIuCisgKi8KK3ZhciBTVEFURV9TVVNQRU5ERUQgPSAyOworCisvKioKKyAqIFRoZSB0YXNr
IGlzIGJsb2NrZWQgYW5kIGNhbm5vdCBiZSBydW4gdW50aWwgaXQgaXMgZXhwbGljaXRseSByZWxl
YXNlZC4KKyAqLwordmFyIFNUQVRFX0hFTEQgPSA0OworCit2YXIgU1RBVEVfU1VTUEVOREVEX1JV
Tk5BQkxFID0gU1RBVEVfU1VTUEVOREVEIHwgU1RBVEVfUlVOTkFCTEU7Cit2YXIgU1RBVEVfTk9U
X0hFTEQgPSB+U1RBVEVfSEVMRDsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuc2V0UnVu
bmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5JTkc7Cit9Owor
CitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNOb3RIZWxkID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSAmIFNUQVRFX05PVF9IRUxEOworfTsKKworVGFz
a0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzSGVsZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhp
cy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9IRUxEOworfTsKKworVGFza0NvbnRyb2xCbG9j
ay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5kZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAo
dGhpcy5zdGF0ZSAmIFNUQVRFX0hFTEQpICE9IDAgfHwgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VT
UEVOREVEKTsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1N1c3BlbmRl
ZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9TVVNQ
RU5ERUQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNSdW5uYWJsZSA9
IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9SVU5OQUJM
RTsKK307CisKKy8qKgorICogUnVucyB0aGlzIHRhc2ssIGlmIGl0IGlzIHJlYWR5IHRvIGJlIHJ1
biwgYW5kIHJldHVybnMgdGhlIG5leHQgdGFzayB0byBydW4uCisgKi8KK1Rhc2tDb250cm9sQmxv
Y2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHBhY2tldDsKKyAgaWYgKHRo
aXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFKSB7CisgICAgcGFja2V0ID0gdGhp
cy5xdWV1ZTsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0Lmxpbms7CisgICAgaWYgKHRoaXMucXVl
dWUgPT0gbnVsbCkgeworICAgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5JTkc7CisgICAgfSBl
bHNlIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5OQUJMRTsKKyAgICB9CisgIH0gZWxz
ZSB7CisgICAgcGFja2V0ID0gbnVsbDsKKyAgfQorICByZXR1cm4gdGhpcy50YXNrLnJ1bihwYWNr
ZXQpOworfTsKKworLyoqCisgKiBBZGRzIGEgcGFja2V0IHRvIHRoZSB3b3JrbGlzdCBvZiB0aGlz
IGJsb2NrJ3MgdGFzaywgbWFya3MgdGhpcyBhcyBydW5uYWJsZSBpZgorICogbmVjZXNzYXJ5LCBh
bmQgcmV0dXJucyB0aGUgbmV4dCBydW5uYWJsZSBvYmplY3QgdG8gcnVuICh0aGUgb25lCisgKiB3
aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5KS4KKyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5
cGUuY2hlY2tQcmlvcml0eUFkZCA9IGZ1bmN0aW9uICh0YXNrLCBwYWNrZXQpIHsKKyAgaWYgKHRo
aXMucXVldWUgPT0gbnVsbCkgeworICAgIHRoaXMucXVldWUgPSBwYWNrZXQ7CisgICAgdGhpcy5t
YXJrQXNSdW5uYWJsZSgpOworICAgIGlmICh0aGlzLnByaW9yaXR5ID4gdGFzay5wcmlvcml0eSkg
cmV0dXJuIHRoaXM7CisgIH0gZWxzZSB7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldC5hZGRUbyh0
aGlzLnF1ZXVlKTsKKyAgfQorICByZXR1cm4gdGFzazsKK307CisKK1Rhc2tDb250cm9sQmxvY2su
cHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gInRjYiB7ICIgKyB0
aGlzLnRhc2sgKyAiQCIgKyB0aGlzLnN0YXRlICsgIiB9IjsKK307CisKKy8qKgorICogQW4gaWRs
ZSB0YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsgaXRzZWxmIGJ1dCBjeWNsZXMgY29udHJvbCBiZXR3
ZWVuIHRoZSB0d28KKyAqIGRldmljZSB0YXNrcy4KKyAqIEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hl
ZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNrCisgKiBAcGFyYW0ge2lu
dH0gdjEgYSBzZWVkIHZhbHVlIHRoYXQgY29udHJvbHMgaG93IHRoZSBkZXZpY2UgdGFza3MgYXJl
IHNjaGVkdWxlZAorICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgdGhp
cyB0YXNrIHNob3VsZCBiZSBzY2hlZHVsZWQKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlv
biBJZGxlVGFzayhzY2hlZHVsZXIsIHYxLCBjb3VudCkgeworICB0aGlzLnNjaGVkdWxlciA9IHNj
aGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOworICB0aGlzLmNvdW50ID0gY291bnQ7Cit9CisKK0lk
bGVUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIHRoaXMuY291bnQt
LTsKKyAgaWYgKHRoaXMuY291bnQgPT0gMCkgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJy
ZW50KCk7CisgIGlmICgodGhpcy52MSAmIDEpID09IDApIHsKKyAgICB0aGlzLnYxID0gdGhpcy52
MSA+PiAxOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5yZWxlYXNlKElEX0RFVklDRV9BKTsK
KyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0gKHRoaXMudjEgPj4gMSkgXiAweEQwMDg7CisgICAg
cmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0IpOworICB9Cit9OworCitJ
ZGxlVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiSWRs
ZVRhc2siCit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBl
YWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRh
IGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxl
ciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCitmdW5jdGlvbiBEZXZpY2VUYXNrKHNjaGVkdWxlcikgeworICB0aGlzLnNjaGVkdWxlciA9
IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7Cit9CisKK0RldmljZVRhc2sucHJvdG90eXBl
LnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAg
aWYgKHRoaXMudjEgPT0gbnVsbCkgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50
KCk7CisgICAgdmFyIHYgPSB0aGlzLnYxOworICAgIHRoaXMudjEgPSBudWxsOworICAgIHJldHVy
biB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0gcGFj
a2V0OworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5ob2xkQ3VycmVudCgpOworICB9Cit9Owor
CitEZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJu
ICJEZXZpY2VUYXNrIjsKK307CisKKy8qKgorICogQSB0YXNrIHRoYXQgbWFuaXB1bGF0ZXMgd29y
ayBwYWNrZXRzIGFuZCB0aGVuIHN1c3BlbmRzIGl0c2VsZi4KKyAqIEBwYXJhbSB7U2NoZWR1bGVy
fSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNrCisgKiBAY29u
c3RydWN0b3IKKyAqLworZnVuY3Rpb24gSGFuZGxlclRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMu
c2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gbnVsbDsKKyAgdGhpcy52MiA9IG51
bGw7Cit9CisKK0hhbmRsZXJUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7
CisgIGlmIChwYWNrZXQgIT0gbnVsbCkgeworICAgIGlmIChwYWNrZXQua2luZCA9PSBLSU5EX1dP
UkspIHsKKyAgICAgIHRoaXMudjEgPSBwYWNrZXQuYWRkVG8odGhpcy52MSk7CisgICAgfSBlbHNl
IHsKKyAgICAgIHRoaXMudjIgPSBwYWNrZXQuYWRkVG8odGhpcy52Mik7CisgICAgfQorICB9Cisg
IGlmICh0aGlzLnYxICE9IG51bGwpIHsKKyAgICB2YXIgY291bnQgPSB0aGlzLnYxLmExOworICAg
IHZhciB2OworICAgIGlmIChjb3VudCA8IERBVEFfU0laRSkgeworICAgICAgaWYgKHRoaXMudjIg
IT0gbnVsbCkgeworICAgICAgICB2ID0gdGhpcy52MjsKKyAgICAgICAgdGhpcy52MiA9IHRoaXMu
djIubGluazsKKyAgICAgICAgdi5hMSA9IHRoaXMudjEuYTJbY291bnRdOworICAgICAgICB0aGlz
LnYxLmExID0gY291bnQgKyAxOworICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUo
dik7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHYgPSB0aGlzLnYxOworICAgICAgdGhp
cy52MSA9IHRoaXMudjEubGluazsKKyAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2
KTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7
Cit9OworCitIYW5kbGVyVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7Cisg
IHJldHVybiAiSGFuZGxlclRhc2siOworfTsKKworLyogLS0tICoKKyAqIFAgYSBjIGsgZSB0Cisg
KiAtLS0gKi8KKwordmFyIERBVEFfU0laRSA9IDQ7CisKKy8qKgorICogQSBzaW1wbGUgcGFja2Fn
ZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0ZWQgYnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxh
eW91dAorICogb2YgdGhlIHBheWxvYWQgZGF0YSBjYXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBp
bXBvcnRhaW50LCBhbmQgbmVpdGhlciBpcyB0aGUKKyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJm
b3JtZWQgb24gcGFja2V0cyBieSB0aGUgdGFza3MuCisgKgorICogQmVzaWRlcyBjYXJyeWluZyBk
YXRhLCBwYWNrZXRzIGZvcm0gbGlua2VkIGxpc3RzIGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFz
CisgKiBkYXRhIGFuZCB3b3JrbGlzdHMuCisgKiBAcGFyYW0ge1BhY2tldH0gbGluayB0aGUgdGFp
bCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgcGFja2V0cworICogQHBhcmFtIHtpbnR9IGlkIGFuIElE
IGZvciB0aGlzIHBhY2tldAorICogQHBhcmFtIHtpbnR9IGtpbmQgdGhlIHR5cGUgb2YgdGhpcyBw
YWNrZXQKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBQYWNrZXQobGluaywgaWQsIGtp
bmQpIHsKKyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhpcy5pZCA9IGlkOworICB0aGlzLmtpbmQg
PSBraW5kOworICB0aGlzLmExID0gMDsKKyAgdGhpcy5hMiA9IG5ldyBBcnJheShEQVRBX1NJWkUp
OworfQorCisvKioKKyAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEgd29ya2xpc3Qs
IGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSB3
b3JrbGlzdCB0byBhZGQgdGhpcyBwYWNrZXQgdG8KKyAqLworUGFja2V0LnByb3RvdHlwZS5hZGRU
byA9IGZ1bmN0aW9uIChxdWV1ZSkgeworICB0aGlzLmxpbmsgPSBudWxsOworICBpZiAocXVldWUg
PT0gbnVsbCkgcmV0dXJuIHRoaXM7CisgIHZhciBwZWVrLCBuZXh0ID0gcXVldWU7CisgIHdoaWxl
ICgocGVlayA9IG5leHQubGluaykgIT0gbnVsbCkKKyAgICBuZXh0ID0gcGVlazsKKyAgbmV4dC5s
aW5rID0gdGhpczsKKyAgcmV0dXJuIHF1ZXVlOworfTsKKworUGFja2V0LnByb3RvdHlwZS50b1N0
cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJQYWNrZXQiOworfTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21lU3dpZnQv
UmljaGFyZHNTb21lU3dpZnQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFyZHNTb21l
U3dpZnQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzk2NWQzOGI1ZWI3
OWEwMTZjNThmZjU4ZDdjYjcwODI0ZGI1ODkxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1Nv
bWVTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjkwIEBACisvLyAh
JCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlv
YmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KKwkJMTQwMTE4MUMyNDk5ODUxNzAwMzk4N0E5IC8qIG1haW4uc3dpZnQgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAxMTgxQjI0OTk4
NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCAqLzsgfTsKKwkJMTQxNUFEMTgyNDk5QTQxNDAwNUJC
MkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi87IH07
CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MDExODE2MjQ5OTg1MTcwMDM5ODdBOSAvKiBDb3B5
RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0g
MTY7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDE1QUQxODI0OTlBNDE0MDA1QkIyRTQgLyogcmljaGFy
ZHMuanMgaW4gQ29weUZpbGVzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMTQwMTE4
MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZVN3aWZ0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJkc1NvbWVTd2lmdDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMTQwMTE4MUIyNDk5ODUxNzAwMzk4N0E5
IC8qIG1haW4uc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gbWFpbi5zd2lmdDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQxNUFEMTYyNDk5ODYwNTAwNUJCMkU0IC8qIHJpY2hhcmRzLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gcmljaGFyZHMuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQw
MTE4MTUyNDk5ODUxNzAwMzk4N0E5IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMTQwMTE4MEYyNDk5ODUxNzAwMzk4N0E5
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDAxMTgxQTI0
OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNTb21lU3dpZnQgKi8sCisJCQkJMTQwMTE4MTkyNDk5
ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9kdWN0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwMTE4MTgyNDk5
ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzU29tZVN3aWZ0ICovLAorCQkJKTsKKwkJCW5hbWUgPSBQ
cm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MDExODFBMjQ5
OTg1MTcwMDM5ODdBOSAvKiBSaWNoYXJkc1NvbWVTd2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwMTE4MUIyNDk5ODUxNzAwMzk4N0E5IC8qIG1h
aW4uc3dpZnQgKi8sCisJCQkJMTQxNUFEMTYyNDk5ODYwNTAwNUJCMkU0IC8qIHJpY2hhcmRzLmpz
ICovLAorCQkJKTsKKwkJCXBhdGggPSBSaWNoYXJkc1NvbWVTd2lmdDsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkg
LyogUmljaGFyZHNTb21lU3dpZnQgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQwMTE4MUYyNDk5ODUxNzAwMzk4N0E5IC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJkc1NvbWVT
d2lmdCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDAxMTgxNDI0OTk4NTE3MDAzOTg3
QTkgLyogU291cmNlcyAqLywKKwkJCQkxNDAxMTgxNTI0OTk4NTE3MDAzOTg3QTkgLyogRnJhbWV3
b3JrcyAqLywKKwkJCQkxNDAxMTgxNjI0OTk4NTE3MDAzOTg3QTkgLyogQ29weUZpbGVzICovLAor
CQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJ
KTsKKwkJCW5hbWUgPSBSaWNoYXJkc1NvbWVTd2lmdDsKKwkJCXByb2R1Y3ROYW1lID0gUmljaGFy
ZHNTb21lU3dpZnQ7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMTQwMTE4MTgyNDk5ODUxNzAwMzk4
N0E5IC8qIFJpY2hhcmRzU29tZVN3aWZ0ICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxl
LnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJMTQwMTE4MTAyNDk5ODUx
NzAwMzk4N0E5IC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsK
KwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAxMjAwOworCQkJ
CUxhc3RVcGdyYWRlQ2hlY2sgPSAxMjAwOworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJ
CTE0MDExODE3MjQ5OTg1MTcwMDM5ODdBOSA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lv
biA9IDEyLjA7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQwMTE4MTMyNDk5ODUxNzAwMzk4N0E5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNTb21lU3dpZnQiICovOworCQkJY29tcGF0aWJpbGl0
eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJCQlo
YXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwK
KwkJCQlCYXNlLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MDExODBGMjQ5OTg1MTcwMDM5ODdB
OTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9k
dWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOwor
CQkJdGFyZ2V0cyA9ICgKKwkJCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNT
b21lU3dpZnQgKi8sCisJCQkpOworCQl9OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MDExODE0MjQ5
OTg1MTcwMDM5ODdBOSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJMTQwMTE4MUMyNDk5ODUxNzAwMzk4N0E5IC8qIG1haW4uc3dpZnQgaW4gU291cmNlcyAqLywK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsK
Ky8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVp
bGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQwMTE4MUQyNDk5ODUxNzAwMzk4N0E5IC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5H
X0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTlVNQkVSX09CSkVD
VF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NU
QU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJ
CQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJD
ID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09M
X0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ERVBSRUNB
VEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09C
SkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9DVU1FTlRBVElPTl9D
T01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTkZJTklURV9S
RUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9P
QkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9D
TEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNMVURFX0lOX0ZSQU1F
V09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9VTkdVQVJERURfQVZB
SUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9D
T0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7
CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VCA9IGR3YXJmOworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUVO
QUJMRV9URVNUQUJJTElUWSA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdu
dTExOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19OT19DT01NT05fQkxP
Q0tTID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQ
Uk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJp
dGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0Nf
V0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTEla
RURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04g
PSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IElO
Q0xVREVfU09VUkNFOworCQkJCU1UTF9GQVNUX01BVEggPSBZRVM7CisJCQkJT05MWV9BQ1RJVkVf
QVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0FDVElWRV9DT01Q
SUxBVElPTl9DT05ESVRJT05TID0gREVCVUc7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVM
ID0gIi1Pbm9uZSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDAxMTgxRTI0
OTk4NTE3MDAzOTg3QTkgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFU
SFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FO
QUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNM
QU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElC
UkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNM
QU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09N
TUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19X
QVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9C
T0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NP
TlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9U
RURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFO
R0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVT
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5H
X1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVf
TUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJV
R19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVfTlNf
QVNTRVJUSU9OUyA9IE5POworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOwor
CQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJR0NDX05PX0NPTU1PTl9C
TE9DS1MgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dB
Uk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVE
X0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBOTzsK
KwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJ
RlRfQ09NUElMQVRJT05fTU9ERSA9IHdob2xlbW9kdWxlOworCQkJCVNXSUZUX09QVElNSVpBVElP
Tl9MRVZFTCA9ICItTyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0MDEx
ODIwMjQ5OTg1MTcwMDM5ODdBOSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBB
dXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lG
VF9WRVJTSU9OID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQwMTE4
MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0g
QXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJ
RlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVu
ZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJh
dGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxNDAxMTgxMzI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJSaWNoYXJkc1NvbWVTd2lmdCIgKi8g
PSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKKwkJCQkxNDAxMTgxRDI0OTk4NTE3MDAzOTg3QTkgLyogRGVidWcgKi8sCisJCQkJMTQw
MTE4MUUyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UmVsZWFzZTsKKwkJfTsKKwkJMTQwMTE4MUYyNDk5ODUxNzAwMzk4N0E5IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJkc1NvbWVTd2lmdCIgKi8g
PSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKKwkJCQkxNDAxMTgyMDI0OTk4NTE3MDAzOTg3QTkgLyogRGVidWcgKi8sCisJCQkJMTQw
MTE4MjEyNDk5ODUxNzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9
OworCXJvb3RPYmplY3QgPSAxNDAxMTgxMDI0OTk4NTE3MDAzOTg3QTkgLyogUHJvamVjdCBvYmpl
Y3QgKi87Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5n
QVBJL1JpY2hhcmRzU29tZVN3aWZ0L1JpY2hhcmRzU29tZVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJl
ZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU29tZVN3aWZ0Lnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVT
d2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1NvbWVTd2lmdC54
Y3NjaGVtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZmRmZGE0M2U2NGY5MjZjMjYzNGM2NjA4MGI5MDRiNGEzMTQ3
ZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNvbWlu
Z0FQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1NvbWVTd2lmdC54Y3NjaGVtZQpAQCAtMCwwICsxLDgx
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNjaGVtZQorICAg
TGFzdFVwZ3JhZGVWZXJzaW9uID0gIjEyMDAiCisgICB2ZXJzaW9uID0gIjEuNyI+CisgICA8QnVp
bGRBY3Rpb24KKyAgICAgIHBhcmFsbGVsaXplQnVpbGRhYmxlcyA9ICJZRVMiCisgICAgICBidWls
ZEltcGxpY2l0RGVwZW5kZW5jaWVzID0gIllFUyI+CisgICAgICA8QnVpbGRBY3Rpb25FbnRyaWVz
PgorICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKKyAgICAgICAgICAgIGJ1aWxkRm9yVGVzdGlu
ZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcgPSAiWUVTIgorICAgICAgICAg
ICAgYnVpbGRGb3JQcm9maWxpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBcmNoaXZp
bmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBbmFseXppbmcgPSAiWUVTIj4KKyAgICAg
ICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50
aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAi
MTQwMTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9
ICJSaWNoYXJkc1NvbWVTd2lmdCIKKyAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmlj
aGFyZHNTb21lU3dpZnQiCisgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNv
bnRhaW5lcjpSaWNoYXJkc1NvbWVTd2lmdC54Y29kZXByb2oiPgorICAgICAgICAgICAgPC9CdWls
ZGFibGVSZWZlcmVuY2U+CisgICAgICAgICA8L0J1aWxkQWN0aW9uRW50cnk+CisgICAgICA8L0J1
aWxkQWN0aW9uRW50cmllcz4KKyAgIDwvQnVpbGRBY3Rpb24+CisgICA8VGVzdEFjdGlvbgorICAg
ICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklk
ZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCisgICAg
ICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24u
TGF1bmNoZXIuTExEQiIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVT
Ij4KKyAgICAgIDxUZXN0YWJsZXM+CisgICAgICA8L1Rlc3RhYmxlcz4KKyAgIDwvVGVzdEFjdGlv
bj4KKyAgIDxMYXVuY2hBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIK
KyAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRh
dGlvbi5EZWJ1Z2dlci5MTERCIgorICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIgPSAi
WGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCisgICAgICBsYXVuY2hTdHls
ZSA9ICIwIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAgIGln
bm9yZXNQZXJzaXN0ZW50U3RhdGVPbkxhdW5jaCA9ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRW
ZXJzaW9uaW5nID0gIllFUyIKKyAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5h
bCIKKyAgICAgIGFsbG93TG9jYXRpb25TaW11bGF0aW9uID0gIllFUyI+CisgICAgICA8QnVpbGRh
YmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+
CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVu
dGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0
MDExODE3MjQ5OTg1MTcwMDM5ODdBOSIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmlj
aGFyZHNTb21lU3dpZnQiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzU29t
ZVN3aWZ0IgorICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6Umlj
aGFyZHNTb21lU3dpZnQueGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNl
PgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICA8L0xhdW5jaEFjdGlvbj4K
KyAgIDxQcm9maWxlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIK
KyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIgorICAgICAgc2F2ZWRU
b29sSWRlbnRpZmllciA9ICIiCisgICAgICB1c2VDdXN0b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5P
IgorICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIj4KKyAgICAgIDxCdWlsZGFi
bGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4K
KyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50
aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQw
MTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNo
YXJkc1NvbWVTd2lmdCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTb21l
U3dpZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNo
YXJkc1NvbWVTd2lmdC54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+
CisgICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgIDwvUHJvZmlsZUFjdGlvbj4K
KyAgIDxBbmFseXplQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciPgor
ICAgPC9BbmFseXplQWN0aW9uPgorICAgPEFyY2hpdmVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmln
dXJhdGlvbiA9ICJSZWxlYXNlIgorICAgICAgcmV2ZWFsQXJjaGl2ZUluT3JnYW5pemVyID0gIllF
UyI+CisgICA8L0FyY2hpdmVBY3Rpb24+CisgICA8SW5zdGFsbEFjdGlvbgorICAgICAgYnVpbGRD
b25maWd1cmF0aW9uID0gIlJlbGVhc2UiPgorICAgPC9JbnN0YWxsQWN0aW9uPgorPC9TY2hlbWU+
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hh
cmRzU29tZVN3aWZ0L1JpY2hhcmRzU29tZVN3aWZ0L21haW4uc3dpZnQgYi9QZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29tZVN3aWZ0L1JpY2hhcmRzU29tZVN3
aWZ0L21haW4uc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlhZWI5MjFiMDk5YTVkYTllZDVkOTVlMmE0NzIy
NjA5MGNkZGQzYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
VXBjb21pbmdBUEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFyZHNTb21lU3dpZnQvbWFpbi5zd2lm
dApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IEZvdW5kYXRpb24KK2ltcG9y
dCBKYXZhU2NyaXB0Q29yZQoraW1wb3J0IFF1YXJ0ekNvcmUKKworbGV0IElEX0hBTkRMRVJfQSA9
IDIKK2xldCBJRF9IQU5ETEVSX0IgPSAzCitsZXQgREFUQV9TSVpFID0gNAorCitAb2JqYyBwcm90
b2NvbCBXb3JrZXJUYXNrRXhwb3J0cyA6IEpTRXhwb3J0IHsKKyAgICB2YXIgc2NoZWR1bGVyIDog
SlNWYWx1ZSB7IGdldCB9CisgICAgdmFyIHYxIDogSW50IHsgZ2V0IH0KKyAgICB2YXIgdjIgOiBJ
bnQgeyBnZXQgfQorCisgICAgaW5pdChzY2hlZHVsZXI6IEpTVmFsdWUsIHYxOiBJbnQsIHYyOiBJ
bnQpCisKKyAgICBmdW5jIHJ1bihfOiBKU1ZhbHVlKS0+IE5TT2JqZWN0CisgICAgZnVuYyB0b1N0
cmluZygpIC0+IFN0cmluZworfQorCitAb2JqYyBwdWJsaWMgY2xhc3MgV29ya2VyVGFzayA6IE5T
T2JqZWN0LCBXb3JrZXJUYXNrRXhwb3J0cyB7CisgICAgZHluYW1pYyB2YXIgc2NoZWR1bGVyIDog
SlNWYWx1ZQorICAgIGR5bmFtaWMgdmFyIHYxIDogSW50CisgICAgZHluYW1pYyB2YXIgdjIgOiBJ
bnQKKworICAgIHJlcXVpcmVkIGluaXQoc2NoZWR1bGVyOiBKU1ZhbHVlLCB2MTogSW50LCB2Mjog
SW50KQorICAgIHsKKyAgICAgICAgc2VsZi5zY2hlZHVsZXIgPSBzY2hlZHVsZXIKKyAgICAgICAg
c2VsZi52MSA9IHYxCisgICAgICAgIHNlbGYudjIgPSB2MgorICAgIH0KKworICAgIGZ1bmMgdG9T
dHJpbmcoKSAtPiBTdHJpbmcKKyAgICB7CisgICAgICAgIHJldHVybiAiV29ya2VyVGFzayIKKyAg
ICB9CisKKyAgICBmdW5jIHJ1bihfIHBhY2tldDogSlNWYWx1ZSkgLT4gTlNPYmplY3QKKyAgICB7
CisgICAgICAgIGlmIHBhY2tldC5pc051bGwgfHwgcGFja2V0LmlzVW5kZWZpbmVkIHsKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5pbnZva2VNZXRob2QoInN1c3BlbmRDdXJyZW50
Iiwgd2l0aEFyZ3VtZW50czogW10pCisgICAgICAgIH0KKworICAgICAgICBzZWxmLnYxID0gSURf
SEFORExFUl9BICsgSURfSEFORExFUl9CIC0gc2VsZi52MQorICAgICAgICBwYWNrZXQuc2V0VmFs
dWUoc2VsZi52MSwgZm9yUHJvcGVydHk6ICJpZCIpCisgICAgICAgIHBhY2tldC5zZXRWYWx1ZSgw
LCBmb3JQcm9wZXJ0eTogImExIikKKyAgICAgICAgZm9yIGkgaW4gMC4uLkRBVEFfU0laRSB7Cisg
ICAgICAgICAgICBzZWxmLnYyICs9IDEKKyAgICAgICAgICAgIGlmIHNlbGYudjIgPiAyNiB7Cisg
ICAgICAgICAgICAgICAgc2VsZi52MiA9IDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBh
Y2tldC5mb3JQcm9wZXJ0eSgiYTIiKS5zZXRWYWx1ZShzZWxmLnYyLCBmb3JQcm9wZXJ0eTogaSkK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIuaW52b2tlTWV0aG9kKCJx
dWV1ZSIsIHdpdGhBcmd1bWVudHM6IFtwYWNrZXRdKQorICAgIH0KK30KKworZ3VhcmQgbGV0IGNv
bnRleHQgPSBKU0NvbnRleHQoKSBlbHNlIHsKKyAgICBleGl0KDEpCit9CisKK2NvbnRleHQuc2V0
T2JqZWN0KFdvcmtlclRhc2suc2VsZiwgZm9yS2V5ZWRTdWJzY3JpcHQ6ICJXb3JrZXJUYXNrIiBh
cyBOU1N0cmluZykKK2NvbnRleHQuZXhjZXB0aW9uSGFuZGxlciA9IHsgY29udGV4dCwgZXhjZXB0
aW9uIGluCisgICAgcHJpbnQoZXhjZXB0aW9uPy50b1N0cmluZygpIGFzIEFueSkKKyAgICBleGl0
KDEpCit9CisKK2xldCBzb3VyY2UgPSB0cnkgU3RyaW5nKGNvbnRlbnRzT2ZGaWxlOiAicmljaGFy
ZHMuanMiKQorbGV0IHJlc3VsdCA9IGNvbnRleHQuZXZhbHVhdGVTY3JpcHQoc291cmNlKQorCits
ZXQgaXRlcmF0aW9ucyA9IDUwCitsZXQgc3RhcnQgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKQorZm9y
IF8gaW4gMS4uLml0ZXJhdGlvbnMgeworICAgIGNvbnRleHQub2JqZWN0Rm9yS2V5ZWRTdWJzY3Jp
cHQoInJ1blJpY2hhcmRzIikuY2FsbCh3aXRoQXJndW1lbnRzOiBbXSkKK30KK2xldCBlbmQgPSBD
QUN1cnJlbnRNZWRpYVRpbWUoKQorcHJpbnQoSW50KChlbmQtc3RhcnQpICogMTAwMCkpCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29t
ZVN3aWZ0L1JpY2hhcmRzU29tZVN3aWZ0L3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC9y
aWNoYXJkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTU3M2Q5YWY0NDBmZGEzYzllNmE2NmE5ZTcxYTVkOGYz
OWQzZjg0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9VcGNv
bWluZ0FQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC9yaWNoYXJkcy5qcwpA
QCAtMCwwICsxLDQ5NyBAQAorLy8gQ29weXJpZ2h0IDIwMDYtMjAwOCB0aGUgVjggcHJvamVjdCBh
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8g
VGhpcyBpcyBhIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJpY2hhcmRzCisvLyBi
ZW5jaG1hcmsgZnJvbToKKy8vCisvLyAgICBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bXIxMC9C
ZW5jaC5odG1sCisvLworLy8gVGhlIGJlbmNobWFyayB3YXMgb3JpZ2luYWxseSBpbXBsZW1lbnRl
ZCBpbiBCQ1BMIGJ5CisvLyBNYXJ0aW4gUmljaGFyZHMuCisKKworLyoqCisgKiBUaGUgUmljaGFy
ZHMgYmVuY2htYXJrIHNpbXVsYXRlcyB0aGUgdGFzayBkaXNwYXRjaGVyIG9mIGFuCisgKiBvcGVy
YXRpbmcgc3lzdGVtLgorICoqLworZnVuY3Rpb24gcnVuUmljaGFyZHMoKSB7CisgIHZhciBzY2hl
ZHVsZXIgPSBuZXcgU2NoZWR1bGVyKCk7CisgIHNjaGVkdWxlci5hZGRJZGxlVGFzayhJRF9JRExF
LCAwLCBudWxsLCBDT1VOVCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9X
T1JLRVIsIEtJTkRfV09SSyk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX1dPUktF
UiwgS0lORF9XT1JLKTsKKyAgc2NoZWR1bGVyLmFkZFdvcmtlclRhc2soSURfV09SS0VSLCAxMDAw
LCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9BLCBLSU5E
X0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5E
X0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5E
X0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0EsIDIwMDAs
IHF1ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0IsIEtJTkRf
REVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRf
REVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRf
REVWSUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQiwgMzAwMCwg
cXVldWUpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9BLCA0MDAwLCBu
dWxsKTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQiwgNTAwMCwgbnVs
bCk7CisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYgKHNjaGVkdWxlci5xdWV1ZUNv
dW50ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8CisgICAgICBzY2hlZHVsZXIuaG9sZENvdW50
ICE9IEVYUEVDVEVEX0hPTERfQ09VTlQpIHsKKyAgICB2YXIgbXNnID0KKyAgICAgICAgIkVycm9y
IGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAiICsgc2NoZWR1bGVyLnF1ZXVlQ291bnQg
KworICAgICAgICAiLCBob2xkQ291bnQgPSAiICsgc2NoZWR1bGVyLmhvbGRDb3VudCArICIuIjsK
KyAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKKyAgfQorfQorCit2YXIgQ09VTlQgPSAxMDAwOwor
CisvKioKKyAqIFRoZXNlIHR3byBjb25zdGFudHMgc3BlY2lmeSBob3cgbWFueSB0aW1lcyBhIHBh
Y2tldCBpcyBxdWV1ZWQgYW5kCisgKiBob3cgbWFueSB0aW1lcyBhIHRhc2sgaXMgcHV0IG9uIGhv
bGQgaW4gYSBjb3JyZWN0IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRoZXkgZG9uJ3QgaGF2ZSBhbnkg
bWVhbmluZyBhIHN1Y2ggYnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBvZiBhCisgKiBjb3JyZWN0IHJ1
biBzbyBpZiB0aGUgYWN0dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQgaXMgZGlmZmVyZW50IGZyb20K
KyAqIHRoZSBleHBlY3RlZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlv
bi4KKyAqKi8KK3ZhciBFWFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIzMjI7Cit2YXIgRVhQRUNURURf
SE9MRF9DT1VOVCA9IDkyODsKKworCisvKioKKyAqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRv
IHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisgKiBwcmlv
cml0aWVzLiAgU2NoZWR1bGluZyBpcyBkb25lIGJ5IG1haW50YWluaW5nIGEgbGlzdCBvZiB0YXNr
IGNvbnRyb2wgYmxvY2tzCisgKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRhdGEgcXVldWUg
dGhleSBhcmUgcHJvY2Vzc2luZy4KKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBTY2hl
ZHVsZXIoKSB7CisgIHRoaXMucXVldWVDb3VudCA9IDA7CisgIHRoaXMuaG9sZENvdW50ID0gMDsK
KyAgdGhpcy5ibG9ja3MgPSBuZXcgQXJyYXkoTlVNQkVSX09GX0lEUyk7CisgIHRoaXMubGlzdCA9
IG51bGw7CisgIHRoaXMuY3VycmVudFRjYiA9IG51bGw7CisgIHRoaXMuY3VycmVudElkID0gbnVs
bDsKK30KKwordmFyIElEX0lETEUgICAgICAgPSAwOwordmFyIElEX1dPUktFUiAgICAgPSAxOwor
dmFyIElEX0hBTkRMRVJfQSAgPSAyOwordmFyIElEX0hBTkRMRVJfQiAgPSAzOwordmFyIElEX0RF
VklDRV9BICAgPSA0OwordmFyIElEX0RFVklDRV9CICAgPSA1OwordmFyIE5VTUJFUl9PRl9JRFMg
PSA2OworCit2YXIgS0lORF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lORF9XT1JLICAgICA9IDE7CisK
Ky8qKgorICogQWRkIGFuIGlkbGUgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7
aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0
eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVl
IG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gY291
bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUgdGFzaworICovCitTY2hlZHVs
ZXIucHJvdG90eXBlLmFkZElkbGVUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUs
IGNvdW50KSB7CisgIHRoaXMuYWRkUnVubmluZ1Rhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3
IElkbGVUYXNrKHRoaXMsIDEsIGNvdW50KSk7Cit9OworCisvKioKKyAqIEFkZCBhIHdvcmsgdGFz
ayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2Yg
dGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5Cisg
KiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2Vk
IGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayA9IGZ1
bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3Jp
dHksIHF1ZXVlLCBuZXcgV29ya2VyVGFzayh0aGlzLCBJRF9IQU5ETEVSX0EsIDApKTsKK307CisK
Ky8qKgorICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFt
IHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9y
aXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVl
dWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnBy
b3RvdHlwZS5hZGRIYW5kbGVyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7
CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSGFuZGxlclRhc2sodGhp
cykpOworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIu
CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0g
e2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1
ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitT
Y2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5
LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IERldmlj
ZVRhc2sodGhpcykpCit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgYW5kIG1h
cmsgaXQgYXMgcnVubmluZy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhl
IHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBA
cGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5
IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisgKi8KK1Nj
aGVkdWxlci5wcm90b3R5cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5
LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFz
ayk7CisgIHRoaXMuY3VycmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9OworCisvKioKKyAqIEFkZCB0
aGUgc3BlY2lmaWVkIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQg
dGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRh
c2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3Jr
IHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0
YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFRhc2sgPSBmdW5jdGlvbiAo
aWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmN1cnJlbnRUY2IgPSBuZXcgVGFz
a0NvbnRyb2xCbG9jayh0aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0
aGlzLmxpc3QgPSB0aGlzLmN1cnJlbnRUY2I7CisgIHRoaXMuYmxvY2tzW2lkXSA9IHRoaXMuY3Vy
cmVudFRjYjsKK307CisKKy8qKgorICogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBieSB0aGlz
IHNjaGVkdWxlci4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5saXN0OworICB3aGlsZSAodGhpcy5jdXJy
ZW50VGNiICE9IG51bGwpIHsKKyAgICBpZiAodGhpcy5jdXJyZW50VGNiLmlzSGVsZE9yU3VzcGVu
ZGVkKCkpIHsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5saW5rOwor
ICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmN1cnJlbnRJZCA9IHRoaXMuY3VycmVudFRjYi5pZDsK
KyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5ydW4oKTsKKyAgICB9Cisg
IH0KK307CisKKy8qKgorICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tl
ZCBhbmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAqIEBwYXJhbSB7aW50fSBpZCB0
aGUgaWQgb2YgdGhlIHRhc2sgdG8gc3VzcGVuZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnJl
bGVhc2UgPSBmdW5jdGlvbiAoaWQpIHsKKyAgdmFyIHRjYiA9IHRoaXMuYmxvY2tzW2lkXTsKKyAg
aWYgKHRjYiA9PSBudWxsKSByZXR1cm4gdGNiOworICB0Y2IubWFya0FzTm90SGVsZCgpOworICBp
ZiAodGNiLnByaW9yaXR5ID4gdGhpcy5jdXJyZW50VGNiLnByaW9yaXR5KSB7CisgICAgcmV0dXJu
IHRjYjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworICB9Cit9Owor
CisvKioKKyAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0
aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRhc2sg
d2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNpdGx5CisgKiByZWxl
YXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAqLworU2NoZWR1bGVyLnBy
b3RvdHlwZS5ob2xkQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5ob2xkQ291bnQrKzsK
KyAgdGhpcy5jdXJyZW50VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRj
Yi5saW5rOworfTsKKworLyoqCisgKiBTdXNwZW5kIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRh
c2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIElm
IG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUg
cnVubmFibGUuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQgPSBmdW5j
dGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNTdXNwZW5kZWQoKTsKKyAgcmV0dXJu
IHRoaXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0
IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyAqIGFzc29jaWF0
ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1
cnJlbnRseQorICogc3VzcGVuZGVkLgorICogQHBhcmFtIHtQYWNrZXR9IHBhY2tldCB0aGUgcGFj
a2V0IHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlID0gZnVuY3Rpb24gKHBh
Y2tldCkgeworICB2YXIgdCA9IHRoaXMuYmxvY2tzW3BhY2tldC5pZF07CisgIGlmICh0ID09IG51
bGwpIHJldHVybiB0OworICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAgcGFja2V0LmxpbmsgPSBudWxs
OworICBwYWNrZXQuaWQgPSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0dXJuIHQuY2hlY2tQcmlvcml0
eUFkZCh0aGlzLmN1cnJlbnRUY2IsIHBhY2tldCk7Cit9OworCisvKioKKyAqIEEgdGFzayBjb250
cm9sIGJsb2NrIG1hbmFnZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUgb2Ygd29yayBwYWNrYWdlcyBh
c3NvY2lhdGVkCisgKiB3aXRoIGl0LgorICogQHBhcmFtIHtUYXNrQ29udHJvbEJsb2NrfSBsaW5r
IHRoZSBwcmVjZWRpbmcgYmxvY2sgaW4gdGhlIGxpbmtlZCBibG9jayBsaXN0CisgKiBAcGFyYW0g
e2ludH0gaWQgdGhlIGlkIG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0
aGUgcHJpb3JpdHkgb2YgdGhpcyBibG9jaworICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBx
dWV1ZSBvZiBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7
VGFza30gdGFzayB0aGUgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFRhc2tD
b250cm9sQmxvY2sobGluaywgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmxp
bmsgPSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRoaXMucHJpb3JpdHkgPSBwcmlvcml0eTsK
KyAgdGhpcy5xdWV1ZSA9IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0YXNrOworICBpZiAocXVldWUg
PT0gbnVsbCkgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5ERUQ7CisgIH0gZWxzZSB7
CisgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRTsKKyAgfQorfQorCisv
KioKKyAqIFRoZSB0YXNrIGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuCisg
Ki8KK3ZhciBTVEFURV9SVU5OSU5HID0gMDsKKworLyoqCisgKiBUaGUgdGFzayBoYXMgcGFja2V0
cyBsZWZ0IHRvIHByb2Nlc3MuCisgKi8KK3ZhciBTVEFURV9SVU5OQUJMRSA9IDE7CisKKy8qKgor
ICogVGhlIHRhc2sgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIHRhc2sgaXMgbm90IGJs
b2NrZWQgYXMgc3VjaCBhbmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkgdGhlIHNjaGVkdWxlci4KKyAq
LwordmFyIFNUQVRFX1NVU1BFTkRFRCA9IDI7CisKKy8qKgorICogVGhlIHRhc2sgaXMgYmxvY2tl
ZCBhbmQgY2Fubm90IGJlIHJ1biB1bnRpbCBpdCBpcyBleHBsaWNpdGx5IHJlbGVhc2VkLgorICov
Cit2YXIgU1RBVEVfSEVMRCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUgPSBT
VEFURV9TVVNQRU5ERUQgfCBTVEFURV9SVU5OQUJMRTsKK3ZhciBTVEFURV9OT1RfSEVMRCA9IH5T
VEFURV9IRUxEOworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5zZXRSdW5uaW5nID0gZnVu
Y3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKK307CisKK1Rhc2tDb250
cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMu
c3RhdGUgPSB0aGlzLnN0YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJs
b2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0g
dGhpcy5zdGF0ZSB8IFNUQVRFX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5pc0hlbGRPclN1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLnN0YXRl
ICYgU1RBVEVfSEVMRCkgIT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5ERUQpOwor
fTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1NVU1BFTkRFRDsKK307
CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlID0gZnVuY3Rpb24g
KCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1JVTk5BQkxFOworfTsKKwor
LyoqCisgKiBSdW5zIHRoaXMgdGFzaywgaWYgaXQgaXMgcmVhZHkgdG8gYmUgcnVuLCBhbmQgcmV0
dXJucyB0aGUgbmV4dCB0YXNrIHRvIHJ1bi4KKyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5
cGUucnVuID0gZnVuY3Rpb24gKCkgeworICB2YXIgcGFja2V0OworICBpZiAodGhpcy5zdGF0ZSA9
PSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUpIHsKKyAgICBwYWNrZXQgPSB0aGlzLnF1ZXVlOwor
ICAgIHRoaXMucXVldWUgPSBwYWNrZXQubGluazsKKyAgICBpZiAodGhpcy5xdWV1ZSA9PSBudWxs
KSB7CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKKyAgICB9IGVsc2UgeworICAg
ICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBw
YWNrZXQgPSBudWxsOworICB9CisgIHJldHVybiB0aGlzLnRhc2sucnVuKHBhY2tldCk7Cit9Owor
CisvKioKKyAqIEFkZHMgYSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0IG9mIHRoaXMgYmxvY2sncyB0
YXNrLCBtYXJrcyB0aGlzIGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNlc3NhcnksIGFuZCByZXR1cm5z
IHRoZSBuZXh0IHJ1bm5hYmxlIG9iamVjdCB0byBydW4gKHRoZSBvbmUKKyAqIHdpdGggdGhlIGhp
Z2hlc3QgcHJpb3JpdHkpLgorICovCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5jaGVja1By
aW9yaXR5QWRkID0gZnVuY3Rpb24gKHRhc2ssIHBhY2tldCkgeworICBpZiAodGhpcy5xdWV1ZSA9
PSBudWxsKSB7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAgICB0aGlzLm1hcmtBc1J1bm5h
YmxlKCk7CisgICAgaWYgKHRoaXMucHJpb3JpdHkgPiB0YXNrLnByaW9yaXR5KSByZXR1cm4gdGhp
czsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0LmFkZFRvKHRoaXMucXVldWUp
OworICB9CisgIHJldHVybiB0YXNrOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUu
dG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAidGNiIHsgIiArIHRoaXMudGFzayAr
ICJAIiArIHRoaXMuc3RhdGUgKyAiIH0iOworfTsKKworLyoqCisgKiBBbiBpZGxlIHRhc2sgZG9l
c24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJldHdlZW4gdGhlIHR3
bworICogZGV2aWNlIHRhc2tzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUg
c2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJhbSB7aW50fSB2MSBhIHNl
ZWQgdmFsdWUgdGhhdCBjb250cm9scyBob3cgdGhlIGRldmljZSB0YXNrcyBhcmUgc2NoZWR1bGVk
CisgKiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIHRhc2sgc2hv
dWxkIGJlIHNjaGVkdWxlZAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIElkbGVUYXNr
KHNjaGVkdWxlciwgdjEsIGNvdW50KSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOwor
ICB0aGlzLnYxID0gdjE7CisgIHRoaXMuY291bnQgPSBjb3VudDsKK30KKworSWRsZVRhc2sucHJv
dG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhpcy5jb3VudC0tOworICBpZiAo
dGhpcy5jb3VudCA9PSAwKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKTsKKyAg
aWYgKCh0aGlzLnYxICYgMSkgPT0gMCkgeworICAgIHRoaXMudjEgPSB0aGlzLnYxID4+IDE7Cisg
ICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0EpOworICB9IGVsc2Ug
eworICAgIHRoaXMudjEgPSAodGhpcy52MSA+PiAxKSBeIDB4RDAwODsKKyAgICByZXR1cm4gdGhp
cy5zY2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQik7CisgIH0KK307CisKK0lkbGVUYXNrLnBy
b3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJJZGxlVGFzayIKK307
CisKKy8qKgorICogQSB0YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxmIGFmdGVyIGVhY2ggdGltZSBp
dCBoYXMgYmVlbiBydW4gdG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJvbSBhbiBl
eHRlcm5hbCBkZXZpY2UuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hl
ZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0
aW9uIERldmljZVRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVy
OworICB0aGlzLnYxID0gbnVsbDsKK30KKworRGV2aWNlVGFzay5wcm90b3R5cGUucnVuID0gZnVu
Y3Rpb24gKHBhY2tldCkgeworICBpZiAocGFja2V0ID09IG51bGwpIHsKKyAgICBpZiAodGhpcy52
MSA9PSBudWxsKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKKyAgICB2
YXIgdiA9IHRoaXMudjE7CisgICAgdGhpcy52MSA9IG51bGw7CisgICAgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLnF1ZXVlKHYpOworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSBwYWNrZXQ7CisgICAg
cmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIH0KK307CisKK0RldmljZVRh
c2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkRldmljZVRh
c2siOworfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMg
YW5kIHRoZW4gc3VzcGVuZHMgaXRzZWxmLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxl
ciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCitmdW5jdGlvbiBIYW5kbGVyVGFzayhzY2hlZHVsZXIpIHsKKyAgdGhpcy5zY2hlZHVsZXIg
PSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSBudWxsOworICB0aGlzLnYyID0gbnVsbDsKK30KKwor
SGFuZGxlclRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBh
Y2tldCAhPSBudWxsKSB7CisgICAgaWYgKHBhY2tldC5raW5kID09IEtJTkRfV09SSykgeworICAg
ICAgdGhpcy52MSA9IHBhY2tldC5hZGRUbyh0aGlzLnYxKTsKKyAgICB9IGVsc2UgeworICAgICAg
dGhpcy52MiA9IHBhY2tldC5hZGRUbyh0aGlzLnYyKTsKKyAgICB9CisgIH0KKyAgaWYgKHRoaXMu
djEgIT0gbnVsbCkgeworICAgIHZhciBjb3VudCA9IHRoaXMudjEuYTE7CisgICAgdmFyIHY7Cisg
ICAgaWYgKGNvdW50IDwgREFUQV9TSVpFKSB7CisgICAgICBpZiAodGhpcy52MiAhPSBudWxsKSB7
CisgICAgICAgIHYgPSB0aGlzLnYyOworICAgICAgICB0aGlzLnYyID0gdGhpcy52Mi5saW5rOwor
ICAgICAgICB2LmExID0gdGhpcy52MS5hMltjb3VudF07CisgICAgICAgIHRoaXMudjEuYTEgPSBj
b3VudCArIDE7CisgICAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgdiA9IHRoaXMudjE7CisgICAgICB0aGlzLnYxID0gdGhp
cy52MS5saW5rOworICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICAgIH0K
KyAgfQorICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKK307CisKK0hh
bmRsZXJUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJI
YW5kbGVyVGFzayI7Cit9OworCisvKiAtLS0gKgorICogUCBhIGMgayBlIHQKKyAqIC0tLSAqLwor
Cit2YXIgREFUQV9TSVpFID0gNDsKKworLyoqCisgKiBBIHNpbXBsZSBwYWNrYWdlIG9mIGRhdGEg
dGhhdCBpcyBtYW5pcHVsYXRlZCBieSB0aGUgdGFza3MuICBUaGUgZXhhY3QgbGF5b3V0CisgKiBv
ZiB0aGUgcGF5bG9hZCBkYXRhIGNhcnJpZWQgYnkgYSBwYWNrZXQgaXMgbm90IGltcG9ydGFpbnQs
IGFuZCBuZWl0aGVyIGlzIHRoZQorICogbmF0dXJlIG9mIHRoZSB3b3JrIHBlcmZvcm1lZCBvbiBw
YWNrZXRzIGJ5IHRoZSB0YXNrcy4KKyAqCisgKiBCZXNpZGVzIGNhcnJ5aW5nIGRhdGEsIHBhY2tl
dHMgZm9ybSBsaW5rZWQgbGlzdHMgYW5kIGFyZSBoZW5jZSB1c2VkIGJvdGggYXMKKyAqIGRhdGEg
YW5kIHdvcmtsaXN0cy4KKyAqIEBwYXJhbSB7UGFja2V0fSBsaW5rIHRoZSB0YWlsIG9mIHRoZSBs
aW5rZWQgbGlzdCBvZiBwYWNrZXRzCisgKiBAcGFyYW0ge2ludH0gaWQgYW4gSUQgZm9yIHRoaXMg
cGFja2V0CisgKiBAcGFyYW0ge2ludH0ga2luZCB0aGUgdHlwZSBvZiB0aGlzIHBhY2tldAorICog
QGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFBhY2tldChsaW5rLCBpZCwga2luZCkgeworICB0
aGlzLmxpbmsgPSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRoaXMua2luZCA9IGtpbmQ7Cisg
IHRoaXMuYTEgPSAwOworICB0aGlzLmEyID0gbmV3IEFycmF5KERBVEFfU0laRSk7Cit9CisKKy8q
KgorICogQWRkIHRoaXMgcGFja2V0IHRvIHRoZSBlbmQgb2YgYSB3b3JrbGlzdCwgYW5kIHJldHVy
biB0aGUgd29ya2xpc3QuCisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHdvcmtsaXN0IHRv
IGFkZCB0aGlzIHBhY2tldCB0bworICovCitQYWNrZXQucHJvdG90eXBlLmFkZFRvID0gZnVuY3Rp
b24gKHF1ZXVlKSB7CisgIHRoaXMubGluayA9IG51bGw7CisgIGlmIChxdWV1ZSA9PSBudWxsKSBy
ZXR1cm4gdGhpczsKKyAgdmFyIHBlZWssIG5leHQgPSBxdWV1ZTsKKyAgd2hpbGUgKChwZWVrID0g
bmV4dC5saW5rKSAhPSBudWxsKQorICAgIG5leHQgPSBwZWVrOworICBuZXh0LmxpbmsgPSB0aGlz
OworICByZXR1cm4gcXVldWU7Cit9OworCitQYWNrZXQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gIlBhY2tldCI7Cit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9hcGktYmVuY2ggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL2Fw
aS1iZW5jaAppbmRleCBmYTU2OGRlODNmM2JhYmExYTc1N2RmMWZhY2IyYjc0NzRhODgwNzNhLi5h
OGIxODcwMTE2MTk3YjA3ZmRkZDJmNDc0NjMxZWUwY2UyM2EwYjdhIDEwMDc1NQotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL2FwaS1iZW5jaAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL2FwaS1iZW5jaApAQCAtNywxMCArNywxMCBAQAogIyBhcmUgbWV0OgogIwogIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4gCisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogIwogIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQogIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECkBAIC0zMCwxMiArMzAsMTUgQEAgcHVzaGQg
IiQoZGlybmFtZSAiJDAiKSIgJj4gL2Rldi9udWxsCiBBUElfQkVOQ0hfRElSPSRQV0QKIHBvcGQg
Jj4gL2Rldi9udWxsCiAKK0NVUlJFTlRfQkVOQ0hNQVJLX0lEPTAKIEJFTkNITUFSS1M9KCkKIEJV
SUxEX0RJUkVDVE9SSUVTPSgpCi1SSUNIQVJEU19KUz0tMQotUklDSEFSRFNfU1dJRlQ9LTEKK1JF
RkVSRU5DRVM9KCJYIikKK0NVUlJFTlRfQVBJPSgpCitVUENPTUlOR19BUEk9KCkKIAogc2hvdWxk
QnVpbGQ9dHJ1ZQorcnVuUmVmZXJlbmNlcz10cnVlCiB2ZXJib3NlPWZhbHNlCiBpdGVyYXRpb25z
PTUKIApAQCAtNDcsNyArNTAsNyBAQCBsb2coKSB7CiAKIHByaW50VXNhZ2UoKSB7CiAgICAgY2F0
IDw8RU9GCi11c2FnZTogJEFQSV9CRU5DSF9FWEVDVVRBQkxFIFstaHwtLWhlbHBdIFstLW5vLWJ1
aWxkXSBbLS12ZXJib3NlXSBbLS1pdGVyYXRpb25zIDxuPSRpdGVyYXRpb25zPl0gPGJ1aWxkX2Rp
cmVjdG9yeTE+IFs8YnVpbGRfZGlyZWN0b3J5Mj4gLi4uXQordXNhZ2U6ICRBUElfQkVOQ0hfRVhF
Q1VUQUJMRSBbLWh8LS1oZWxwXSBbLS1uby1idWlsZF0gWy0tbm8tcmVmZXJlbmNlKHMpXSBbLXZ8
LS12ZXJib3NlXSBbLS1pdGVyYXRpb25zIDxuPSRpdGVyYXRpb25zPl0gPGJ1aWxkX2RpcmVjdG9y
eTE+IFs8YnVpbGRfZGlyZWN0b3J5Mj4gLi4uXQogRU9GCiAgICAgZXhpdCAwCiB9CkBAIC02MSw3
ICs2NCwxMCBAQCBjb2xsZWN0RmxhZ3MoKSB7CiAgICAgICAgICAgICAtLW5vLWJ1aWxkKQogICAg
ICAgICAgICAgICAgIHNob3VsZEJ1aWxkPWZhbHNlCiAgICAgICAgICAgICAgICAgOzsKLSAgICAg
ICAgICAgIC0tdmVyYm9zZSkKKyAgICAgICAgICAgIC0tbm8tcmVmZXJlbmNlfC0tbm8tcmVmZXJl
bmNlcykKKyAgICAgICAgICAgICAgICBydW5SZWZlcmVuY2VzPWZhbHNlCisgICAgICAgICAgICAg
ICAgOzsKKyAgICAgICAgICAgIC12fC0tdmVyYm9zZSkKICAgICAgICAgICAgICAgICB2ZXJib3Nl
PXRydWUKICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgLS1pdGVyYXRpb25zKQpAQCAt
OTYsMjYgKzEwMiwyOCBAQCBjb2xsZWN0RmxhZ3MoKSB7CiAgIGRvbmUKIH0KIAotY29sbGVjdEJl
bmNobWFya3MoKSB7Ci0gICAgbG9jYWwgYmVuY2htYXJrRGlycwotICAgIGJlbmNobWFya0RpcnM9
KCIkQVBJX0JFTkNIX0RJUiIvKi8pCi0gICAgZm9yIGJlbmNobWFya0lEIGluICIkeyFiZW5jaG1h
cmtEaXJzW0BdfSI7IGRvCi0gICAgICAgIGxvY2FsIGJlbmNobWFyawotICAgICAgICBiZW5jaG1h
cms9JHtiZW5jaG1hcmtEaXJzWyRiZW5jaG1hcmtJRF19Citjb2xsZWN0QmVuY2htYXJrRGlyKCkg
eworICAgIGxvY2FsIGJlbmNobWFya1Zhcj0kMQorICAgIGxvY2FsIGJlbmNobWFya0Rpcj0kMgor
ICAgIGJlbmNobWFya3M9KCIkQVBJX0JFTkNIX0RJUiIvIiRiZW5jaG1hcmtEaXIiLyopCisgICAg
Zm9yIGJlbmNobWFyayBpbiAiJHtiZW5jaG1hcmtzW0BdfSI7IGRvCisgICAgICAgIGxvY2FsIGJl
bmNobWFya0lEPSRDVVJSRU5UX0JFTkNITUFSS19JRAorICAgICAgICBDVVJSRU5UX0JFTkNITUFS
S19JRD0kKChDVVJSRU5UX0JFTkNITUFSS19JRCsxKSkKICAgICAgICAgcHVzaGQgIiRiZW5jaG1h
cmsiICY+IC9kZXYvbnVsbAogICAgICAgICBCRU5DSE1BUktTWyRiZW5jaG1hcmtJRF09JFBXRAot
ICAgICAgICBjYXNlICIkKGJhc2VuYW1lICIkUFdEIikiIGluCi0gICAgICAgICAgICBSaWNoYXJk
c0pTKQotICAgICAgICAgICAgICAgIFJJQ0hBUkRTX0pTPSRiZW5jaG1hcmtJRAotICAgICAgICAg
ICAgICAgIDs7Ci0gICAgICAgICAgICBSaWNoYXJkc1N3aWZ0KQotICAgICAgICAgICAgICAgIFJJ
Q0hBUkRTX1NXSUZUPSRiZW5jaG1hcmtJRAotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgIGVz
YWMKKyAgICAgICAgZXZhbCAiJHtiZW5jaG1hcmtWYXJ9W1wkYmVuY2htYXJrSURdPSRiZW5jaG1h
cmtJRCIKICAgICAgICAgcG9wZCAmPiAvZGV2L251bGwKICAgICBkb25lCiB9CiAKK2NvbGxlY3RC
ZW5jaG1hcmtzKCkgeworICAgIGlmIFsgIiRydW5SZWZlcmVuY2VzIiA9PSB0cnVlIF07IHRoZW4K
KyAgICAgICAgY29sbGVjdEJlbmNobWFya0RpciAiUkVGRVJFTkNFUyIgUmVmZXJlbmNlcworICAg
IGZpCisgICAgY29sbGVjdEJlbmNobWFya0RpciAiQ1VSUkVOVF9BUEkiIEN1cnJlbnRBUEkKKyAg
ICBjb2xsZWN0QmVuY2htYXJrRGlyICJVUENPTUlOR19BUEkiIFVwY29taW5nQVBJCit9CisKIGZv
ckVhY2hCZW5jaG1hcmsoKSB7CiAgICAgbG9jYWwgZnVuY3RvcgogICAgIGZ1bmN0b3I9IiQxIgpA
QCAtMjAwLDM0ICsyMDgsNDAgQEAgcHJpbnRCZW5jaG1hcmsoKSB7CiB9CiAKIHByaW50UmVzdWx0
cygpIHsKLSAgICBsb2NhbCBidWlsZERpcmVjdG9yeQotICAgIGJ1aWxkRGlyZWN0b3J5PSQxCisg
ICAgbG9jYWwgYnVpbGREaXJlY3Rvcnk9JDEKIAogICAgIGVjaG8gIlJlc3VsdHMgZm9yICRidWls
ZERpcmVjdG9yeSAoJGl0ZXJhdGlvbnMgaXRlcmF0aW9ucykiCiAgICAgZWNobyAiPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0iCiAKLSAgICBlY2hvICIiCi0gICAgZWNobyAiUmVmZXJlbmNlczoiCi0g
ICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSAgICBw
cmludEJlbmNobWFyayAiJFJJQ0hBUkRTX0pTIgotICAgIHByaW50QmVuY2htYXJrICIkUklDSEFS
RFNfU1dJRlQiCi0KLSAgICBlY2hvICIiCi0gICAgZWNobyAiVGVzdHM6IgotICAgIGVjaG8gIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgaWYgWyAiJHJ1blJl
ZmVyZW5jZXMiID09IHRydWUgXTsgdGhlbgorICAgICAgICBlY2hvICIiCisgICAgICAgIGVjaG8g
IlJlZmVyZW5jZXM6IgorICAgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIgorICAgICAgICBmb3IgYmVuY2htYXJrSUQgaW4gIiR7UkVGRVJFTkNFU1tA
XX0iOyBkbworICAgICAgICAgICAgcHJpbnRCZW5jaG1hcmsgIiRiZW5jaG1hcmtJRCIKKyAgICAg
ICAgZG9uZQorICAgIGZpCiAKICAgICBsb2NhbCBzY29yZSBjb3VudAogICAgIHNjb3JlPTEKICAg
ICBjb3VudD0wCi0gICAgZm9yIGJlbmNobWFya0lEIGluICIkeyFCRU5DSE1BUktTW0BdfSI7IGRv
Ci0gICAgICAgIGlmIFsgIiRiZW5jaG1hcmtJRCIgLWVxICIkUklDSEFSRFNfSlMiIF0gfHwgWyAi
JGJlbmNobWFya0lEIiAtZXEgIiRSSUNIQVJEU19TV0lGVCIgXTsgdGhlbgotICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgZmkKLSAgICAgICAgYXZnPSQoY29tcHV0ZUF2ZXJhZ2UgIiRiZW5j
aG1hcmtJRCIpCi0gICAgICAgIHByaW50QXZlcmFnZSAiJGJlbmNobWFya0lEIiAiJGF2ZyIKLSAg
ICAgICAgY291bnQ9JCgoY291bnQgKyAxKSkKLSAgICAgICAgc2NvcmU9JCgoc2NvcmUgKiBhdmcp
KQotICAgIGRvbmUKKyAgICAKKyAgICBwcmludENhdGVnb3J5KCkgeworICAgICAgICBsb2NhbCBj
YXRlZ29yeT0kMQorCisgICAgICAgIGVjaG8gIiIKKyAgICAgICAgZWNobyAiJGNhdGVnb3J5OiIK
KyAgICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIK
KworICAgICAgICBmb3IgYmVuY2htYXJrSUQgaW4gJChldmFsICdlY2hvICR7JyIkY2F0ZWdvcnki
J1tAXX0nKTsgZG8KKyAgICAgICAgICAgIGF2Zz0kKGNvbXB1dGVBdmVyYWdlICIkYmVuY2htYXJr
SUQiKQorICAgICAgICAgICAgcHJpbnRBdmVyYWdlICIkYmVuY2htYXJrSUQiICIkYXZnIgorICAg
ICAgICAgICAgY291bnQ9JCgoY291bnQgKyAxKSkKKyAgICAgICAgICAgIHNjb3JlPSQoKHNjb3Jl
ICogYXZnKSkKKyAgICAgICAgZG9uZQorICAgIH0KKyAgICBwcmludENhdGVnb3J5ICJDVVJSRU5U
X0FQSSIKKyAgICBwcmludENhdGVnb3J5ICJVUENPTUlOR19BUEkiCiAgICAgc2NvcmU9JChlY2hv
ICIkc2NvcmUiICIkY291bnQiIHwgYXdrICd7IHByaW50KDUwMDAuMCAvICgkMS4wIF4gKDEuMCAv
ICQyKSkpIH0nKQogCiAgICAgZWNobyAiIgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9D
aGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBjOWY3ZjJhZDFiZWEz
OGI2MjM5MDA3ZTMwNmYwODBkYWYzOTI4MmYxLi41MDJhMDRiYWQ0YzlmM2QyZDNkYTBiMTY2OGY1
MTU5MmE0ZGJlMDlmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzMSBAQAorMjAyMC0xMS0y
MiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQyBh
bmQgT2JqQyB0ZXN0cyB0byBBUElCZW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGJlbmNobWFyayBub3cgY29uc2lzdHMgb2YgdHdvIGdyb3Vw
czogaW5pdGlhbGx5IHRoZXkgYXJlIGlkZW50aWNhbCwgYnV0IHRoZSBmaXJzdCBncm91cCB3aWxs
IG5vdAorICAgICAgICBiZSBjaGFuZ2VkIGdvaW5nIGZvcndhcmQgd2hpbGUgdGhlIHNlY29uZCBn
cm91cCB3aWxsIGJlIGZyZWUgdG8gYWRvcHQgbmV3IEFQSXMuCisgICAgICAgIFRoZSB0d28gb3Jp
Z2luYWwgdGVzdHMgKG9uZSBtb3N0bHkgSlMgYW5kIHRoZSBvdGhlciBtb3N0bHkgbmF0aXZlKSB3
ZXJlIGFsc28gc3BsaXQgaW50byB0aHJlZSB0ZXN0cyBlYWNoIChDLCBPYmpDIGFuZCBTd2lmdCku
CisKKyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJk
c01vc3RseUMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQ29waWVkIGZyb20gUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvai4KKyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hh
cmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVt
ZXMvUmljaGFyZHNNb3N0bHlDLnhjc2NoZW1lOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNzaGFyZWRk
YXRhL3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lLgorICAgICAgICAqIEFQSUJlbmNo
L0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlDL1JpY2hhcmRzTW9zdGx5Qy9yaWNoYXJkcy5jOiBB
ZGRlZC4KKyAgICAgICAgKHBrdCk6CisgICAgICAgICh0cmFjZSk6CisgICAgICAgIChzY2hlZHVs
ZSk6CisgICAgICAgICh3YWl0Xyk6CisgICAgICAgIChob2xkc2VsZik6CisgICAgICAgIChmaW5k
dGNiKToKKyAgICAgICAgKHJlbGVhc2UpOgorICAgICAgICAocXBrdCk6CisgICAgICAgIChpZGxl
Zm4pOgorICAgICAgICAodmFsdWVUb1Rhc2spOgorICAgICAgICAod2FpdFdyYXBwZXIpOgorICAg
ICAgICAocXBrdFdyYXBwZXIpOgorICAgICAgICAocmVhZEZpbGUpOgorICAgICAgICAod29ya2Zu
KToKKyAgICAgICAgKGhhbmRsZXJmbik6CisgICAgICAgIChkZXZmbik6CisgICAgICAgIChhcHBl
bmQpOgorICAgICAgICAoc2V0dXApOgorICAgICAgICAoZ2V0UXBrdGNvdW50KToKKyAgICAgICAg
KGdldEhvbGRjb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBBUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzTW9zdGx5Qy9SaWNoYXJkc01vc3RseUMvcmljaGFyZHMuanM6IENvcGll
ZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3
aWZ0L21haW4uc3dpZnQuCisgICAgICAgIChjcmVhdGVXb3JrZm4pOgorICAgICAgICAqIEFQSUJl
bmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qLgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0
bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjc2NoZW1lOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lLgorICAgICAgICAqIEFQSUJl
bmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9EZXZp
Y2UuaDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0
L1JpY2hhcmRzU3dpZnQvbWFpbi5zd2lmdC4KKyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJ
L1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlVGFzay5oOiBDb3Bp
ZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC9tYWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNN
b3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9EZXZpY2VUYXNrLm06IENvcGllZCBmcm9tIFBl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4u
c3dpZnQuCisgICAgICAgICgrW0RldmljZVRhc2sgY3JlYXRlV2l0aFNjaGVkdWxlcjpkZXZpY2U6
cHJpb3JpdHk6XSk6CisgICAgICAgICgtW0RldmljZVRhc2sgcnVuOl0pOgorICAgICAgICAqIEFQ
SUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9I
YW5kbGVyVGFzay5oOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL0N1
cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9IYW5kbGVyVGFz
ay5tOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0LgorICAgICAgICAoK1tI
YW5kbGVyVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVyOmRldmljZTpwcmlvcml0eTpxdWV1ZTpdKToK
KyAgICAgICAgKC1bSGFuZGxlclRhc2sgcnVuOl0pOgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJl
bnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9JZGxlVGFzay5oOiBD
b3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFy
ZHNTd2lmdC9tYWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFy
ZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9JZGxlVGFzay5tOiBDb3BpZWQgZnJvbSBQ
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWlu
LnN3aWZ0LgorICAgICAgICAoK1tJZGxlVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVyOnByaW9yaXR5
Ol0pOgorICAgICAgICAoLVtJZGxlVGFzayBydW46XSk6CisgICAgICAgICogQVBJQmVuY2gvQ3Vy
cmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1BhY2tldC5oOiBD
b3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFy
ZHNTd2lmdC9QYWNrZXQuc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNo
YXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1BhY2tldC5tOiBDb3BpZWQgZnJvbSBQ
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9JZGxl
VGFzay5zd2lmdC4KKyAgICAgICAgKCtbUGFja2V0IGNyZWF0ZTp3aXRoTGluazpdKToKKyAgICAg
ICAgKC1bUGFja2V0IGFkZFRvUXVldWU6XSk6CisgICAgICAgICgrW0RldmljZVBhY2tldCBjcmVh
dGU6d2l0aExpbms6XSk6CisgICAgICAgICgrW1dvcmtQYWNrZXQgY3JlYXRlV2l0aExpbms6XSk6
CisgICAgICAgICgrW1dvcmtQYWNrZXQgc2l6ZV0pOgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJl
bnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9TY2hlZHVsZXIuaDog
QWRkZWQuCisgICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMv
UmljaGFyZHNNb3N0bHlPYmpDL1NjaGVkdWxlci5tOiBBZGRlZC4KKyAgICAgICAgKC1bU2NoZWR1
bGVyIHNjaGVkdWxlXSk6CisgICAgICAgICgtW1NjaGVkdWxlciBhZGRUYXNrOl0pOgorICAgICAg
ICAoLVtTY2hlZHVsZXIgcmVsZWFzZURldmljZTpdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIGhv
bGRDdXJyZW50XSk6CisgICAgICAgICgtW1NjaGVkdWxlciB3YWl0Q3VycmVudF0pOgorICAgICAg
ICAoLVtTY2hlZHVsZXIgcXVldWU6XSk6CisgICAgICAgICgtW1NjaGVkdWxlciBoYW5kbGU6XSk6
CisgICAgICAgICgtW1NjaGVkdWxlciBfcXVldWVJbXBsOnBhY2tldDpdKToKKyAgICAgICAgKC1b
U2NoZWR1bGVyIF9maW5kOl0pOgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFy
ZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9UYXNrLmg6IENvcGllZCBmcm9tIFBlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3
aWZ0L0RldmljZVRhc2suc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNo
YXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1Rhc2subTogQWRkZWQuCisgICAgICAg
ICgrW1Rhc2sgY3JlYXRlV2l0aFNjaGVkdWxlcjpwcmlvcml0eTpxdWV1ZTpdKToKKyAgICAgICAg
KC1bVGFzayBydW46XSk6CisgICAgICAgICgtW1Rhc2sgcmVsZWFzZV9dKToKKyAgICAgICAgKC1b
VGFzayBob2xkXSk6CisgICAgICAgICgtW1Rhc2sgd2FpdF0pOgorICAgICAgICAoLVtUYXNrIHJl
c3VtZV0pOgorICAgICAgICAoLVtUYXNrIHRha2VQYWNrZXRdKToKKyAgICAgICAgKC1bVGFzayBj
aGVja1ByaW9yaXR5QWRkOnBhY2tldDpdKToKKyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJ
L1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvV29ya2VyVGFzay5oOiBDb3Bp
ZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC9tYWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNN
b3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9Xb3JrZXJUYXNrLm06IEFkZGVkLgorICAgICAg
ICAoK1tXb3JrZXJUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6cHJpb3JpdHk6cXVldWU6XSk6Cisg
ICAgICAgICgrW1dvcmtlclRhc2sgY29udGV4dF0pOgorICAgICAgICAoK1tXb3JrZXJUYXNrIGNv
bnN0cnVjdG9yXSk6CisgICAgICAgICgtW1dvcmtlclRhc2sgcnVuOl0pOgorICAgICAgICAqIEFQ
SUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9t
YWluLm06IEFkZGVkLgorICAgICAgICAocnVuUmljaGFyZHMpOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNN
b3N0bHlPYmpDL3JpY2hhcmRzLmpzOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJl
bmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9yaWNoYXJkcy5qcy4K
KyAgICAgICAgKHJldHVybi5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKiBBUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvcmljaGFyZHMubTog
Q29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hh
cmRzU3dpZnQvbWFpbi5zd2lmdC4KKyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hh
cmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLgorICAg
ICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01v
c3RseVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5
U3dpZnQueGNzY2hlbWU6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmlj
aGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUuCisgICAgICAgICogQVBJ
QmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQv
RGV2aWNlVGFzay5zd2lmdDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9S
aWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvRGV2aWNlVGFzay5zd2lmdC4K
KyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFy
ZHNNb3N0bHlTd2lmdC9IYW5kbGVyVGFzay5zd2lmdDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFu
ZGxlclRhc2suc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01v
c3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSWRsZVRhc2suc3dpZnQ6IENvcGllZCBmcm9t
IFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01v
c3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkv
UmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1BhY2tldC5zd2lmdDogQ29w
aWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvUGFja2V0LnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJl
bnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1NjaGVkdWxlci5z
d2lmdDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvU2NoZWR1bGVyLnN3aWZ0LgorICAgICAgICAqIEFQ
SUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0
L1Rhc2suc3dpZnQ6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFy
ZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQuCisgICAgICAgICog
QVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dp
ZnQvV29ya2VyVGFzay5zd2lmdDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvV29ya2VyVGFzay5zd2lm
dC4KKyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmlj
aGFyZHNNb3N0bHlTd2lmdC9tYWluLnN3aWZ0OiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9tYWluLnN3
aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9S
aWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLmpzOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRl
c3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9yaWNo
YXJkcy5qcy4KKyAgICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzTW9zdGx5U3dp
ZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9yaWNoYXJkcy5zd2lmdDogQ29waWVkIGZyb20gUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dp
ZnQvcmljaGFyZHMuc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJk
c1NvbWVDL1JpY2hhcmRzU29tZUMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQ29waWVkIGZy
b20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9z
dGx5SlMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvai4KKyAgICAgICAgKiBBUElCZW5jaC9DdXJy
ZW50QVBJL1JpY2hhcmRzU29tZUMvUmljaGFyZHNTb21lQy9tYWluLm06IEFkZGVkLgorICAgICAg
ICAoV29ya2VyVGFza19ydW4pOgorICAgICAgICAoV29ya2VyVGFza19jb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXb3JrZXJUYXNrX2dldFByb3BlcnR5KToKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lQy9SaWNoYXJkc1NvbWVDL3JpY2hh
cmRzLmpzOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9z
dGx5SlMvUmljaGFyZHNNb3N0bHlKUy9yaWNoYXJkcy5qcy4KKyAgICAgICAgKiBBUElCZW5jaC9D
dXJyZW50QVBJL1JpY2hhcmRzU29tZU9iakMvUmljaGFyZHNTb21lT2JqQy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLgor
ICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21lT2JqQy9SaWNoYXJkc1Nv
bWVPYmpDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU29tZU9iakMu
eGNzY2hlbWU6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNN
b3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L1JpY2hhcmRzTW9zdGx5SlMueGNzY2hlbWUuCisgICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQ
SS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMvbWFpbi5tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV29ya2VyVGFzayBpbml0V2l0aFNjaGVkdWxlcjp2MTp2MjpdKToKKyAgICAgICAgKC1b
V29ya2VyVGFzayB0b1N0cmluZ10pOgorICAgICAgICAoLVtXb3JrZXJUYXNrIHJ1bjpdKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIEFQSUJlbmNoL0N1cnJlbnRBUEkvUmljaGFyZHNTb21l
T2JqQy9SaWNoYXJkc1NvbWVPYmpDL3JpY2hhcmRzLmpzOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9yaWNoYXJk
cy5qcy4KKyAgICAgICAgKHJ1blJpY2hhcmRzKToKKyAgICAgICAgKFNjaGVkdWxlcik6CisgICAg
ICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrKToKKyAgICAgICAgKFNjaGVkdWxl
ci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBl
LmFkZEhhbmRsZXJUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2aWNl
VGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdUYXNrKToKKyAg
ICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIu
cHJvdG90eXBlLnNjaGVkdWxlKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUucmVsZWFz
ZSk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmhvbGRDdXJyZW50KToKKyAgICAgICAg
KFNjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQpOgorICAgICAgICAoU2NoZWR1bGVy
LnByb3RvdHlwZS5xdWV1ZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrKToKKyAgICAgICAg
KFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnNldFJ1bm5pbmcpOgorICAgICAgICAoVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCk6CisgICAgICAgIChUYXNrQ29udHJv
bEJsb2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2su
cHJvdG90eXBlLmlzSGVsZE9yU3VzcGVuZGVkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2su
cHJvdG90eXBlLm1hcmtBc1N1c3BlbmRlZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnBy
b3RvdHlwZS5tYXJrQXNSdW5uYWJsZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3Rv
dHlwZS5ydW4pOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlv
cml0eUFkZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS50b1N0cmluZyk6
CisgICAgICAgIChJZGxlVGFzayk6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5cGUucnVuKToK
KyAgICAgICAgKElkbGVUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChEZXZpY2VU
YXNrKToKKyAgICAgICAgKERldmljZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChEZXZp
Y2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChIYW5kbGVyVGFzayk6CisgICAg
ICAgIChIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKEhhbmRsZXJUYXNrLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChQYWNrZXQpOgorICAgICAgICAoUGFja2V0LnBy
b3RvdHlwZS5hZGRUbyk6CisgICAgICAgIChQYWNrZXQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAg
ICAgICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZVN3aWZ0L1JpY2hhcmRzU29t
ZVN3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ouCisgICAgICAgICogQVBJQmVuY2gvQ3VycmVudEFQSS9SaWNoYXJk
c1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2No
ZW1lcy9SaWNoYXJkc1NvbWVTd2lmdC54Y3NjaGVtZTogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9q
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlKUy54Y3NjaGVtZS4KKyAgICAg
ICAgKiBBUElCZW5jaC9DdXJyZW50QVBJL1JpY2hhcmRzU29tZVN3aWZ0L1JpY2hhcmRzU29tZVN3
aWZ0L21haW4uc3dpZnQ6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmlj
aGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTL21haW4uc3dpZnQuCisgICAgICAgICogQVBJ
QmVuY2gvQ3VycmVudEFQSS9SaWNoYXJkc1NvbWVTd2lmdC9SaWNoYXJkc1NvbWVTd2lmdC9yaWNo
YXJkcy5qczogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01v
c3RseUpTL1JpY2hhcmRzTW9zdGx5SlMvcmljaGFyZHMuanMuCisgICAgICAgIChydW5SaWNoYXJk
cyk6CisgICAgICAgIChTY2hlZHVsZXIpOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5h
ZGRJZGxlVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFdvcmtlclRhc2sp
OgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRIYW5kbGVyVGFzayk6CisgICAgICAg
IChTY2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2spOgorICAgICAgICAoU2NoZWR1bGVy
LnByb3RvdHlwZS5hZGRSdW5uaW5nVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBl
LmFkZFRhc2spOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSk6CisgICAg
ICAgIChTY2hlZHVsZXIucHJvdG90eXBlLnJlbGVhc2UpOgorICAgICAgICAoU2NoZWR1bGVyLnBy
b3RvdHlwZS5ob2xkQ3VycmVudCk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLnN1c3Bl
bmRDdXJyZW50KToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUucXVldWUpOgorICAgICAg
ICAoVGFza0NvbnRyb2xCbG9jayk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5zZXRSdW5uaW5nKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtB
c05vdEhlbGQpOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzSGVs
ZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5pc0hlbGRPclN1c3BlbmRl
ZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNTdXNwZW5kZWQp
OgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzUnVubmFibGUpOgor
ICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFRhc2tD
b250cm9sQmxvY2sucHJvdG90eXBlLmNoZWNrUHJpb3JpdHlBZGQpOgorICAgICAgICAoVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoSWRsZVRhc2spOgorICAg
ICAgICAoSWRsZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5
cGUudG9TdHJpbmcpOgorICAgICAgICAoRGV2aWNlVGFzayk6CisgICAgICAgIChEZXZpY2VUYXNr
LnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoRGV2aWNlVGFzay5wcm90b3R5cGUudG9TdHJpbmcp
OgorICAgICAgICAoSGFuZGxlclRhc2spOgorICAgICAgICAoSGFuZGxlclRhc2sucHJvdG90eXBl
LnJ1bik6CisgICAgICAgIChIYW5kbGVyVGFzay5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAoUGFja2V0KToKKyAgICAgICAgKFBhY2tldC5wcm90b3R5cGUuYWRkVG8pOgorICAgICAgICAo
UGFja2V0LnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNl
cy9SaWNoYXJkc0MvUmljaGFyZHNDLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IENvcGllZCBm
cm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01v
c3RseUpTLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ouCisgICAgICAgICogQVBJQmVuY2gvUmVm
ZXJlbmNlcy9SaWNoYXJkc0MvUmljaGFyZHNDLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hl
bWVzL1JpY2hhcmRzQy54Y3NjaGVtZTogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94
Y3NjaGVtZXMvUmljaGFyZHNTd2lmdC54Y3NjaGVtZS4KKyAgICAgICAgKiBBUElCZW5jaC9SZWZl
cmVuY2VzL1JpY2hhcmRzQy9SaWNoYXJkc0MvcmljaGFyZHMuYzogQWRkZWQuCisgICAgICAgIChw
a3QpOgorICAgICAgICAodHJhY2UpOgorICAgICAgICAoc2NoZWR1bGUpOgorICAgICAgICAod2Fp
dF8pOgorICAgICAgICAoaG9sZHNlbGYpOgorICAgICAgICAoZmluZHRjYik6CisgICAgICAgIChy
ZWxlYXNlKToKKyAgICAgICAgKHFwa3QpOgorICAgICAgICAoaWRsZWZuKToKKyAgICAgICAgKHdv
cmtmbik6CisgICAgICAgIChoYW5kbGVyZm4pOgorICAgICAgICAoZGV2Zm4pOgorICAgICAgICAo
YXBwZW5kKToKKyAgICAgICAgKHNldHVwKToKKyAgICAgICAgKGdldFFwa3Rjb3VudCk6CisgICAg
ICAgIChnZXRIb2xkY291bnQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogQVBJQmVuY2gv
UmVmZXJlbmNlcy9SaWNoYXJkc0MvUmljaGFyZHNDL3JpY2hhcmRzLmpzOiBDb3BpZWQgZnJvbSBQ
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWlu
LnN3aWZ0LgorICAgICAgICAoY3JlYXRlV29ya2ZuKToKKyAgICAgICAgKiBBUElCZW5jaC9SZWZl
cmVuY2VzL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNKUy9SaWNoYXJkc0pTLmpzLgorICAgICAgICAqIEFQSUJl
bmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
TW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
LgorICAgICAgICAqIEFQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2Jq
Qy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc09iakMueGNzY2hlbWU6
IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU3dpZnQu
eGNzY2hlbWUuCisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmlj
aGFyZHNPYmpDL0RldmljZS5oOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJl
bmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2JqQy9EZXZpY2VUYXNrLmg6IENv
cGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJk
c1N3aWZ0L21haW4uc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJk
c09iakMvUmljaGFyZHNPYmpDL0RldmljZVRhc2subTogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvbWFpbi5zd2lmdC4KKyAg
ICAgICAgKCtbRGV2aWNlVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVyOmRldmljZTpwcmlvcml0eTpd
KToKKyAgICAgICAgKC1bRGV2aWNlVGFzayBydW46XSk6CisgICAgICAgICogQVBJQmVuY2gvUmVm
ZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL0hhbmRsZXJUYXNrLmg6IENvcGllZCBm
cm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0
L21haW4uc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMv
UmljaGFyZHNPYmpDL0hhbmRsZXJUYXNrLm06IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0RldmljZVRh
c2suc3dpZnQuCisgICAgICAgICgrW0hhbmRsZXJUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6ZGV2
aWNlOnByaW9yaXR5OnF1ZXVlOl0pOgorICAgICAgICAoLVtIYW5kbGVyVGFzayBydW46XSk6Cisg
ICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL0lk
bGVUYXNrLmg6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNT
d2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvUmVmZXJl
bmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL0lkbGVUYXNrLm06IENvcGllZCBmcm9tIFBl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4u
c3dpZnQuCisgICAgICAgICgrW0lkbGVUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6cHJpb3JpdHk6
XSk6CisgICAgICAgICgtW0lkbGVUYXNrIHJ1bjpdKToKKyAgICAgICAgKiBBUElCZW5jaC9SZWZl
cmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvUGFja2V0Lmg6IENvcGllZCBmcm9tIFBl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1BhY2tl
dC5zd2lmdC4KKyAgICAgICAgKiBBUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNo
YXJkc09iakMvUGFja2V0Lm06IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
UmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L0lkbGVUYXNrLnN3aWZ0LgorICAgICAgICAoK1tQ
YWNrZXQgY3JlYXRlOndpdGhMaW5rOl0pOgorICAgICAgICAoLVtQYWNrZXQgYWRkVG9RdWV1ZTpd
KToKKyAgICAgICAgKCtbRGV2aWNlUGFja2V0IGNyZWF0ZTp3aXRoTGluazpdKToKKyAgICAgICAg
KCtbV29ya1BhY2tldCBjcmVhdGVXaXRoTGluazpdKToKKyAgICAgICAgKCtbV29ya1BhY2tldCBz
aXplXSk6CisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFy
ZHNPYmpDL1NjaGVkdWxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBBUElCZW5jaC9SZWZlcmVuY2Vz
L1JpY2hhcmRzT2JqQy9SaWNoYXJkc09iakMvU2NoZWR1bGVyLm06IEFkZGVkLgorICAgICAgICAo
LVtTY2hlZHVsZXIgc2NoZWR1bGVdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIGFkZFRhc2s6XSk6
CisgICAgICAgICgtW1NjaGVkdWxlciByZWxlYXNlRGV2aWNlOl0pOgorICAgICAgICAoLVtTY2hl
ZHVsZXIgaG9sZEN1cnJlbnRdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIHdhaXRDdXJyZW50XSk6
CisgICAgICAgICgtW1NjaGVkdWxlciBxdWV1ZTpdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIGhh
bmRsZTpdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIF9xdWV1ZUltcGw6cGFja2V0Ol0pOgorICAg
ICAgICAoLVtTY2hlZHVsZXIgX2ZpbmQ6XSk6CisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNl
cy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL1Rhc2suaDogQ29waWVkIGZyb20gUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQv
RGV2aWNlVGFzay5zd2lmdC4KKyAgICAgICAgKiBBUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRz
T2JqQy9SaWNoYXJkc09iakMvVGFzay5tOiBBZGRlZC4KKyAgICAgICAgKCtbVGFzayBjcmVhdGVX
aXRoU2NoZWR1bGVyOnByaW9yaXR5OnF1ZXVlOl0pOgorICAgICAgICAoLVtUYXNrIHJ1bjpdKToK
KyAgICAgICAgKC1bVGFzayByZWxlYXNlX10pOgorICAgICAgICAoLVtUYXNrIGhvbGRdKToKKyAg
ICAgICAgKC1bVGFzayB3YWl0XSk6CisgICAgICAgICgtW1Rhc2sgcmVzdW1lXSk6CisgICAgICAg
ICgtW1Rhc2sgdGFrZVBhY2tldF0pOgorICAgICAgICAoLVtUYXNrIGNoZWNrUHJpb3JpdHlBZGQ6
cGFja2V0Ol0pOgorICAgICAgICAqIEFQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1Jp
Y2hhcmRzT2JqQy9Xb3JrZXJUYXNrLmg6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQuCisgICAgICAgICog
QVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc09iakMvUmljaGFyZHNPYmpDL1dvcmtlclRhc2su
bTogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1Jp
Y2hhcmRzU3dpZnQvbWFpbi5zd2lmdC4KKyAgICAgICAgKCtbV29ya2VyVGFzayBjcmVhdGVXaXRo
U2NoZWR1bGVyOnByaW9yaXR5OnF1ZXVlOl0pOgorICAgICAgICAoLVtXb3JrZXJUYXNrIHJ1bjpd
KToKKyAgICAgICAgKiBBUElCZW5jaC9SZWZlcmVuY2VzL1JpY2hhcmRzT2JqQy9SaWNoYXJkc09i
akMvbWFpbi5tOiBBZGRlZC4KKyAgICAgICAgKHJ1blJpY2hhcmRzKToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIEFQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNPYmpDL1JpY2hhcmRzT2Jq
Qy9yaWNoYXJkcy5tOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL1Jl
ZmVyZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dp
ZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLgorICAgICAgICAqIEFQ
SUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJvai94
Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU3dpZnQueGNzY2hlbWU6IENvcGllZCBmcm9t
IFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhj
b2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU3dpZnQueGNzY2hlbWUuCisg
ICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQv
RGV2aWNlVGFzay5zd2lmdDogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
UmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L0RldmljZVRhc2suc3dpZnQuCisgICAgICAgICog
QVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSGFuZGxlclRh
c2suc3dpZnQ6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
U3dpZnQvUmljaGFyZHNTd2lmdC9IYW5kbGVyVGFzay5zd2lmdC4KKyAgICAgICAgKiBBUElCZW5j
aC9SZWZlcmVuY2VzL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9JZGxlVGFzay5zd2lmdDog
Q29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hh
cmRzU3dpZnQvSWRsZVRhc2suc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9S
aWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvUGFja2V0LnN3aWZ0OiBDb3BpZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9QYWNrZXQu
c3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hh
cmRzU3dpZnQvU2NoZWR1bGVyLnN3aWZ0OiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvU2NoZWR1bGVyLnN3aWZ0LgorICAg
ICAgICAqIEFQSUJlbmNoL1JlZmVyZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1Rh
c2suc3dpZnQ6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
U3dpZnQvUmljaGFyZHNTd2lmdC9UYXNrLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL1JlZmVy
ZW5jZXMvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1dvcmtlclRhc2suc3dpZnQ6IFJlbmFt
ZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNT
d2lmdC9Xb3JrZXJUYXNrLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL1JlZmVyZW5jZXMvUmlj
aGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQ6IENvcGllZCBmcm9tIFBlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQu
CisgICAgICAgICogQVBJQmVuY2gvUmVmZXJlbmNlcy9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dp
ZnQvcmljaGFyZHMuc3dpZnQ6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9yaWNoYXJkcy5zd2lmdC4KKyAgICAgICAgKiBB
UElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseUMvUmljaGFyZHNNb3N0bHlDLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVu
Y2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ouCisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlDL1Jp
Y2hhcmRzTW9zdGx5Qy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01v
c3RseUMueGNzY2hlbWU6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmlj
aGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L1JpY2hhcmRzU3dpZnQueGNzY2hlbWUuCisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkv
UmljaGFyZHNNb3N0bHlDL1JpY2hhcmRzTW9zdGx5Qy9yaWNoYXJkcy5jOiBBZGRlZC4KKyAgICAg
ICAgKHBrdCk6CisgICAgICAgICh0cmFjZSk6CisgICAgICAgIChzY2hlZHVsZSk6CisgICAgICAg
ICh3YWl0Xyk6CisgICAgICAgIChob2xkc2VsZik6CisgICAgICAgIChmaW5kdGNiKToKKyAgICAg
ICAgKHJlbGVhc2UpOgorICAgICAgICAocXBrdCk6CisgICAgICAgIChpZGxlZm4pOgorICAgICAg
ICAodmFsdWVUb1Rhc2spOgorICAgICAgICAod2FpdFdyYXBwZXIpOgorICAgICAgICAocXBrdFdy
YXBwZXIpOgorICAgICAgICAocmVhZEZpbGUpOgorICAgICAgICAod29ya2ZuKToKKyAgICAgICAg
KGhhbmRsZXJmbik6CisgICAgICAgIChkZXZmbik6CisgICAgICAgIChhcHBlbmQpOgorICAgICAg
ICAoc2V0dXApOgorICAgICAgICAoZ2V0UXBrdGNvdW50KToKKyAgICAgICAgKGdldEhvbGRjb3Vu
dCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNo
YXJkc01vc3RseUMvUmljaGFyZHNNb3N0bHlDL3JpY2hhcmRzLmpzOiBDb3BpZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWluLnN3
aWZ0LgorICAgICAgICAoY3JlYXRlV29ya2ZuKToKKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWlu
Z0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFy
ZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ouCisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1Jp
Y2hhcmRzTW9zdGx5T2JqQy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJk
c01vc3RseVN3aWZ0Lnhjc2NoZW1lOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElC
ZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94
Y3NjaGVtZXMvUmljaGFyZHNTd2lmdC54Y3NjaGVtZS4KKyAgICAgICAgKiBBUElCZW5jaC9VcGNv
bWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL0RldmljZS5oOiBD
b3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFy
ZHNTd2lmdC9tYWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hh
cmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlVGFzay5oOiBDb3BpZWQgZnJv
bSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9t
YWluLnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5
T2JqQy9SaWNoYXJkc01vc3RseU9iakMvRGV2aWNlVGFzay5tOiBDb3BpZWQgZnJvbSBQZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9tYWluLnN3aWZ0
LgorICAgICAgICAoK1tEZXZpY2VUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6ZGV2aWNlOnByaW9y
aXR5Ol0pOgorICAgICAgICAoLVtEZXZpY2VUYXNrIHJ1bjpdKToKKyAgICAgICAgKiBBUElCZW5j
aC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL0hhbmRs
ZXJUYXNrLmg6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNT
d2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvVXBjb21p
bmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9IYW5kbGVyVGFzay5t
OiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dp
ZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZpY2VUYXNrLnN3aWZ0LgorICAgICAgICAoK1tIYW5k
bGVyVGFzayBjcmVhdGVXaXRoU2NoZWR1bGVyOmRldmljZTpwcmlvcml0eTpxdWV1ZTpdKToKKyAg
ICAgICAgKC1bSGFuZGxlclRhc2sgcnVuOl0pOgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5n
QVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvSWRsZVRhc2suaDogQ29w
aWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRz
U3dpZnQvbWFpbi5zd2lmdC4KKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJk
c01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL0lkbGVUYXNrLm06IENvcGllZCBmcm9tIFBl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4u
c3dpZnQuCisgICAgICAgICgrW0lkbGVUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6cHJpb3JpdHk6
XSk6CisgICAgICAgICgtW0lkbGVUYXNrIHJ1bjpdKToKKyAgICAgICAgKiBBUElCZW5jaC9VcGNv
bWluZ0FQSS9SaWNoYXJkc01vc3RseU9iakMvUmljaGFyZHNNb3N0bHlPYmpDL1BhY2tldC5oOiBS
ZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hh
cmRzU3dpZnQvUGFja2V0LnN3aWZ0LgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1Jp
Y2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvUGFja2V0Lm06IFJlbmFtZWQgZnJv
bSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9J
ZGxlVGFzay5zd2lmdC4KKyAgICAgICAgKCtbUGFja2V0IGNyZWF0ZTp3aXRoTGluazpdKToKKyAg
ICAgICAgKC1bUGFja2V0IGFkZFRvUXVldWU6XSk6CisgICAgICAgICgrW0RldmljZVBhY2tldCBj
cmVhdGU6d2l0aExpbms6XSk6CisgICAgICAgICgrW1dvcmtQYWNrZXQgY3JlYXRlV2l0aExpbms6
XSk6CisgICAgICAgICgrW1dvcmtQYWNrZXQgc2l6ZV0pOgorICAgICAgICAqIEFQSUJlbmNoL1Vw
Y29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMvU2NoZWR1bGVy
Lmg6IEFkZGVkLgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5
T2JqQy9SaWNoYXJkc01vc3RseU9iakMvU2NoZWR1bGVyLm06IEFkZGVkLgorICAgICAgICAoLVtT
Y2hlZHVsZXIgc2NoZWR1bGVdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIGFkZFRhc2s6XSk6Cisg
ICAgICAgICgtW1NjaGVkdWxlciByZWxlYXNlRGV2aWNlOl0pOgorICAgICAgICAoLVtTY2hlZHVs
ZXIgaG9sZEN1cnJlbnRdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIHdhaXRDdXJyZW50XSk6Cisg
ICAgICAgICgtW1NjaGVkdWxlciBxdWV1ZTpdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIGhhbmRs
ZTpdKToKKyAgICAgICAgKC1bU2NoZWR1bGVyIF9xdWV1ZUltcGw6cGFja2V0Ol0pOgorICAgICAg
ICAoLVtTY2hlZHVsZXIgX2ZpbmQ6XSk6CisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkv
UmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9UYXNrLmg6IENvcGllZCBmcm9t
IFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01v
c3RseVN3aWZ0L0RldmljZVRhc2suc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdB
UEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9UYXNrLm06IEFkZGVkLgor
ICAgICAgICAoK1tUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6cHJpb3JpdHk6cXVldWU6XSk6Cisg
ICAgICAgICgtW1Rhc2sgcnVuOl0pOgorICAgICAgICAoLVtUYXNrIHJlbGVhc2VfXSk6CisgICAg
ICAgICgtW1Rhc2sgaG9sZF0pOgorICAgICAgICAoLVtUYXNrIHdhaXRdKToKKyAgICAgICAgKC1b
VGFzayByZXN1bWVdKToKKyAgICAgICAgKC1bVGFzayB0YWtlUGFja2V0XSk6CisgICAgICAgICgt
W1Rhc2sgY2hlY2tQcmlvcml0eUFkZDpwYWNrZXQ6XSk6CisgICAgICAgICogQVBJQmVuY2gvVXBj
b21pbmdBUEkvUmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9Xb3JrZXJUYXNr
Lmg6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9S
aWNoYXJkc1N3aWZ0L21haW4uc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkv
UmljaGFyZHNNb3N0bHlPYmpDL1JpY2hhcmRzTW9zdGx5T2JqQy9Xb3JrZXJUYXNrLm06IEFkZGVk
LgorICAgICAgICAoK1tXb3JrZXJUYXNrIGNyZWF0ZVdpdGhTY2hlZHVsZXI6cHJpb3JpdHk6cXVl
dWU6XSk6CisgICAgICAgICgrW1dvcmtlclRhc2sgY29udGV4dF0pOgorICAgICAgICAoK1tXb3Jr
ZXJUYXNrIGNvbnN0cnVjdG9yXSk6CisgICAgICAgICgtW1dvcmtlclRhc2sgcnVuOl0pOgorICAg
ICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01v
c3RseU9iakMvbWFpbi5tOiBBZGRlZC4KKyAgICAgICAgKHJ1blJpY2hhcmRzKToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2Jq
Qy9SaWNoYXJkc01vc3RseU9iakMvcmljaGFyZHMuanM6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3Jp
Y2hhcmRzLmpzLgorICAgICAgICAocmV0dXJuLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAqIEFQ
SUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5T2JqQy9SaWNoYXJkc01vc3RseU9iakMv
cmljaGFyZHMubTogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFy
ZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvVXBj
b21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qLgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjc2NoZW1lOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlTd2lmdC54Y3NjaGVt
ZS4KKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvRGV2aWNlVGFzay5zd2lmdDogUmVuYW1lZCBmcm9tIFBlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0
L0RldmljZVRhc2suc3dpZnQuCisgICAgICAgIChEZXZpY2VUYXNrLmNyZWF0ZShfOmRldmljZTpw
cmlvcml0eTopKToKKyAgICAgICAgKERldmljZVRhc2sucnVuKF86KSk6CisgICAgICAgICogQVBJ
QmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0
L0hhbmRsZXJUYXNrLnN3aWZ0OiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dp
ZnQuCisgICAgICAgIChIYW5kbGVyVGFzay5kZXZpY2UpOgorICAgICAgICAoSGFuZGxlclRhc2su
Y3JlYXRlKF86ZGV2aWNlOnByaW9yaXR5OnF1ZXVlOikpOgorICAgICAgICAoSGFuZGxlclRhc2su
cnVuKF86KSk6CisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0OiBSZW5hbWVkIGZyb20gUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5
U3dpZnQvSWRsZVRhc2suc3dpZnQuCisgICAgICAgIChJZGxlVGFzay5jcmVhdGUoXzpwcmlvcml0
eTopKToKKyAgICAgICAgKElkbGVUYXNrLnJ1bihfOikpOgorICAgICAgICAqIEFQSUJlbmNoL1Vw
Y29taW5nQVBJL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9QYWNrZXQu
c3dpZnQ6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9z
dGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9QYWNrZXQuc3dpZnQuCisgICAgICAgIChQYWNr
ZXQuYWRkVG8oXzopKToKKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01v
c3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvU2NoZWR1bGVyLnN3aWZ0OiBSZW5hbWVkIGZy
b20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRz
TW9zdGx5U3dpZnQvU2NoZWR1bGVyLnN3aWZ0LgorICAgICAgICAod2FpdEN1cnJlbnQpOgorICAg
ICAgICAoaGFuZGxlKF86KSk6CisgICAgICAgIChTY2hlZHVsZXIuc2NoZWR1bGUpOgorICAgICAg
ICAoU2NoZWR1bGVyLmFkZChfOikpOgorICAgICAgICAoU2NoZWR1bGVyLnJlbGVhc2VfKF86KSk6
CisgICAgICAgIChob2xkQ3VycmVudCk6CisgICAgICAgIChxdWV1ZShfOikpOgorICAgICAgICAo
cXVldWVJbXBsKF86cGFja2V0OikpOgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5nQVBJL1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9UYXNrLnN3aWZ0OiBSZW5hbWVk
IGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hh
cmRzTW9zdGx5U3dpZnQvVGFzay5zd2lmdC4KKyAgICAgICAgKFRhc2sucnVuKF86KSk6CisgICAg
ICAgIChUYXNrLnJlbGVhc2VfKToKKyAgICAgICAgKFRhc2suaG9sZCk6CisgICAgICAgIChUYXNr
LndhaXQpOgorICAgICAgICAoVGFzay5yZXN1bWUpOgorICAgICAgICAoVGFzay50YWtlUGFja2V0
KToKKyAgICAgICAgKFRhc2suY2hlY2tQcmlvcml0eUFkZChfOnBhY2tldDopKToKKyAgICAgICAg
KiBBUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5
U3dpZnQvV29ya2VyVGFzay5zd2lmdDogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1dvcmtlclRhc2su
c3dpZnQuCisgICAgICAgIChXb3JrZXJUYXNrLmNyZWF0ZShfOnByaW9yaXR5OnF1ZXVlOikpOgor
ICAgICAgICAoV29ya2VyVGFzay5ydW4oXzopKToKKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWlu
Z0FQSS9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvbWFpbi5zd2lmdDog
UmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lm
dC9SaWNoYXJkc01vc3RseVN3aWZ0L21haW4uc3dpZnQuCisgICAgICAgICogQVBJQmVuY2gvVXBj
b21pbmdBUEkvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRz
LmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuanMuCisgICAgICAgIChyZXR1cm4u
cHJvdG90eXBlLnJ1bik6CisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNN
b3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L3JpY2hhcmRzLnN3aWZ0OiBSZW5hbWVkIGZy
b20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRz
TW9zdGx5U3dpZnQvcmljaGFyZHMuc3dpZnQuCisgICAgICAgIChydW5SaWNoYXJkcyk6CisgICAg
ICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21lQy9SaWNoYXJkc1NvbWVDLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ouCisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21lQy9S
aWNoYXJkc1NvbWVDL21haW4ubTogQWRkZWQuCisgICAgICAgIChXb3JrZXJUYXNrX3J1bik6Cisg
ICAgICAgIChXb3JrZXJUYXNrX2NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdvcmtlclRhc2tfZ2V0
UHJvcGVydHkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdB
UEkvUmljaGFyZHNTb21lQy9SaWNoYXJkc1NvbWVDL3JpY2hhcmRzLmpzOiBDb3BpZWQgZnJvbSBQ
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlK
Uy9yaWNoYXJkcy5qcy4KKyAgICAgICAgKHJ1blJpY2hhcmRzKToKKyAgICAgICAgKFNjaGVkdWxl
cik6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrKToKKyAgICAgICAg
KFNjaGVkdWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIu
cHJvdG90eXBlLmFkZEhhbmRsZXJUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUu
YWRkRGV2aWNlVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdU
YXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkVGFzayk6CisgICAgICAgIChT
Y2hlZHVsZXIucHJvdG90eXBlLnNjaGVkdWxlKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5
cGUucmVsZWFzZSk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmhvbGRDdXJyZW50KToK
KyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQpOgorICAgICAgICAo
U2NoZWR1bGVyLnByb3RvdHlwZS5xdWV1ZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrKToK
KyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnNldFJ1bm5pbmcpOgorICAgICAg
ICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCk6CisgICAgICAgIChU
YXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkKToKKyAgICAgICAgKFRhc2tDb250
cm9sQmxvY2sucHJvdG90eXBlLmlzSGVsZE9yU3VzcGVuZGVkKToKKyAgICAgICAgKFRhc2tDb250
cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1N1c3BlbmRlZCk6CisgICAgICAgIChUYXNrQ29udHJv
bEJsb2NrLnByb3RvdHlwZS5tYXJrQXNSdW5uYWJsZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJs
b2NrLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUu
Y2hlY2tQcmlvcml0eUFkZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS50
b1N0cmluZyk6CisgICAgICAgIChJZGxlVGFzayk6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5
cGUucnVuKToKKyAgICAgICAgKElkbGVUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAg
IChEZXZpY2VUYXNrKToKKyAgICAgICAgKERldmljZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAg
ICAgIChEZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChIYW5kbGVyVGFz
ayk6CisgICAgICAgIChIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKEhhbmRs
ZXJUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChQYWNrZXQpOgorICAgICAgICAo
UGFja2V0LnByb3RvdHlwZS5hZGRUbyk6CisgICAgICAgIChQYWNrZXQucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVPYmpDL1Jp
Y2hhcmRzU29tZU9iakMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQ29waWVkIGZyb20gUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvai4KKyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWluZ0FQ
SS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRzU29tZU9iakMueGNvZGVwcm9qL3hjc2hhcmVkZGF0
YS94Y3NjaGVtZXMvUmljaGFyZHNTb21lT2JqQy54Y3NjaGVtZTogQ29waWVkIGZyb20gUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlKUy54Y3NjaGVtZS4K
KyAgICAgICAgKiBBUElCZW5jaC9VcGNvbWluZ0FQSS9SaWNoYXJkc1NvbWVPYmpDL1JpY2hhcmRz
U29tZU9iakMvbWFpbi5tOiBBZGRlZC4KKyAgICAgICAgKC1bV29ya2VyVGFzayBpbml0V2l0aFNj
aGVkdWxlcjp2MTp2MjpdKToKKyAgICAgICAgKC1bV29ya2VyVGFzayB0b1N0cmluZ10pOgorICAg
ICAgICAoLVtXb3JrZXJUYXNrIHJ1bjpdKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEFQ
SUJlbmNoL1VwY29taW5nQVBJL1JpY2hhcmRzU29tZU9iakMvUmljaGFyZHNTb21lT2JqQy9yaWNo
YXJkcy5qczogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01v
c3RseUpTL1JpY2hhcmRzTW9zdGx5SlMvcmljaGFyZHMuanMuCisgICAgICAgIChydW5SaWNoYXJk
cyk6CisgICAgICAgIChTY2hlZHVsZXIpOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5h
ZGRJZGxlVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFdvcmtlclRhc2sp
OgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRIYW5kbGVyVGFzayk6CisgICAgICAg
IChTY2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2spOgorICAgICAgICAoU2NoZWR1bGVy
LnByb3RvdHlwZS5hZGRSdW5uaW5nVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBl
LmFkZFRhc2spOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSk6CisgICAg
ICAgIChTY2hlZHVsZXIucHJvdG90eXBlLnJlbGVhc2UpOgorICAgICAgICAoU2NoZWR1bGVyLnBy
b3RvdHlwZS5ob2xkQ3VycmVudCk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLnN1c3Bl
bmRDdXJyZW50KToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUucXVldWUpOgorICAgICAg
ICAoVGFza0NvbnRyb2xCbG9jayk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5zZXRSdW5uaW5nKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtB
c05vdEhlbGQpOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzSGVs
ZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5pc0hlbGRPclN1c3BlbmRl
ZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNTdXNwZW5kZWQp
OgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzUnVubmFibGUpOgor
ICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFRhc2tD
b250cm9sQmxvY2sucHJvdG90eXBlLmNoZWNrUHJpb3JpdHlBZGQpOgorICAgICAgICAoVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoSWRsZVRhc2spOgorICAg
ICAgICAoSWRsZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5
cGUudG9TdHJpbmcpOgorICAgICAgICAoRGV2aWNlVGFzayk6CisgICAgICAgIChEZXZpY2VUYXNr
LnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoRGV2aWNlVGFzay5wcm90b3R5cGUudG9TdHJpbmcp
OgorICAgICAgICAoSGFuZGxlclRhc2spOgorICAgICAgICAoSGFuZGxlclRhc2sucHJvdG90eXBl
LnJ1bik6CisgICAgICAgIChIYW5kbGVyVGFzay5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAoUGFja2V0KToKKyAgICAgICAgKFBhY2tldC5wcm90b3R5cGUuYWRkVG8pOgorICAgICAgICAo
UGFja2V0LnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdB
UEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFyZHNTb21lU3dpZnQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNN
b3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ouCisgICAg
ICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21lU3dpZnQvUmljaGFyZHNTb21l
U3dpZnQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNTb21lU3dpZnQu
eGNzY2hlbWU6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
TW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9SaWNoYXJkc01vc3RseUpTLnhjc2NoZW1lLgorICAgICAgICAqIEFQSUJlbmNoL1VwY29taW5n
QVBJL1JpY2hhcmRzU29tZVN3aWZ0L1JpY2hhcmRzU29tZVN3aWZ0L21haW4uc3dpZnQ6IFJlbmFt
ZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFy
ZHNNb3N0bHlKUy9tYWluLnN3aWZ0LgorICAgICAgICAocnVuKF86KSk6CisgICAgICAgICh0b1N0
cmluZyk6CisgICAgICAgIChXb3JrZXJUYXNrLnRvU3RyaW5nKToKKyAgICAgICAgKFdvcmtlclRh
c2sucnVuKF86KSk6CisgICAgICAgICogQVBJQmVuY2gvVXBjb21pbmdBUEkvUmljaGFyZHNTb21l
U3dpZnQvUmljaGFyZHNTb21lU3dpZnQvcmljaGFyZHMuanM6IFJlbmFtZWQgZnJvbSBQZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9yaWNo
YXJkcy5qcy4KKyAgICAgICAgKHJ1blJpY2hhcmRzKToKKyAgICAgICAgKFNjaGVkdWxlcik6Cisg
ICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrKToKKyAgICAgICAgKFNjaGVk
dWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90
eXBlLmFkZEhhbmRsZXJUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2
aWNlVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdUYXNrKToK
KyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkVGFzayk6CisgICAgICAgIChTY2hlZHVs
ZXIucHJvdG90eXBlLnNjaGVkdWxlKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUucmVs
ZWFzZSk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmhvbGRDdXJyZW50KToKKyAgICAg
ICAgKFNjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQpOgorICAgICAgICAoU2NoZWR1
bGVyLnByb3RvdHlwZS5xdWV1ZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrKToKKyAgICAg
ICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnNldFJ1bm5pbmcpOgorICAgICAgICAoVGFz
a0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCk6CisgICAgICAgIChUYXNrQ29u
dHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxv
Y2sucHJvdG90eXBlLmlzSGVsZE9yU3VzcGVuZGVkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxv
Y2sucHJvdG90eXBlLm1hcmtBc1N1c3BlbmRlZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2Nr
LnByb3RvdHlwZS5tYXJrQXNSdW5uYWJsZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnBy
b3RvdHlwZS5ydW4pOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQ
cmlvcml0eUFkZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS50b1N0cmlu
Zyk6CisgICAgICAgIChJZGxlVGFzayk6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5cGUucnVu
KToKKyAgICAgICAgKElkbGVUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChEZXZp
Y2VUYXNrKToKKyAgICAgICAgKERldmljZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChE
ZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChIYW5kbGVyVGFzayk6Cisg
ICAgICAgIChIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKEhhbmRsZXJUYXNr
LnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChQYWNrZXQpOgorICAgICAgICAoUGFja2V0
LnByb3RvdHlwZS5hZGRUbyk6CisgICAgICAgIChQYWNrZXQucHJvdG90eXBlLnRvU3RyaW5nKToK
KyAgICAgICAgKiBBUElCZW5jaC9hcGktYmVuY2g6CisKIDIwMjAtMTAtMjcgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQXVkaW8gYW5kIFZpZGVvIGVs
ZW1lbnQgY3JlYXRpb24gdXAgdG8gMzAweCBzbG93ZXIgdGhhbiBvdGhlciBicm93c2Vycwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>