<?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>130868</bug_id>
          
          <creation_ts>2014-03-27 15:36:57 -0700</creation_ts>
          <short_desc>Add _ prefix to WKRemoteObjectRegistery and WKRemoteObjectInterface</short_desc>
          <delta_ts>2014-03-27 15:59:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995104</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-27 15:36:57 -0700</bug_when>
    <thetext>Add _ prefix to WKRemoteObjectRegistery and WKRemoteObjectInterface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995106</commentid>
    <comment_count>1</comment_count>
      <attachid>227995</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-27 15:39:44 -0700</bug_when>
    <thetext>Created attachment 227995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995108</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-27 15:42:05 -0700</bug_when>
    <thetext>Attachment 227995 did not pass style-queue:


ERROR: Source/WebKit2/Shared/API/Cocoa/RemoteObjectRegistry.h:31:  _WKRemoteObjectRegistry is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995124</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-27 15:59:30 -0700</bug_when>
    <thetext>Committed r166379: &lt;http://trac.webkit.org/changeset/166379&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227995</attachid>
            <date>2014-03-27 15:39:44 -0700</date>
            <delta_ts>2014-03-27 15:40:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130868-20140327153923.patch</filename>
            <type>text/plain</type>
            <size>91247</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2ZiZTc4ZTFjMDVhMDBj
OWY0YzdlNTg5NjMyZDE1ZjAyNWM1NDM3NC4uYTliNWEwMDY1ZmJjMGFkMzZmOTg4NTdiYzVhOTBh
MDVhMGIyMDAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkwIEBACiAyMDE0LTAzLTI3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIF8gcHJlZml4
IHRvIFdLUmVtb3RlT2JqZWN0UmVnaXN0ZXJ5IGFuZCBXS1JlbW90ZU9iamVjdEludGVyZmFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwODY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlT2Jq
ZWN0UmVnaXN0cnk6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XS1Jl
bW90ZU9iamVjdC5tbToKKyAgICAgICAgKC1bV0tSZW1vdGVPYmplY3QgX2luaXRXaXRoT2JqZWN0
UmVnaXN0cnk6aW50ZXJmYWNlOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbToKKyAgICAgICAgKC1bV0tSZW1vdGVPYmplY3REZWNvZGVyIGluaXRXaXRoSW50
ZXJmYWNlOnJvb3RPYmplY3REaWN0aW9uYXJ5OldlYktpdDo6XSk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oOgorICAgICAgICAqIFNoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06CisgICAgICAgIChpc0NvbnRhaW5l
ckNsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKHByb3BlcnR5TGlzdENsYXNzZXMpOiBEZWxldGVk
LgorICAgICAgICAoYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlc0Zvck1ldGhvZCk6IERlbGV0ZWQuCisg
ICAgICAgIChpbml0aWFsaXplQWxsb3dlZEFyZ3VtZW50Q2xhc3Nlcyk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIGluaXRXaXRoUHJvdG9jb2w6aWRlbnRpZmll
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3Rl
T2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1Jl
bW90ZU9iamVjdEludGVyZmFjZSBkZXNjcmlwdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoY2xh
c3Nlc0ZvclNlbGVjdG9yQXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoLVtXS1JlbW90ZU9i
amVjdEludGVyZmFjZSBjbGFzc2VzRm9yU2VsZWN0b3I6YXJndW1lbnRJbmRleDpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Ugc2V0Q2xhc3Nlczpmb3JTZWxl
Y3Rvcjphcmd1bWVudEluZGV4Ol0pOiBEZWxldGVkLgorICAgICAgICAobWV0aG9kQXJndW1lbnRU
eXBlRW5jb2RpbmdGb3JTZWxlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlIF9tZXRob2RTaWduYXR1cmVGb3JTZWxlY3RvcjpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgX2FsbG93ZWRBcmd1bWVudENsYXNzZXNG
b3JTZWxlY3RvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVn
aXN0ZXJFeHBvcnRlZE9iamVjdDppbnRlcmZhY2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkgdW5yZWdpc3RlckV4cG9ydGVkT2JqZWN0OmludGVyZmFjZTpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tSZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmpl
Y3RQcm94eVdpdGhJbnRlcmZhY2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgX2luaXRXaXRoTWVzc2FnZVNlbmRlcjpJUEM6Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbnZhbGlkYXRlXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFj
ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBXZWJLaXQ6
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbnZva2VN
ZXRob2Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2lu
dm9rZU1lc3NhZ2VXaXRoSW50ZXJmYWNlSWRlbnRpZmllcjplbmNvZGVkSW52b2NhdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0SW50ZXJmYWNlLmguCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2UubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0uCisgICAgICAgIChpc0NvbnRhaW5l
ckNsYXNzKToKKyAgICAgICAgKHByb3BlcnR5TGlzdENsYXNzZXMpOgorICAgICAgICAoYWxsb3dl
ZEFyZ3VtZW50Q2xhc3Nlc0Zvck1ldGhvZCk6CisgICAgICAgIChpbml0aWFsaXplQWxsb3dlZEFy
Z3VtZW50Q2xhc3Nlcyk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSBpbml0
V2l0aFByb3RvY29sOmlkZW50aWZpZXI6XSk6CisgICAgICAgICgrW19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6XSk6CisgICAgICAgICgt
W19XS1JlbW90ZU9iamVjdEludGVyZmFjZSBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoY2xhc3Nl
c0ZvclNlbGVjdG9yQXJndW1lbnQpOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RJbnRlcmZh
Y2UgY2xhc3Nlc0ZvclNlbGVjdG9yOmFyZ3VtZW50SW5kZXg6XSk6CisgICAgICAgICgtW19XS1Jl
bW90ZU9iamVjdEludGVyZmFjZSBzZXRDbGFzc2VzOmZvclNlbGVjdG9yOmFyZ3VtZW50SW5kZXg6
XSk6CisgICAgICAgIChtZXRob2RBcmd1bWVudFR5cGVFbmNvZGluZ0ZvclNlbGVjdG9yKToKKyAg
ICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIF9tZXRob2RTaWduYXR1cmVGb3JTZWxl
Y3RvcjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIF9hbGxvd2VkQXJn
dW1lbnRDbGFzc2VzRm9yU2VsZWN0b3I6XSk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRlcm5hbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmgu
CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaC4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0uCisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5IHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6aW50ZXJmYWNlOl0pOgorICAgICAgICAoLVtfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeSB1bnJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6aW50ZXJmYWNlOl0p
OgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RQcm94eVdp
dGhJbnRlcmZhY2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aE1lc3NhZ2VTZW5kZXI6SVBDOjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkgX2ludmFsaWRhdGVdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkgV2ViS2l0OjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X2ludm9rZU1ldGhvZDpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2lu
dm9rZU1lc3NhZ2VXaXRoSW50ZXJmYWNlSWRlbnRpZmllcjplbmNvZGVkSW52b2NhdGlvbjpdKToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJu
YWwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RSZWdpc3RyeUludGVybmFsLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBfcmVtb3RlT2JqZWN0UmVnaXN0cnldKToKKyAgICAgICAgKC1bV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlbW90ZU9iamVjdFJlZ2lzdHJ5XSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyVG9CZVJlbW92ZWQubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3QuaC4KKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyIHJlbW90ZU9iamVjdFJlZ2lzdHJ5XSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9yZW1vdGVPYmplY3RSZWdpc3RyeV0pOgorICAgICAg
ICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnldKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJp
dmF0ZS5oOgorCisyMDE0LTAzLTI3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKICAgICAgICAgQWRkIHJlbG9hZCBhbmQgcmVsb2FkRnJvbU9yaWdpbiBhcyBBUEkKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDg1OAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmgKaW5kZXggNDU3YzllNDk4ZmNkMGRjZDIxNmU2YTdmZWY4YTg0M2MxNGMyZTM2MC4u
MTM4OTM1NzFjMzJkYTEwMjgyZTVjMDA5ZjZjNzg2MTJhMmVlZjdjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaApA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAKLU9CSkNf
Q0xBU1MgV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKK09CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnk7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgTWVzc2FnZVNlbmRlcjsKQEAgLTQw
LDcgKzQwLDcgQEAgY2xhc3MgVXNlckRhdGE7CiAKIGNsYXNzIFJlbW90ZU9iamVjdFJlZ2lzdHJ5
IGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBSZW1v
dGVPYmplY3RSZWdpc3RyeShXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICosIElQQzo6TWVzc2FnZVNl
bmRlciYpOworICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
ICosIElQQzo6TWVzc2FnZVNlbmRlciYpOwogICAgIH5SZW1vdGVPYmplY3RSZWdpc3RyeSgpOwog
CiAgICAgdm9pZCBzZW5kSW52b2NhdGlvbihjb25zdCBVc2VyRGF0YSYpOwpAQCAtNTIsNyArNTIs
NyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGludm9rZU1l
dGhvZChjb25zdCBVc2VyRGF0YSYpOwogCi0gICAgV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqbV9y
ZW1vdGVPYmplY3RSZWdpc3RyeTsKKyAgICBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqbV9yZW1v
dGVPYmplY3RSZWdpc3RyeTsKICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1fbWVzc2FnZVNlbmRl
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGEwMzBlODBmZDdiNWQ4OTk5NDMxZGU1MWZlYTI0
ZmZlYWU1YWRjNjguLjZmN2ZkYWJhZWEyOGM2OWQ2MjQ3NzYxYzYyMTA1NWVkNmIwNWYxMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmpl
Y3RSZWdpc3RyeS5tbQpAQCAtMjksMTEgKzI5LDExIEBACiAjaW1wb3J0ICJNZXNzYWdlU2VuZGVy
LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJV
c2VyRGF0YS5oIgotI2ltcG9ydCAiV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCisj
aW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVPYmplY3RSZWdpc3RyeTo6UmVtb3RlT2JqZWN0UmVnaXN0cnkoV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2JqZWN0UmVnaXN0cnksIElQQzo6TWVzc2FnZVNl
bmRlciYgbWVzc2FnZVNlbmRlcikKK1JlbW90ZU9iamVjdFJlZ2lzdHJ5OjpSZW1vdGVPYmplY3RS
ZWdpc3RyeShfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2JqZWN0UmVnaXN0cnksIElQ
Qzo6TWVzc2FnZVNlbmRlciYgbWVzc2FnZVNlbmRlcikKICAgICA6IG1fcmVtb3RlT2JqZWN0UmVn
aXN0cnkocmVtb3RlT2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX21lc3NhZ2VTZW5kZXIobWVzc2Fn
ZVNlbmRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3QuaAppbmRleCBmYTFjNmVjN2NkOWYyNTA1MzcyZjZjOTgyNWViMDViYjgyMDBjNzcx
Li40YWJmMmM5ZjFkNWI3MDUwZjA1ZDA1NjhkZGY5ZmNkODYzZGVlOWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdC5oCkBAIC0yNywxMiAr
MjcsMTIgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLUBjbGFzcyBXS1JlbW90ZU9iamVjdElu
dGVyZmFjZTsKLUBjbGFzcyBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OworQGNsYXNzIF9XS1JlbW90
ZU9iamVjdEludGVyZmFjZTsKK0BjbGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAogQGlu
dGVyZmFjZSBXS1JlbW90ZU9iamVjdCA6IE5TT2JqZWN0CiAKLS0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhPYmplY3RSZWdpc3RyeTooV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqKW9iamVjdFJlZ2lz
dHJ5IGludGVyZmFjZTooV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKilpbnRlcmZhY2U7CistIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoT2JqZWN0UmVnaXN0cnk6KF9XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5ICopb2JqZWN0UmVnaXN0cnkgaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Ug
KilpbnRlcmZhY2U7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Q29jb2EvV0tSZW1vdGVPYmplY3QubW0KaW5kZXggMTE4ZjAzODM0MWIwZDRiYzAyOTU1Y2I0NWIy
NjQyOWU1ZTdmMWYyOS4uOTRmNTU4YjAwODdjODkxZGU4NjQ3Yzk5YWEwNWJlODU5ZWUyNmMwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Lm1tCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLSNpbXBvcnQg
IldLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJXS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oIgorI2lt
cG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBX
S1JlbW90ZU9iamVjdCB7Ci0gICAgUmV0YWluUHRyPFdLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IF9v
YmplY3RSZWdpc3RyeTsKLSAgICBSZXRhaW5QdHI8V0tSZW1vdGVPYmplY3RJbnRlcmZhY2U+IF9p
bnRlcmZhY2U7CisgICAgUmV0YWluUHRyPF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5PiBfb2JqZWN0
UmVnaXN0cnk7CisgICAgUmV0YWluUHRyPF9XS1JlbW90ZU9iamVjdEludGVyZmFjZT4gX2ludGVy
ZmFjZTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE9iamVjdFJlZ2lzdHJ5OihXS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5ICopb2JqZWN0UmVnaXN0cnkgaW50ZXJmYWNlOihXS1JlbW90ZU9i
amVjdEludGVyZmFjZSAqKWludGVyZmFjZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE9iamVj
dFJlZ2lzdHJ5OihfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqKW9iamVjdFJlZ2lzdHJ5IGludGVy
ZmFjZTooX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICopaW50ZXJmYWNlCiB7CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4
IGZjMWRjM2M1ZTM5Y2EwNDM3ZWEzZDhkMTk2NDA3MzUxYmI5MDM1NTcuLjBkYTBlYmU3Y2YzOGMz
NWE3ODFiMmQxNTRjMGE4ODg4NzBmMzQ2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKIH0KIAotQGNs
YXNzIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlOworQGNsYXNzIF9XS1JlbW90ZU9iamVjdEludGVy
ZmFjZTsKIAogQGludGVyZmFjZSBXS1JlbW90ZU9iamVjdEVuY29kZXIgOiBOU0NvZGVyCiAKQEAg
LTQxLDcgKzQxLDcgQEAgY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKIAogQGludGVyZmFjZSBX
S1JlbW90ZU9iamVjdERlY29kZXIgOiBOU0NvZGVyCiAKLS0gKGlkKWluaXRXaXRoSW50ZXJmYWNl
OihXS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWludGVyZmFjZSByb290T2JqZWN0RGljdGlvbmFy
eTooY29uc3QgV2ViS2l0OjpJbW11dGFibGVEaWN0aW9uYXJ5Kilyb290T2JqZWN0RGljdGlvbmFy
eTsKKy0gKGlkKWluaXRXaXRoSW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKilp
bnRlcmZhY2Ugcm9vdE9iamVjdERpY3Rpb25hcnk6KGNvbnN0IFdlYktpdDo6SW1tdXRhYmxlRGlj
dGlvbmFyeSopcm9vdE9iamVjdERpY3Rpb25hcnk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4
IDExNDE5Mzk3NGQzN2UzMzQxN2ExZDZjMzZlNWY4ZTVmZTQ5ZTRmY2IuLmU1NDNiZGI4MzJlMDRl
ZGRmZWUwYTFlYTgxMDhiNGJjOGU4OGVmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTMzLDcgKzMzLDcg
QEAKICNpbXBvcnQgIkFQSU51bWJlci5oIgogI2ltcG9ydCAiQVBJU3RyaW5nLmgiCiAjaW1wb3J0
ICJNdXRhYmxlRGljdGlvbmFyeS5oIgotI2ltcG9ydCAiV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgpAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBO
U1N0cmluZyAqZXNjYXBlS2V5KE5TU3RyaW5nICprZXkpCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBXS1JlbW90ZU9iamVjdERlY29kZXIgewotICAgIFJldGFpblB0cjxXS1JlbW90ZU9iamVjdElu
dGVyZmFjZT4gX2ludGVyZmFjZTsKKyAgICBSZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlPiBfaW50ZXJmYWNlOwogCiAgICAgY29uc3QgSW1tdXRhYmxlRGljdGlvbmFyeSogX3Jvb3RE
aWN0aW9uYXJ5OwogICAgIGNvbnN0IEltbXV0YWJsZURpY3Rpb25hcnkqIF9jdXJyZW50RGljdGlv
bmFyeTsKQEAgLTMwMSw3ICszMDEsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmVzY2FwZUtleShOU1N0
cmluZyAqa2V5KQogICAgIE5TU2V0ICpfYWxsb3dlZENsYXNzZXM7CiB9CiAKLS0gKGlkKWluaXRX
aXRoSW50ZXJmYWNlOihXS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWludGVyZmFjZSByb290T2Jq
ZWN0RGljdGlvbmFyeTooY29uc3QgV2ViS2l0OjpJbW11dGFibGVEaWN0aW9uYXJ5Kilyb290T2Jq
ZWN0RGljdGlvbmFyeQorLSAoaWQpaW5pdFdpdGhJbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSAqKWludGVyZmFjZSByb290T2JqZWN0RGljdGlvbmFyeTooY29uc3QgV2ViS2l0OjpJ
bW11dGFibGVEaWN0aW9uYXJ5Kilyb290T2JqZWN0RGljdGlvbmFyeQogewogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5o
CmluZGV4IDRhOTA0MDQ0ZTlmZGU4NWRhN2Y1ZjUzMzIzMjNiZTg1NmI3YzA5NTUuLjY2ZDIxM2Y2
Nzk1NTM2M2ZjZTIwYWRhMmM4MTdlNzQ2ZWRlNmQ0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI1ICsy
MywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBv
cnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQyL19XS1JlbW90ZU9i
amVjdEludGVyZmFjZS5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+Ci0KIFdLX0FQSV9DTEFTUwotQGludGVyZmFjZSBXS1JlbW90ZU9i
amVjdEludGVyZmFjZSA6IE5TT2JqZWN0Ci0KLSsgKGluc3RhbmNldHlwZSlyZW1vdGVPYmplY3RJ
bnRlcmZhY2VXaXRoUHJvdG9jb2w6KFByb3RvY29sICopcHJvdG9jb2w7Ci0KLS0gKGlkKWluaXRX
aXRoUHJvdG9jb2w6KFByb3RvY29sICopcHJvdG9jb2wgaWRlbnRpZmllcjooTlNTdHJpbmcgKilp
ZGVudGlmaWVyOwotCi1AcHJvcGVydHkgKHJlYWRvbmx5KSBQcm90b2NvbCAqcHJvdG9jb2w7Ci1A
cHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqaWRlbnRpZmllcjsKLQotLSAoTlNTZXQgKilj
bGFzc2VzRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvciBhcmd1bWVudEluZGV4OihOU1VJbnRlZ2Vy
KWFyZ3VtZW50SW5kZXg7Ci0tICh2b2lkKXNldENsYXNzZXM6KE5TU2V0ICopY2xhc3NlcyBmb3JT
ZWxlY3RvcjooU0VMKXNlbGVjdG9yIGFyZ3VtZW50SW5kZXg6KE5TVUludGVnZXIpYXJndW1lbnRJ
bmRleDsKK0BpbnRlcmZhY2UgV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgOiBfV0tSZW1vdGVPYmpl
Y3RJbnRlcmZhY2UKIAogQGVuZAogCi0jZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dEludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UubW0KaW5kZXggMGIxNDAzNjY2YjMzMTU1MzIzYzA3YWYxMDJlNDc3ODZk
NGVjNjlkMy4uZjIyYjNmYTBjMTgzMDNlNzE4ZDFiMmE4MzRmZjQyNTBjM2Y1ZDU2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOCwxNzggKzI4LDggQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLSNpbXBv
cnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0
Zi9WZWN0b3IuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotZXh0ZXJuICJDIgotY29u
c3QgY2hhciAqX3Byb3RvY29sX2dldE1ldGhvZFR5cGVFbmNvZGluZyhQcm90b2NvbCAqcCwgU0VM
IHNlbCwgQk9PTCBpc1JlcXVpcmVkTWV0aG9kLCBCT09MIGlzSW5zdGFuY2VNZXRob2QpOwotCi1A
aW50ZXJmYWNlIE5TTWV0aG9kU2lnbmF0dXJlIChXS0RldGFpbHMpCi0tIChDbGFzcylfY2xhc3NG
b3JPYmplY3RBdEFyZ3VtZW50SW5kZXg6KE5TSW50ZWdlcilpZHg7Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBXS1JlbW90ZU9iamVjdEludGVyZmFjZSB7Ci0gICAgSGFzaE1hcDxTRUwsIFZlY3Rv
cjxSZXRhaW5QdHI8TlNTZXQ+Pj4gX2FsbG93ZWRBcmd1bWVudENsYXNzZXM7Ci19Ci0KLXN0YXRp
YyBib29sIGlzQ29udGFpbmVyQ2xhc3MoQ2xhc3Mgb2JqZWN0Q2xhc3MpCi17Ci0gICAgLy8gRklY
TUU6IEFkZCBtb3JlIGNsYXNzZXMgaGVyZSBpZiBuZWVkZWQuCi0gICAgc3RhdGljIE5TU2V0ICpj
b250YWluZXJDbGFzc2VzID0gW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOltOU0FycmF5
IGNsYXNzXSwgW05TRGljdGlvbmFyeSBjbGFzc10sIG5pbF07Ci0KLSAgICByZXR1cm4gW2NvbnRh
aW5lckNsYXNzZXMgY29udGFpbnNPYmplY3Q6b2JqZWN0Q2xhc3NdOwotfQotCi1zdGF0aWMgTlNT
ZXQgKnByb3BlcnR5TGlzdENsYXNzZXMoKQotewotICAgIC8vIEZJWE1FOiBBZGQgbW9yZSBwcm9w
ZXJ0eSBsaXN0IGNsYXNzZXMgaWYgbmVlZGVkLgotICAgIHN0YXRpYyBOU1NldCAqcHJvcGVydHlM
aXN0Q2xhc3NlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpbTlNBcnJheSBjbGFz
c10sIFtOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNTdHJpbmcgY2xh
c3NdLCBuaWxdOwotCi0gICAgcmV0dXJuIHByb3BlcnR5TGlzdENsYXNzZXM7Ci19Ci0KLXN0YXRp
YyBWZWN0b3I8UmV0YWluUHRyPE5TU2V0Pj4gYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlc0Zvck1ldGhv
ZChOU01ldGhvZFNpZ25hdHVyZSAqbWV0aG9kU2lnbmF0dXJlKQotewotICAgIFZlY3RvcjxSZXRh
aW5QdHI8TlNTZXQ+PiByZXN1bHQ7Ci0KLSAgICBOU1NldCAqZW1wdHlTZXQgPSBbTlNTZXQgc2V0
XTsKLQotICAgIC8vIFdlIGlnbm9yZSBzZWxmIGFuZCBfY21kLgotICAgIE5TVUludGVnZXIgYXJn
dW1lbnRDb3VudCA9IG1ldGhvZFNpZ25hdHVyZS5udW1iZXJPZkFyZ3VtZW50cyAtIDI7Ci0KLSAg
ICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudENvdW50KTsKLQotICAgIGZv
ciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewotICAgICAgICBj
b25zdCBjaGFyKiB0eXBlID0gW21ldGhvZFNpZ25hdHVyZSBnZXRBcmd1bWVudFR5cGVBdEluZGV4
OmkgKyAyXTsKLQotICAgICAgICBpZiAoKnR5cGUgIT0gJ0AnKSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIGlzIGEgbm9uLW9iamVjdCB0eXBlOyB3ZSB3b24ndCBhbGxvdyBhbnkgY2xhc3NlcyB0byBi
ZSBkZWNvZGVkIGZvciBpdC4KLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoZW1w
dHlTZXQpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBDbGFz
cyBvYmplY3RDbGFzcyA9IFttZXRob2RTaWduYXR1cmUgX2NsYXNzRm9yT2JqZWN0QXRBcmd1bWVu
dEluZGV4OmkgKyAyXTsKLSAgICAgICAgaWYgKCFvYmplY3RDbGFzcykgewotICAgICAgICAgICAg
cmVzdWx0LnVuY2hlY2tlZEFwcGVuZChlbXB0eVNldCk7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc0NvbnRhaW5lckNsYXNzKG9iamVjdENsYXNzKSkg
ewotICAgICAgICAgICAgLy8gRm9yIGNvbnRhaW5lciBjbGFzc2VzLCB3ZSBhbGxvdyBhbGwgc2lt
cGxlIHByb3BlcnR5IGxpc3QgY2xhc3Nlcy4KLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQocHJvcGVydHlMaXN0Q2xhc3NlcygpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChbTlNTZXQgc2V0V2l0aE9i
amVjdDpvYmplY3RDbGFzc10pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0
YXRpYyB2b2lkIGluaXRpYWxpemVBbGxvd2VkQXJndW1lbnRDbGFzc2VzKFdLUmVtb3RlT2JqZWN0
SW50ZXJmYWNlICppbnRlcmZhY2UsIGJvb2wgcmVxdWlyZWRNZXRob2RzKQotewotICAgIHVuc2ln
bmVkIG1ldGhvZENvdW50OwotICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiAqbWV0
aG9kcyA9IHByb3RvY29sX2NvcHlNZXRob2REZXNjcmlwdGlvbkxpc3QoaW50ZXJmYWNlLT5fcHJv
dG9jb2wsIHJlcXVpcmVkTWV0aG9kcywgdHJ1ZSwgJm1ldGhvZENvdW50KTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtZXRob2RDb3VudDsgKytpKSB7Ci0gICAgICAgIFNFTCBzZWxl
Y3RvciA9IG1ldGhvZHNbaV0ubmFtZTsKLQotICAgICAgICBjb25zdCBjaGFyKiB0eXBlcyA9IF9w
cm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcoaW50ZXJmYWNlLT5fcHJvdG9jb2wsIHNlbGVj
dG9yLCByZXF1aXJlZE1ldGhvZHMsIHRydWUpOwotICAgICAgICBpZiAoIXR5cGVzKQotICAgICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIkNvdWxkIG5vdCBmaW5kIG1ldGhvZCB0eXBlIGVuY29kaW5nIGZvciBtZXRob2QgXCIlc1wi
Iiwgc2VsX2dldE5hbWUoc2VsZWN0b3IpXTsKLQotICAgICAgICBOU01ldGhvZFNpZ25hdHVyZSAq
bWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlw
ZXM6dHlwZXNdOwotICAgICAgICBpbnRlcmZhY2UtPl9hbGxvd2VkQXJndW1lbnRDbGFzc2VzLnNl
dChzZWxlY3RvciwgYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlc0Zvck1ldGhvZChtZXRob2RTaWduYXR1
cmUpKTsKLSAgICB9Ci0KLSAgICBmcmVlKG1ldGhvZHMpOwotfQotCi1zdGF0aWMgdm9pZCBpbml0
aWFsaXplQWxsb3dlZEFyZ3VtZW50Q2xhc3NlcyhXS1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50
ZXJmYWNlKQotewotICAgIGluaXRpYWxpemVBbGxvd2VkQXJndW1lbnRDbGFzc2VzKGludGVyZmFj
ZSwgdHJ1ZSk7Ci0gICAgaW5pdGlhbGl6ZUFsbG93ZWRBcmd1bWVudENsYXNzZXMoaW50ZXJmYWNl
LCBmYWxzZSk7Ci19Ci0KLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KFByb3RvY29sICopcHJvdG9j
b2wgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCi17Ci0gICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfcHJvdG9jb2wgPSBw
cm90b2NvbDsKLSAgICBfaWRlbnRpZmllciA9IFtpZGVudGlmaWVyIGNvcHldOwotCi0gICAgaW5p
dGlhbGl6ZUFsbG93ZWRBcmd1bWVudENsYXNzZXMoc2VsZik7Ci0KLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotKyAoaW5zdGFuY2V0eXBlKXJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDoo
UHJvdG9jb2wgKilwcm90b2NvbAotewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0
aFByb3RvY29sOnByb3RvY29sIGlkZW50aWZpZXI6TlNTdHJpbmdGcm9tUHJvdG9jb2wocHJvdG9j
b2wpXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KLXsKLSAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBwcm90b2NvbCA9
IFwiJUBcIjsgaWRlbnRpZmllciA9IFwiJUBcIj4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNs
YXNzKSwgc2VsZiwgX2lkZW50aWZpZXIsIE5TU3RyaW5nRnJvbVByb3RvY29sKF9wcm90b2NvbCld
OwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5TU2V0PiYgY2xhc3Nlc0ZvclNlbGVjdG9yQXJndW1l
bnQoV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSwgU0VMIHNlbGVjdG9yLCBOU1VJ
bnRlZ2VyIGFyZ3VtZW50SW5kZXgpCi17Ci0gICAgYXV0byBpdCA9IGludGVyZmFjZS0+X2FsbG93
ZWRBcmd1bWVudENsYXNzZXMuZmluZChzZWxlY3Rvcik7Ci0gICAgaWYgKGl0ID09IGludGVyZmFj
ZS0+X2FsbG93ZWRBcmd1bWVudENsYXNzZXMuZW5kKCkpCi0gICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnRlcmZhY2UgZG9lcyBu
b3QgY29udGFpbiBzZWxlY3RvciBcIiVzXCIiLCBzZWxfZ2V0TmFtZShzZWxlY3RvcildOwotCi0g
ICAgaWYgKGFyZ3VtZW50SW5kZXggPj0gaXQtPnZhbHVlLnNpemUoKSkKLSAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkFyZ3VtZW50
IGluZGV4ICVsZCBpcyBvdXQgb2YgcmFuZ2UgZm9yIHNlbGVjdG9yIFwiJXNcIiIsICh1bnNpZ25l
ZCBsb25nKWFyZ3VtZW50SW5kZXgsIHNlbF9nZXROYW1lKHNlbGVjdG9yKV07Ci0KLSAgICByZXR1
cm4gaXQtPnZhbHVlW2FyZ3VtZW50SW5kZXhdOwotfQotCi0tIChOU1NldCAqKWNsYXNzZXNGb3JT
ZWxlY3RvcjooU0VMKXNlbGVjdG9yIGFyZ3VtZW50SW5kZXg6KE5TVUludGVnZXIpYXJndW1lbnRJ
bmRleAotewotICAgIHJldHVybiBbW2NsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KHNlbGYsIHNl
bGVjdG9yLCBhcmd1bWVudEluZGV4KS5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLX0KLQot
LSAodm9pZClzZXRDbGFzc2VzOihOU1NldCAqKWNsYXNzZXMgZm9yU2VsZWN0b3I6KFNFTClzZWxl
Y3RvciBhcmd1bWVudEluZGV4OihOU1VJbnRlZ2VyKWFyZ3VtZW50SW5kZXgKLXsKLSAgICBjbGFz
c2VzRm9yU2VsZWN0b3JBcmd1bWVudChzZWxmLCBzZWxlY3RvciwgYXJndW1lbnRJbmRleCkgPSBh
ZG9wdE5TKFtjbGFzc2VzIGNvcHldKTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIqIG1ldGhvZEFy
Z3VtZW50VHlwZUVuY29kaW5nRm9yU2VsZWN0b3IoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2Vs
ZWN0b3IpCi17Ci0gICAgLy8gRmlyc3QgbG9vayBhdCByZXF1aXJlZCBtZXRob2RzLgotICAgIHN0
cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2RE
ZXNjcmlwdGlvbihwcm90b2NvbCwgc2VsZWN0b3IsIFlFUywgWUVTKTsKLSAgICBpZiAobWV0aG9k
Lm5hbWUpCi0gICAgICAgIHJldHVybiBtZXRob2QudHlwZXM7Ci0KLSAgICAvLyBUaGVuIGxvb2sg
YXQgb3B0aW9uYWwgbWV0aG9kcy4KLSAgICBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2REZXNj
cmlwdGlvbihwcm90b2NvbCwgc2VsZWN0b3IsIE5PLCBZRVMpOwotICAgIGlmIChtZXRob2QubmFt
ZSkKLSAgICAgICAgcmV0dXJuIG1ldGhvZC50eXBlczsKLQotICAgIHJldHVybiBudWxscHRyOwot
fQotCi0tIChOU01ldGhvZFNpZ25hdHVyZSAqKV9tZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcjoo
U0VMKXNlbGVjdG9yCi17Ci0gICAgY29uc3QgY2hhciogdHlwZXMgPSBtZXRob2RBcmd1bWVudFR5
cGVFbmNvZGluZ0ZvclNlbGVjdG9yKF9wcm90b2NvbCwgc2VsZWN0b3IpOwotICAgIGlmICghdHlw
ZXMpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW05TTWV0aG9kU2lnbmF0dXJl
IHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6dHlwZXNdOwotfQotCi0tIChjb25zdCBWZWN0b3I8UmV0
YWluUHRyPE5TU2V0Pj4mKV9hbGxvd2VkQXJndW1lbnRDbGFzc2VzRm9yU2VsZWN0b3I6KFNFTClz
ZWxlY3RvcgotewotICAgIGF1dG8gaXQgPSBfYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlcy5maW5kKHNl
bGVjdG9yKTsKLSAgICBBU1NFUlQoaXQgIT0gX2FsbG93ZWRBcmd1bWVudENsYXNzZXMuZW5kKCkp
OwotCi0gICAgcmV0dXJuIGl0LT52YWx1ZTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBXS1JlbW90ZU9i
amVjdEludGVyZmFjZQogCiBAZW5kCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3YThiZTQ0NTQ0ZTIwZTRkZTZmYTJmZWJmNTY4OWFkYzdjOTE1MjkwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRlcm5hbC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlLmgiCi0KLSNpZiBXS19BUElfRU5BQkxFRAotCi0jaW1wb3J0IDx3dGYvRm9y
d2FyZC5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1AaW50ZXJmYWNlIFdLUmVtb3Rl
T2JqZWN0SW50ZXJmYWNlICgpCi0KLS0gKE5TTWV0aG9kU2lnbmF0dXJlICopX21ldGhvZFNpZ25h
dHVyZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3I7Ci0tIChjb25zdCBWZWN0b3I8UmV0YWluUHRy
PE5TU2V0Pj4mKV9hbGxvd2VkQXJndW1lbnRDbGFzc2VzRm9yU2VsZWN0b3I6KFNFTClzZWxlY3Rv
cjsKLQotQGVuZAotCi0jZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKaW5k
ZXggNjVmNWRiNzk4MmE0MDNhZWY4ZTExMTJmNzFkNjcwNjlhNTM4YzMwZi4uNDE2NTliYWExYmEz
NTNhNjdhMmNkMWYxM2ZhN2E2OGYxZDAxYWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIyICsyMywxMyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPFdl
YktpdDIvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQyL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lmg+CiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KLQotQGNsYXNzIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlOwotCiBXS19BUElf
Q0xBU1MKLUBpbnRlcmZhY2UgV0tSZW1vdGVPYmplY3RSZWdpc3RyeSA6IE5TT2JqZWN0Ci0KLS0g
KHZvaWQpcmVnaXN0ZXJFeHBvcnRlZE9iamVjdDooaWQpb2JqZWN0IGludGVyZmFjZTooV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2UgKilpbnRlcmZhY2U7Ci0tICh2b2lkKXVucmVnaXN0ZXJFeHBvcnRl
ZE9iamVjdDooaWQpb2JqZWN0IGludGVyZmFjZTooV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKilp
bnRlcmZhY2U7Ci0KLS0gKGlkKXJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTooV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2UgKilpbnRlcmZhY2U7CitAaW50ZXJmYWNlIFdLUmVtb3RlT2JqZWN0
UmVnaXN0cnkgOiBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeQogCiBAZW5kCiAKLSNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggMGQ4ZjM1OTZmOGJl
MGI3YzE4YTRlYWMyMzgxZmU4Yzg0MWYwMTMxYS4uM2U5OTdhZTNlMjA0MTI5Y2U0YmY3NDFiMTc0
ZThkODBlY2U2YTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTQ3ICsyNCwxMiBAQAogICovCiAKICNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFs
LmgiCisjaW1wb3J0ICJXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAKICNpZiBXS19BUElfRU5B
QkxFRAogCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJJbW11dGFibGVEaWN0aW9u
YXJ5LmgiCi0jaW1wb3J0ICJNdXRhYmxlRGljdGlvbmFyeS5oIgotI2ltcG9ydCAiUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCIKLSNpbXBvcnQgIlVzZXJEYXRhLmgiCi0jaW1wb3J0ICJXS0Nvbm5lY3Rp
b25SZWYuaCIKLSNpbXBvcnQgIldLUmVtb3RlT2JqZWN0LmgiCi0jaW1wb3J0ICJXS1JlbW90ZU9i
amVjdENvZGVyLmgiCi0jaW1wb3J0ICJXS1JlbW90ZU9iamVjdEludGVyZmFjZS5oIgotI2ltcG9y
dCAiV0tTaGFyZWRBUElDYXN0LmgiCi0jaW1wb3J0ICJXZWJDb25uZWN0aW9uLmgiCi0KLWNvbnN0
IGNoYXIqIGNvbnN0IGVuY29kZWRJbnZvY2F0aW9uS2V5ID0gImVuY29kZWRJbnZvY2F0aW9uIjsK
LWNvbnN0IGNoYXIqIGNvbnN0IGludGVyZmFjZUlkZW50aWZpZXJLZXkgPSAiaW50ZXJmYWNlSWRl
bnRpZmllciI7Ci0KLU5TU3RyaW5nICogY29uc3QgaW52b2NhdGlvbktleSA9IEAiaW52b2NhdGlv
biI7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlT2JqZWN0UmVnaXN0
cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsKLQotICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBf
cmVtb3RlT2JqZWN0UHJveGllczsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFJldGFp
blB0cjxpZD4sIFJldGFpblB0cjxXS1JlbW90ZU9iamVjdEludGVyZmFjZT4+PiBfZXhwb3J0ZWRP
YmplY3RzOwotfQotCi0tICh2b2lkKXJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6KGlkKW9iamVjdCBp
bnRlcmZhY2U6KFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICopaW50ZXJmYWNlCi17Ci0gICAgQVNT
RVJUKCFfZXhwb3J0ZWRPYmplY3RzLmNvbnRhaW5zKGludGVyZmFjZS5pZGVudGlmaWVyKSk7Ci0g
ICAgX2V4cG9ydGVkT2JqZWN0cy5hZGQoaW50ZXJmYWNlLmlkZW50aWZpZXIsIHN0ZDo6bWFrZV9w
YWlyPFJldGFpblB0cjxpZD4sIFJldGFpblB0cjxXS1JlbW90ZU9iamVjdEludGVyZmFjZT4+KG9i
amVjdCwgaW50ZXJmYWNlKSk7Ci19Ci0KLS0gKHZvaWQpdW5yZWdpc3RlckV4cG9ydGVkT2JqZWN0
OihpZClvYmplY3QgaW50ZXJmYWNlOihXS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWludGVyZmFj
ZQotewotICAgIEFTU0VSVChfZXhwb3J0ZWRPYmplY3RzLmdldChpbnRlcmZhY2UuaWRlbnRpZmll
cikuZmlyc3QgPT0gb2JqZWN0KTsKLSAgICBBU1NFUlQoX2V4cG9ydGVkT2JqZWN0cy5nZXQoaW50
ZXJmYWNlLmlkZW50aWZpZXIpLnNlY29uZCA9PSBpbnRlcmZhY2UpOwotCi0gICAgX2V4cG9ydGVk
T2JqZWN0cy5yZW1vdmUoaW50ZXJmYWNlLmlkZW50aWZpZXIpOwotfQotCi0tIChpZClyZW1vdGVP
YmplY3RQcm94eVdpdGhJbnRlcmZhY2U6KFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICopaW50ZXJm
YWNlCi17Ci0gICAgaWYgKCFfcmVtb3RlT2JqZWN0UHJveGllcykKLSAgICAgICAgX3JlbW90ZU9i
amVjdFByb3hpZXMgPSBbTlNNYXBUYWJsZSBzdHJvbmdUb1dlYWtPYmplY3RzTWFwVGFibGVdOwot
Ci0gICAgaWYgKGlkIHJlbW90ZU9iamVjdFByb3h5ID0gW19yZW1vdGVPYmplY3RQcm94aWVzIG9i
amVjdEZvcktleTppbnRlcmZhY2UuaWRlbnRpZmllcl0pCi0gICAgICAgIHJldHVybiByZW1vdGVP
YmplY3RQcm94eTsKLQotICAgIFJldGFpblB0cjxOU1N0cmluZz4gaWRlbnRpZmllciA9IGFkb3B0
TlMoW2ludGVyZmFjZS5pZGVudGlmaWVyIGNvcHldKTsKLSAgICBSZXRhaW5QdHI8V0tSZW1vdGVP
YmplY3Q+IHJlbW90ZU9iamVjdCA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdCBhbGxvY10gX2lu
aXRXaXRoT2JqZWN0UmVnaXN0cnk6c2VsZiBpbnRlcmZhY2U6aW50ZXJmYWNlXSk7Ci0gICAgW19y
ZW1vdGVPYmplY3RQcm94aWVzIHNldE9iamVjdDpyZW1vdGVPYmplY3QuZ2V0KCkgZm9yS2V5Omlk
ZW50aWZpZXIuZ2V0KCldOwotCi0gICAgcmV0dXJuIFtyZW1vdGVPYmplY3QubGVha1JlZigpIGF1
dG9yZWxlYXNlXTsKLX0KLQotLSAoaWQpX2luaXRXaXRoTWVzc2FnZVNlbmRlcjooSVBDOjpNZXNz
YWdlU2VuZGVyJiltZXNzYWdlU2VuZGVyCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBtZXNzYWdlU2VuZGVy
KTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKV9pbnZhbGlkYXRlCi17Ci0gICAg
X3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZClfc2VuZEludm9j
YXRpb246KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24gaW50ZXJmYWNlOihXS1JlbW90ZU9iamVj
dEludGVyZmFjZSAqKWludGVyZmFjZQotewotICAgIFJldGFpblB0cjxXS1JlbW90ZU9iamVjdEVu
Y29kZXI+IGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RFbmNvZGVyIGFsbG9jXSBp
bml0XSk7Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRpb24gZm9yS2V5Omludm9j
YXRpb25LZXldOwotCi0gICAgUmVmUHRyPE11dGFibGVEaWN0aW9uYXJ5PiBib2R5ID0gTXV0YWJs
ZURpY3Rpb25hcnk6OmNyZWF0ZSgpOwotICAgIGJvZHktPnNldChpbnRlcmZhY2VJZGVudGlmaWVy
S2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKGludGVyZmFjZS5pZGVudGlmaWVyKSk7Ci0gICAgYm9k
eS0+c2V0KGVuY29kZWRJbnZvY2F0aW9uS2V5LCBbZW5jb2RlciByb290T2JqZWN0RGljdGlvbmFy
eV0pOwotCi0gICAgaWYgKCFfcmVtb3RlT2JqZWN0UmVnaXN0cnkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeS0+c2VuZEludm9jYXRpb24oVXNlckRhdGEoYm9k
eS5nZXQoKSkpOwotfQotCi0tIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5JilyZW1vdGVP
YmplY3RSZWdpc3RyeQotewotICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwotfQot
Ci0tIChCT09MKV9pbnZva2VNZXRob2Q6KGNvbnN0IFVzZXJEYXRhJilpbnZvY2F0aW9uCi17Ci0g
ICAgaWYgKCFpbnZvY2F0aW9uLm9iamVjdCgpIHx8IGludm9jYXRpb24ub2JqZWN0KCktPnR5cGUo
KSAhPSBBUEk6Ok9iamVjdDo6VHlwZTo6RGljdGlvbmFyeSkKLSAgICAgICAgcmV0dXJuIE5POwot
ICAgIAotICAgIGNvbnN0IEltbXV0YWJsZURpY3Rpb25hcnkmIGRpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxjb25zdCBJbW11dGFibGVEaWN0aW9uYXJ5Jj4oKmludm9jYXRpb24ub2JqZWN0KCkpOwot
Ci0gICAgQVBJOjpTdHJpbmcqIGludGVyZmFjZUlkZW50aWZpZXIgPSBkaWN0aW9uYXJ5LmdldDxB
UEk6OlN0cmluZz4oaW50ZXJmYWNlSWRlbnRpZmllcktleSk7Ci0gICAgaWYgKCFpbnRlcmZhY2VJ
ZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBjb25zdCBJbW11dGFibGVEaWN0
aW9uYXJ5KiBlbmNvZGVkSW52b2NhdGlvbiA9IGRpY3Rpb25hcnkuZ2V0PEltbXV0YWJsZURpY3Rp
b25hcnk+KGVuY29kZWRJbnZvY2F0aW9uS2V5KTsKLSAgICBpZiAoIWVuY29kZWRJbnZvY2F0aW9u
S2V5KQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBbc2VsZiBfaW52b2tlTWVzc2FnZVdpdGhJ
bnRlcmZhY2VJZGVudGlmaWVyOmludGVyZmFjZUlkZW50aWZpZXItPnN0cmluZygpIGVuY29kZWRJ
bnZvY2F0aW9uOmVuY29kZWRJbnZvY2F0aW9uXTsKLQotICAgIHJldHVybiBZRVM7Ci19Ci0KLS0g
KHZvaWQpX2ludm9rZU1lc3NhZ2VXaXRoSW50ZXJmYWNlSWRlbnRpZmllcjooY29uc3QgU3RyaW5n
JilpbnRlcmZhY2VJZGVudGlmaWVyIGVuY29kZWRJbnZvY2F0aW9uOihjb25zdCBJbW11dGFibGVE
aWN0aW9uYXJ5KillbmNvZGVkSW52b2NhdGlvbgotewotICAgIGF1dG8gaW50ZXJmYWNlQW5kT2Jq
ZWN0ID0gX2V4cG9ydGVkT2JqZWN0cy5nZXQoaW50ZXJmYWNlSWRlbnRpZmllcik7Ci0gICAgaWYg
KCFpbnRlcmZhY2VBbmRPYmplY3Quc2Vjb25kKSB7Ci0gICAgICAgIE5TTG9nKEAiRGlkIG5vdCBm
aW5kIGEgcmVnaXN0ZXJlZCBvYmplY3QgZm9yIHRoZSBpbnRlcmZhY2UgXCIlQFwiIiwgKE5TU3Ry
aW5nICopaW50ZXJmYWNlSWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBSZXRhaW5QdHI8V0tSZW1vdGVPYmplY3REZWNvZGVyPiBkZWNvZGVyID0gYWRvcHROUyhbW1dL
UmVtb3RlT2JqZWN0RGVjb2RlciBhbGxvY10gaW5pdFdpdGhJbnRlcmZhY2U6aW50ZXJmYWNlQW5k
T2JqZWN0LnNlY29uZC5nZXQoKSByb290T2JqZWN0RGljdGlvbmFyeTplbmNvZGVkSW52b2NhdGlv
bl0pOwotCi0gICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gbmlsOwotCi0gICAgQHRyeSB7
Ci0gICAgICAgIGludm9jYXRpb24gPSBbZGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU0lu
dm9jYXRpb24gY2xhc3NdIGZvcktleTppbnZvY2F0aW9uS2V5XTsKLSAgICB9IEBjYXRjaCAoTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBOU0xvZyhAIkV4Y2VwdGlvbiBjYXVnaHQg
ZHVyaW5nIGRlY29kaW5nIG9mIG1lc3NhZ2U6ICVAIiwgZXhjZXB0aW9uKTsKLSAgICB9Ci0KLSAg
ICBpbnZvY2F0aW9uLnRhcmdldCA9IGludGVyZmFjZUFuZE9iamVjdC5maXJzdC5nZXQoKTsKLQot
ICAgIEB0cnkgewotICAgICAgICBbaW52b2NhdGlvbiBpbnZva2VdOwotICAgIH0gQGNhdGNoIChO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIE5TTG9nKEAiJUA6IFdhcm5pbmc6IEV4
Y2VwdGlvbiBjYXVnaHQgZHVyaW5nIGludm9jYXRpb24gb2YgcmVjZWl2ZWQgbWVzc2FnZSwgZHJv
cHBpbmcgaW5jb21pbmcgbWVzc2FnZSAuXG5FeGNlcHRpb246ICVAIiwgc2VsZiwgZXhjZXB0aW9u
KTsKLSAgICB9Ci19CitAaW1wbGVtZW50YXRpb24gV0tSZW1vdGVPYmplY3RSZWdpc3RyeQogCiBA
ZW5kCiAKLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5SW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FkMmVmMjgzNmI2
MGFhMDg2NmFhOTY3YjQ2ZDNiZjJiMGI0NGY3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgIldLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKLQotI2lm
IFdLX0FQSV9FTkFCTEVECi0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgTWVzc2FnZVNlbmRlcjsK
LX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBSZW1vdGVPYmplY3RSZWdpc3RyeTsKLWNs
YXNzIFVzZXJEYXRhOwotfQotCi1AaW50ZXJmYWNlIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKCkK
LQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXZWJLaXQ6OlJlbW90ZU9iamVjdFJl
Z2lzdHJ5JiByZW1vdGVPYmplY3RSZWdpc3RyeTsKLQotLSAoaWQpX2luaXRXaXRoTWVzc2FnZVNl
bmRlcjooSVBDOjpNZXNzYWdlU2VuZGVyJiltZXNzYWdlU2VuZGVyOwotLSAodm9pZClfaW52YWxp
ZGF0ZTsKLQotLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9jYXRp
b24gaW50ZXJmYWNlOihXS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWludGVyZmFjZTsKLS0gKEJP
T0wpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpVc2VyRGF0YSYpaW52b2NhdGlvbjsKLQot
QGVuZAotCi0jZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE3YWEyMjdhMGRiNDk3YjczNWE5NWExY2Y3Njk0YTIyNTA5ZGJjOGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dEludGVyZmFjZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJL
aXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK1dLX0FQSV9DTEFTUworQGludGVyZmFjZSBfV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2UgOiBOU09iamVjdAorCisrIChpbnN0YW5jZXR5cGUpcmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOihQcm90b2NvbCAqKXByb3RvY29sOworCistIChpZClp
bml0V2l0aFByb3RvY29sOihQcm90b2NvbCAqKXByb3RvY29sIGlkZW50aWZpZXI6KE5TU3RyaW5n
ICopaWRlbnRpZmllcjsKKworQHByb3BlcnR5IChyZWFkb25seSkgUHJvdG9jb2wgKnByb3RvY29s
OworQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcgKmlkZW50aWZpZXI7CisKKy0gKE5TU2V0
ICopY2xhc3Nlc0ZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IgYXJndW1lbnRJbmRleDooTlNVSW50
ZWdlcilhcmd1bWVudEluZGV4OworLSAodm9pZClzZXRDbGFzc2VzOihOU1NldCAqKWNsYXNzZXMg
Zm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvciBhcmd1bWVudEluZGV4OihOU1VJbnRlZ2VyKWFyZ3Vt
ZW50SW5kZXg7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0ZDQxOTU0NTE1OTM0MDI2MTc2MDFjZjBlNWJiNTY0YjBl
MzAzNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29h
L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNp
bXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKK2V4dGVybiAiQyIKK2NvbnN0IGNoYXIgKl9wcm90b2NvbF9nZXRN
ZXRob2RUeXBlRW5jb2RpbmcoUHJvdG9jb2wgKnAsIFNFTCBzZWwsIEJPT0wgaXNSZXF1aXJlZE1l
dGhvZCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kKTsKKworQGludGVyZmFjZSBOU01ldGhvZFNpZ25h
dHVyZSAoV0tEZXRhaWxzKQorLSAoQ2xhc3MpX2NsYXNzRm9yT2JqZWN0QXRBcmd1bWVudEluZGV4
OihOU0ludGVnZXIpaWR4OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gX1dLUmVtb3RlT2JqZWN0
SW50ZXJmYWNlIHsKKyAgICBIYXNoTWFwPFNFTCwgVmVjdG9yPFJldGFpblB0cjxOU1NldD4+PiBf
YWxsb3dlZEFyZ3VtZW50Q2xhc3NlczsKK30KKworc3RhdGljIGJvb2wgaXNDb250YWluZXJDbGFz
cyhDbGFzcyBvYmplY3RDbGFzcykKK3sKKyAgICAvLyBGSVhNRTogQWRkIG1vcmUgY2xhc3NlcyBo
ZXJlIGlmIG5lZWRlZC4KKyAgICBzdGF0aWMgTlNTZXQgKmNvbnRhaW5lckNsYXNzZXMgPSBbW05T
U2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6W05TQXJyYXkgY2xhc3NdLCBbTlNEaWN0aW9uYXJ5
IGNsYXNzXSwgbmlsXTsKKworICAgIHJldHVybiBbY29udGFpbmVyQ2xhc3NlcyBjb250YWluc09i
amVjdDpvYmplY3RDbGFzc107Cit9CisKK3N0YXRpYyBOU1NldCAqcHJvcGVydHlMaXN0Q2xhc3Nl
cygpCit7CisgICAgLy8gRklYTUU6IEFkZCBtb3JlIHByb3BlcnR5IGxpc3QgY2xhc3NlcyBpZiBu
ZWVkZWQuCisgICAgc3RhdGljIE5TU2V0ICpwcm9wZXJ0eUxpc3RDbGFzc2VzID0gW1tOU1NldCBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOltOU0FycmF5IGNsYXNzXSwgW05TRGljdGlvbmFyeSBjbGFz
c10sIFtOU051bWJlciBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIG5pbF07CisKKyAgICByZXR1
cm4gcHJvcGVydHlMaXN0Q2xhc3NlczsKK30KKworc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8TlNT
ZXQ+PiBhbGxvd2VkQXJndW1lbnRDbGFzc2VzRm9yTWV0aG9kKE5TTWV0aG9kU2lnbmF0dXJlICpt
ZXRob2RTaWduYXR1cmUpCit7CisgICAgVmVjdG9yPFJldGFpblB0cjxOU1NldD4+IHJlc3VsdDsK
KworICAgIE5TU2V0ICplbXB0eVNldCA9IFtOU1NldCBzZXRdOworCisgICAgLy8gV2UgaWdub3Jl
IHNlbGYgYW5kIF9jbWQuCisgICAgTlNVSW50ZWdlciBhcmd1bWVudENvdW50ID0gbWV0aG9kU2ln
bmF0dXJlLm51bWJlck9mQXJndW1lbnRzIC0gMjsKKworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOworCisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgYXJndW1lbnRDb3VudDsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIHR5cGUgPSBbbWV0
aG9kU2lnbmF0dXJlIGdldEFyZ3VtZW50VHlwZUF0SW5kZXg6aSArIDJdOworCisgICAgICAgIGlm
ICgqdHlwZSAhPSAnQCcpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBub24tb2JqZWN0IHR5
cGU7IHdlIHdvbid0IGFsbG93IGFueSBjbGFzc2VzIHRvIGJlIGRlY29kZWQgZm9yIGl0LgorICAg
ICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChlbXB0eVNldCk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIENsYXNzIG9iamVjdENsYXNzID0gW21ldGhv
ZFNpZ25hdHVyZSBfY2xhc3NGb3JPYmplY3RBdEFyZ3VtZW50SW5kZXg6aSArIDJdOworICAgICAg
ICBpZiAoIW9iamVjdENsYXNzKSB7CisgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5k
KGVtcHR5U2V0KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGlzQ29udGFpbmVyQ2xhc3Mob2JqZWN0Q2xhc3MpKSB7CisgICAgICAgICAgICAvLyBGb3Ig
Y29udGFpbmVyIGNsYXNzZXMsIHdlIGFsbG93IGFsbCBzaW1wbGUgcHJvcGVydHkgbGlzdCBjbGFz
c2VzLgorICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChwcm9wZXJ0eUxpc3RDbGFz
c2VzKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICByZXN1
bHQudW5jaGVja2VkQXBwZW5kKFtOU1NldCBzZXRXaXRoT2JqZWN0Om9iamVjdENsYXNzXSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUFs
bG93ZWRBcmd1bWVudENsYXNzZXMoX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2Us
IGJvb2wgcmVxdWlyZWRNZXRob2RzKQoreworICAgIHVuc2lnbmVkIG1ldGhvZENvdW50OworICAg
IHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiAqbWV0aG9kcyA9IHByb3RvY29sX2NvcHlN
ZXRob2REZXNjcmlwdGlvbkxpc3QoaW50ZXJmYWNlLT5fcHJvdG9jb2wsIHJlcXVpcmVkTWV0aG9k
cywgdHJ1ZSwgJm1ldGhvZENvdW50KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
ZXRob2RDb3VudDsgKytpKSB7CisgICAgICAgIFNFTCBzZWxlY3RvciA9IG1ldGhvZHNbaV0ubmFt
ZTsKKworICAgICAgICBjb25zdCBjaGFyKiB0eXBlcyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBl
RW5jb2RpbmcoaW50ZXJmYWNlLT5fcHJvdG9jb2wsIHNlbGVjdG9yLCByZXF1aXJlZE1ldGhvZHMs
IHRydWUpOworICAgICAgICBpZiAoIXR5cGVzKQorICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNvdWxkIG5vdCBmaW5kIG1l
dGhvZCB0eXBlIGVuY29kaW5nIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsX2dldE5hbWUoc2VsZWN0
b3IpXTsKKworICAgICAgICBOU01ldGhvZFNpZ25hdHVyZSAqbWV0aG9kU2lnbmF0dXJlID0gW05T
TWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6dHlwZXNdOworICAgICAgICBp
bnRlcmZhY2UtPl9hbGxvd2VkQXJndW1lbnRDbGFzc2VzLnNldChzZWxlY3RvciwgYWxsb3dlZEFy
Z3VtZW50Q2xhc3Nlc0Zvck1ldGhvZChtZXRob2RTaWduYXR1cmUpKTsKKyAgICB9CisKKyAgICBm
cmVlKG1ldGhvZHMpOworfQorCitzdGF0aWMgdm9pZCBpbml0aWFsaXplQWxsb3dlZEFyZ3VtZW50
Q2xhc3NlcyhfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSkKK3sKKyAgICBpbml0
aWFsaXplQWxsb3dlZEFyZ3VtZW50Q2xhc3NlcyhpbnRlcmZhY2UsIHRydWUpOworICAgIGluaXRp
YWxpemVBbGxvd2VkQXJndW1lbnRDbGFzc2VzKGludGVyZmFjZSwgZmFsc2UpOworfQorCistIChp
ZClpbml0V2l0aFByb3RvY29sOihQcm90b2NvbCAqKXByb3RvY29sIGlkZW50aWZpZXI6KE5TU3Ry
aW5nICopaWRlbnRpZmllcgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX3Byb3RvY29sID0gcHJvdG9jb2w7CisgICAgX2lkZW50
aWZpZXIgPSBbaWRlbnRpZmllciBjb3B5XTsKKworICAgIGluaXRpYWxpemVBbGxvd2VkQXJndW1l
bnRDbGFzc2VzKHNlbGYpOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKGluc3RhbmNldHlw
ZSlyZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6KFByb3RvY29sICopcHJvdG9jb2wK
K3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhQcm90b2NvbDpwcm90b2NvbCBp
ZGVudGlmaWVyOk5TU3RyaW5nRnJvbVByb3RvY29sKHByb3RvY29sKV0gYXV0b3JlbGVhc2VdOwor
fQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgcHJvdG9jb2wgPSBcIiVAXCI7IGlkZW50aWZpZXIg
PSBcIiVAXCI+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsIF9pZGVudGlm
aWVyLCBOU1N0cmluZ0Zyb21Qcm90b2NvbChfcHJvdG9jb2wpXTsKK30KKworc3RhdGljIFJldGFp
blB0cjxOU1NldD4mIGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KF9XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSAqaW50ZXJmYWNlLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYXJndW1lbnRJbmRl
eCkKK3sKKyAgICBhdXRvIGl0ID0gaW50ZXJmYWNlLT5fYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlcy5m
aW5kKHNlbGVjdG9yKTsKKyAgICBpZiAoaXQgPT0gaW50ZXJmYWNlLT5fYWxsb3dlZEFyZ3VtZW50
Q2xhc3Nlcy5lbmQoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3Vt
ZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludGVyZmFjZSBkb2VzIG5vdCBjb250YWluIHNlbGVjdG9y
IFwiJXNcIiIsIHNlbF9nZXROYW1lKHNlbGVjdG9yKV07CisKKyAgICBpZiAoYXJndW1lbnRJbmRl
eCA+PSBpdC0+dmFsdWUuc2l6ZSgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXJndW1lbnQgaW5kZXggJWxkIGlzIG91dCBv
ZiByYW5nZSBmb3Igc2VsZWN0b3IgXCIlc1wiIiwgKHVuc2lnbmVkIGxvbmcpYXJndW1lbnRJbmRl
eCwgc2VsX2dldE5hbWUoc2VsZWN0b3IpXTsKKworICAgIHJldHVybiBpdC0+dmFsdWVbYXJndW1l
bnRJbmRleF07Cit9CisKKy0gKE5TU2V0ICopY2xhc3Nlc0ZvclNlbGVjdG9yOihTRUwpc2VsZWN0
b3IgYXJndW1lbnRJbmRleDooTlNVSW50ZWdlcilhcmd1bWVudEluZGV4Cit7CisgICAgcmV0dXJu
IFtbY2xhc3Nlc0ZvclNlbGVjdG9yQXJndW1lbnQoc2VsZiwgc2VsZWN0b3IsIGFyZ3VtZW50SW5k
ZXgpLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworfQorCistICh2b2lkKXNldENsYXNzZXM6
KE5TU2V0ICopY2xhc3NlcyBmb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yIGFyZ3VtZW50SW5kZXg6
KE5TVUludGVnZXIpYXJndW1lbnRJbmRleAoreworICAgIGNsYXNzZXNGb3JTZWxlY3RvckFyZ3Vt
ZW50KHNlbGYsIHNlbGVjdG9yLCBhcmd1bWVudEluZGV4KSA9IGFkb3B0TlMoW2NsYXNzZXMgY29w
eV0pOworfQorCitzdGF0aWMgY29uc3QgY2hhciogbWV0aG9kQXJndW1lbnRUeXBlRW5jb2RpbmdG
b3JTZWxlY3RvcihQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvcikKK3sKKyAgICAvLyBG
aXJzdCBsb29rIGF0IHJlcXVpcmVkIG1ldGhvZHMuCisgICAgc3RydWN0IG9iamNfbWV0aG9kX2Rl
c2NyaXB0aW9uIG1ldGhvZCA9IHByb3RvY29sX2dldE1ldGhvZERlc2NyaXB0aW9uKHByb3RvY29s
LCBzZWxlY3RvciwgWUVTLCBZRVMpOworICAgIGlmIChtZXRob2QubmFtZSkKKyAgICAgICAgcmV0
dXJuIG1ldGhvZC50eXBlczsKKworICAgIC8vIFRoZW4gbG9vayBhdCBvcHRpb25hbCBtZXRob2Rz
LgorICAgIG1ldGhvZCA9IHByb3RvY29sX2dldE1ldGhvZERlc2NyaXB0aW9uKHByb3RvY29sLCBz
ZWxlY3RvciwgTk8sIFlFUyk7CisgICAgaWYgKG1ldGhvZC5uYW1lKQorICAgICAgICByZXR1cm4g
bWV0aG9kLnR5cGVzOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKy0gKE5TTWV0aG9kU2ln
bmF0dXJlICopX21ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IKK3sKKyAg
ICBjb25zdCBjaGFyKiB0eXBlcyA9IG1ldGhvZEFyZ3VtZW50VHlwZUVuY29kaW5nRm9yU2VsZWN0
b3IoX3Byb3RvY29sLCBzZWxlY3Rvcik7CisgICAgaWYgKCF0eXBlcykKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNU
eXBlczp0eXBlc107Cit9CisKKy0gKGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8TlNTZXQ+PiYpX2Fs
bG93ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7CisgICAgYXV0
byBpdCA9IF9hbGxvd2VkQXJndW1lbnRDbGFzc2VzLmZpbmQoc2VsZWN0b3IpOworICAgIEFTU0VS
VChpdCAhPSBfYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlcy5lbmQoKSk7CisKKyAgICByZXR1cm4gaXQt
PnZhbHVlOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZh
Y2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MmVjYmIwZGJmMDAyYTE3MTA1
ODQ0NTVjOTMxOGY1YTBmYjkxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmgKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdEludGVyZmFj
ZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBfV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UgKCkKKworLSAoTlNNZXRob2RTaWduYXR1cmUgKilfbWV0aG9kU2lnbmF0dXJlRm9yU2Vs
ZWN0b3I6KFNFTClzZWxlY3RvcjsKKy0gKGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8TlNTZXQ+PiYp
X2FsbG93ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yOworCitAZW5k
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5MDYyMDJmZWMwNTljN2M1ZTY5ZjlkZWJkZGFlNjFhMGI4ZGVjMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdDIvV0tG
b3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZTsKKworV0tf
QVBJX0NMQVNTCitAaW50ZXJmYWNlIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IDogTlNPYmplY3QK
KworLSAodm9pZClyZWdpc3RlckV4cG9ydGVkT2JqZWN0OihpZClvYmplY3QgaW50ZXJmYWNlOihf
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKilpbnRlcmZhY2U7CistICh2b2lkKXVucmVnaXN0ZXJF
eHBvcnRlZE9iamVjdDooaWQpb2JqZWN0IGludGVyZmFjZTooX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlICopaW50ZXJmYWNlOworCistIChpZClyZW1vdGVPYmplY3RQcm94eVdpdGhJbnRlcmZhY2U6
KF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWludGVyZmFjZTsKKworQGVuZAorCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMjA2NDg2
OWM4YmZhYjRhNDM3NDZjY2NiMTY4MDUyODdhY2MyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBA
IC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCisjaW1wb3J0ICJDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJJbW11dGFibGVEaWN0aW9uYXJ5
LmgiCisjaW1wb3J0ICJNdXRhYmxlRGljdGlvbmFyeS5oIgorI2ltcG9ydCAiUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCIKKyNpbXBvcnQgIlVzZXJEYXRhLmgiCisjaW1wb3J0ICJXS0Nvbm5lY3Rpb25S
ZWYuaCIKKyNpbXBvcnQgIldLUmVtb3RlT2JqZWN0LmgiCisjaW1wb3J0ICJXS1JlbW90ZU9iamVj
dENvZGVyLmgiCisjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbXBvcnQgIldlYkNvbm5l
Y3Rpb24uaCIKKyNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oIgorCitjb25zdCBj
aGFyKiBjb25zdCBlbmNvZGVkSW52b2NhdGlvbktleSA9ICJlbmNvZGVkSW52b2NhdGlvbiI7Citj
b25zdCBjaGFyKiBjb25zdCBpbnRlcmZhY2VJZGVudGlmaWVyS2V5ID0gImludGVyZmFjZUlkZW50
aWZpZXIiOworCitOU1N0cmluZyAqIGNvbnN0IGludm9jYXRpb25LZXkgPSBAImludm9jYXRpb24i
OworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1wbGVtZW50YXRpb24gX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVPYmplY3RSZWdpc3Ry
eT4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OworCisgICAgUmV0YWluUHRyPE5TTWFwVGFibGU+IF9y
ZW1vdGVPYmplY3RQcm94aWVzOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8UmV0YWlu
UHRyPGlkPiwgUmV0YWluUHRyPF9XS1JlbW90ZU9iamVjdEludGVyZmFjZT4+PiBfZXhwb3J0ZWRP
YmplY3RzOworfQorCistICh2b2lkKXJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6KGlkKW9iamVjdCBp
bnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWludGVyZmFjZQoreworICAgIEFT
U0VSVCghX2V4cG9ydGVkT2JqZWN0cy5jb250YWlucyhpbnRlcmZhY2UuaWRlbnRpZmllcikpOwor
ICAgIF9leHBvcnRlZE9iamVjdHMuYWRkKGludGVyZmFjZS5pZGVudGlmaWVyLCBzdGQ6Om1ha2Vf
cGFpcjxSZXRhaW5QdHI8aWQ+LCBSZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlPj4o
b2JqZWN0LCBpbnRlcmZhY2UpKTsKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXhwb3J0ZWRPYmpl
Y3Q6KGlkKW9iamVjdCBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWludGVy
ZmFjZQoreworICAgIEFTU0VSVChfZXhwb3J0ZWRPYmplY3RzLmdldChpbnRlcmZhY2UuaWRlbnRp
ZmllcikuZmlyc3QgPT0gb2JqZWN0KTsKKyAgICBBU1NFUlQoX2V4cG9ydGVkT2JqZWN0cy5nZXQo
aW50ZXJmYWNlLmlkZW50aWZpZXIpLnNlY29uZCA9PSBpbnRlcmZhY2UpOworCisgICAgX2V4cG9y
dGVkT2JqZWN0cy5yZW1vdmUoaW50ZXJmYWNlLmlkZW50aWZpZXIpOworfQorCistIChpZClyZW1v
dGVPYmplY3RQcm94eVdpdGhJbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqKWlu
dGVyZmFjZQoreworICAgIGlmICghX3JlbW90ZU9iamVjdFByb3hpZXMpCisgICAgICAgIF9yZW1v
dGVPYmplY3RQcm94aWVzID0gW05TTWFwVGFibGUgc3Ryb25nVG9XZWFrT2JqZWN0c01hcFRhYmxl
XTsKKworICAgIGlmIChpZCByZW1vdGVPYmplY3RQcm94eSA9IFtfcmVtb3RlT2JqZWN0UHJveGll
cyBvYmplY3RGb3JLZXk6aW50ZXJmYWNlLmlkZW50aWZpZXJdKQorICAgICAgICByZXR1cm4gcmVt
b3RlT2JqZWN0UHJveHk7CisKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGlkZW50aWZpZXIgPSBh
ZG9wdE5TKFtpbnRlcmZhY2UuaWRlbnRpZmllciBjb3B5XSk7CisgICAgUmV0YWluUHRyPFdLUmVt
b3RlT2JqZWN0PiByZW1vdGVPYmplY3QgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3QgYWxsb2Nd
IF9pbml0V2l0aE9iamVjdFJlZ2lzdHJ5OnNlbGYgaW50ZXJmYWNlOmludGVyZmFjZV0pOworICAg
IFtfcmVtb3RlT2JqZWN0UHJveGllcyBzZXRPYmplY3Q6cmVtb3RlT2JqZWN0LmdldCgpIGZvcktl
eTppZGVudGlmaWVyLmdldCgpXTsKKworICAgIHJldHVybiBbcmVtb3RlT2JqZWN0LmxlYWtSZWYo
KSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKV9pbml0V2l0aE1lc3NhZ2VTZW5kZXI6KElQQzo6
TWVzc2FnZVNlbmRlciYpbWVzc2FnZVNlbmRlcgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgbWVzc2FnZVNl
bmRlcik7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClfaW52YWxpZGF0ZQorewor
ICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG51bGxwdHI7Cit9CisKKy0gKHZvaWQpX3NlbmRJ
bnZvY2F0aW9uOihOU0ludm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3Rl
T2JqZWN0SW50ZXJmYWNlICopaW50ZXJmYWNlCit7CisgICAgUmV0YWluUHRyPFdLUmVtb3RlT2Jq
ZWN0RW5jb2Rlcj4gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6aW52b2NhdGlvbiBmb3JLZXk6
aW52b2NhdGlvbktleV07CisKKyAgICBSZWZQdHI8TXV0YWJsZURpY3Rpb25hcnk+IGJvZHkgPSBN
dXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKCk7CisgICAgYm9keS0+c2V0KGludGVyZmFjZUlkZW50
aWZpZXJLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoaW50ZXJmYWNlLmlkZW50aWZpZXIpKTsKKyAg
ICBib2R5LT5zZXQoZW5jb2RlZEludm9jYXRpb25LZXksIFtlbmNvZGVyIHJvb3RPYmplY3REaWN0
aW9uYXJ5XSk7CisKKyAgICBpZiAoIV9yZW1vdGVPYmplY3RSZWdpc3RyeSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LT5zZW5kSW52b2NhdGlvbihVc2VyRGF0
YShib2R5LmdldCgpKSk7Cit9CisKKy0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJl
bW90ZU9iamVjdFJlZ2lzdHJ5Cit7CisgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7
Cit9CisKKy0gKEJPT0wpX2ludm9rZU1ldGhvZDooY29uc3QgVXNlckRhdGEmKWludm9jYXRpb24K
K3sKKyAgICBpZiAoIWludm9jYXRpb24ub2JqZWN0KCkgfHwgaW52b2NhdGlvbi5vYmplY3QoKS0+
dHlwZSgpICE9IEFQSTo6T2JqZWN0OjpUeXBlOjpEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm4g
Tk87CisgICAgCisgICAgY29uc3QgSW1tdXRhYmxlRGljdGlvbmFyeSYgZGljdGlvbmFyeSA9IHN0
YXRpY19jYXN0PGNvbnN0IEltbXV0YWJsZURpY3Rpb25hcnkmPigqaW52b2NhdGlvbi5vYmplY3Qo
KSk7CisKKyAgICBBUEk6OlN0cmluZyogaW50ZXJmYWNlSWRlbnRpZmllciA9IGRpY3Rpb25hcnku
Z2V0PEFQSTo6U3RyaW5nPihpbnRlcmZhY2VJZGVudGlmaWVyS2V5KTsKKyAgICBpZiAoIWludGVy
ZmFjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGNvbnN0IEltbXV0YWJs
ZURpY3Rpb25hcnkqIGVuY29kZWRJbnZvY2F0aW9uID0gZGljdGlvbmFyeS5nZXQ8SW1tdXRhYmxl
RGljdGlvbmFyeT4oZW5jb2RlZEludm9jYXRpb25LZXkpOworICAgIGlmICghZW5jb2RlZEludm9j
YXRpb25LZXkpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIFtzZWxmIF9pbnZva2VNZXNzYWdl
V2l0aEludGVyZmFjZUlkZW50aWZpZXI6aW50ZXJmYWNlSWRlbnRpZmllci0+c3RyaW5nKCkgZW5j
b2RlZEludm9jYXRpb246ZW5jb2RlZEludm9jYXRpb25dOworCisgICAgcmV0dXJuIFlFUzsKK30K
KworLSAodm9pZClfaW52b2tlTWVzc2FnZVdpdGhJbnRlcmZhY2VJZGVudGlmaWVyOihjb25zdCBT
dHJpbmcmKWludGVyZmFjZUlkZW50aWZpZXIgZW5jb2RlZEludm9jYXRpb246KGNvbnN0IEltbXV0
YWJsZURpY3Rpb25hcnkqKWVuY29kZWRJbnZvY2F0aW9uCit7CisgICAgYXV0byBpbnRlcmZhY2VB
bmRPYmplY3QgPSBfZXhwb3J0ZWRPYmplY3RzLmdldChpbnRlcmZhY2VJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWludGVyZmFjZUFuZE9iamVjdC5zZWNvbmQpIHsKKyAgICAgICAgTlNMb2coQCJEaWQg
bm90IGZpbmQgYSByZWdpc3RlcmVkIG9iamVjdCBmb3IgdGhlIGludGVyZmFjZSBcIiVAXCIiLCAo
TlNTdHJpbmcgKilpbnRlcmZhY2VJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJldGFpblB0cjxXS1JlbW90ZU9iamVjdERlY29kZXI+IGRlY29kZXIgPSBhZG9wdE5T
KFtbV0tSZW1vdGVPYmplY3REZWNvZGVyIGFsbG9jXSBpbml0V2l0aEludGVyZmFjZTppbnRlcmZh
Y2VBbmRPYmplY3Quc2Vjb25kLmdldCgpIHJvb3RPYmplY3REaWN0aW9uYXJ5OmVuY29kZWRJbnZv
Y2F0aW9uXSk7CisKKyAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBuaWw7CisKKyAgICBA
dHJ5IHsKKyAgICAgICAgaW52b2NhdGlvbiA9IFtkZWNvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6
W05TSW52b2NhdGlvbiBjbGFzc10gZm9yS2V5Omludm9jYXRpb25LZXldOworICAgIH0gQGNhdGNo
IChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIE5TTG9nKEAiRXhjZXB0aW9uIGNh
dWdodCBkdXJpbmcgZGVjb2Rpbmcgb2YgbWVzc2FnZTogJUAiLCBleGNlcHRpb24pOworICAgIH0K
KworICAgIGludm9jYXRpb24udGFyZ2V0ID0gaW50ZXJmYWNlQW5kT2JqZWN0LmZpcnN0LmdldCgp
OworCisgICAgQHRyeSB7CisgICAgICAgIFtpbnZvY2F0aW9uIGludm9rZV07CisgICAgfSBAY2F0
Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgTlNMb2coQCIlQDogV2Fybmlu
ZzogRXhjZXB0aW9uIGNhdWdodCBkdXJpbmcgaW52b2NhdGlvbiBvZiByZWNlaXZlZCBtZXNzYWdl
LCBkcm9wcGluZyBpbmNvbWluZyBtZXNzYWdlIC5cbkV4Y2VwdGlvbjogJUAiLCBzZWxmLCBleGNl
cHRpb24pOworICAgIH0KK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnlJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE4OWNkODJkMDJjNjA0
OGUzMjE3NTE4MmZkMjA2YTM4OTc2YjYyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBN
ZXNzYWdlU2VuZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFJlbW90ZU9iamVj
dFJlZ2lzdHJ5OworY2xhc3MgVXNlckRhdGE7Cit9CisKK0BpbnRlcmZhY2UgX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgKCkKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXZWJLaXQ6
OlJlbW90ZU9iamVjdFJlZ2lzdHJ5JiByZW1vdGVPYmplY3RSZWdpc3RyeTsKKworLSAoaWQpX2lu
aXRXaXRoTWVzc2FnZVNlbmRlcjooSVBDOjpNZXNzYWdlU2VuZGVyJiltZXNzYWdlU2VuZGVyOwor
LSAodm9pZClfaW52YWxpZGF0ZTsKKworLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2Nh
dGlvbiAqKWludm9jYXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKilp
bnRlcmZhY2U7CistIChCT09MKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6VXNlckRhdGEm
KWludm9jYXRpb247CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDM0M2M2YTk0OGI5YTI2YTY5MjJiYjlmYmFi
OWJlMzU2MDVmY2JmY2YuLmQzMWM3OTA5YzBkMWJiODdiNjY1ZmZlZTMyNGIyZDcwMjFmZTUxZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC00OSw3ICs0OSw2IEBACiAj
aW1wb3J0ICJXS05TVVJMUHJvdGVjdGlvblNwYWNlLmgiCiAjaW1wb3J0ICJXS1BhZ2VQb2xpY3lD
bGllbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQcm9jZXNzR3JvdXBQcml2YXRlLmgiCi0jaW1w
b3J0ICJXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUmVuZGVy
aW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tSZXRhaW5QdHIuaCIKICNp
bXBvcnQgIldLVVJMUmVxdWVzdE5TLmgiCkBAIC01OCw2ICs1Nyw3IEBACiAjaW1wb3J0ICJXZWJD
ZXJ0aWZpY2F0ZUluZm8uaCIKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorI2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgog
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGZyYW1lRXJyb3JL
ZXkgPSBAIldLQnJvd3NpbmdDb250ZXh0RnJhbWVFcnJvcktleSI7CiAgICAgV2Vha09iakNQdHI8
aWQgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPj4gX2xvYWREZWxlZ2F0ZTsKICAgICBX
ZWFrT2JqQ1B0cjxpZCA8V0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZT4+IF9wb2xpY3lE
ZWxlZ2F0ZTsKICAgICAKLSAgICBSZXRhaW5QdHI8V0tSZW1vdGVPYmplY3RSZWdpc3RyeT4gX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5OworICAgIFJldGFpblB0cjxfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eT4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogfQogCiBzdGF0aWMgSGFzaE1hcDxXZWJQYWdlUHJv
eHkqLCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKj4mIGJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXJNYXAoKQpAQCAtOTA4LDEwICs5MDgsMTAgQEAgc3RhdGljIHZvaWQgc2V0VXBQYWdlUG9s
aWN5Q2xpZW50KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0LAog
ICAgIHJldHVybiBbW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFn
ZUlEOl9wYWdlLT5wYWdlSUQoKV0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChXS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5ICopcmVtb3RlT2JqZWN0UmVnaXN0cnkKKy0gKF9XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CiB7CiAgICAgaWYgKCFfcmVtb3RlT2JqZWN0UmVn
aXN0cnkpIHsKLSAgICAgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gW1tXS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5IGFsbG9jXSBfaW5pdFdpdGhNZXNzYWdlU2VuZGVyOipfcGFnZV07CisgICAgICAg
IF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IFtbX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgYWxsb2Nd
IF9pbml0V2l0aE1lc3NhZ2VTZW5kZXI6Kl9wYWdlXTsKICAgICAgICAgX3BhZ2UtPnByb2Nlc3Mo
KS5jb250ZXh0KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBfcGFnZS0+cGFnZUlEKCksIFtfcmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UmVnaXN0cnldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgKaW5kZXggMWVjZmI1MTAwZGY5MjVmNjk5
MzNjYTkwOTc4NDQzOTc5ZTg0NTAwNi4uZTcyNmJjZTQwNWFiMDgxMzZjMDI5YmIzMzkxYzc2Mjg4
MDQyZTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgK
QEAgLTM4LDcgKzM4LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFdLQnJvd3NpbmdD
b250ZXh0UGFnaW5hdGlvbk1vZGUpIHsKIH07CiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZTsKLUBjbGFzcyBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OworQGNsYXNzIF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5OwogCiBAaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAo
UHJpdmF0ZSkKIApAQCAtNjAsNyArNjAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwg
V0tCcm93c2luZ0NvbnRleHRQYWdpbmF0aW9uTW9kZSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlICpoYW5kbGU7CiAKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2Jq
ZWN0UmVnaXN0cnk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5ICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgcGlkX3QgcHJvY2Vzc0lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMGFmOWIyY2EwZWE1
YmE0YjI3MDZkYWFkMzZmZmVkMWNiM2IxZjZkNS4uYTZhYzk3ZjBjMTE1ZjdmYzY3ZDVkMjVlMGVm
NTA3NDQxZmNkYmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbXBvcnQgIldLTmF2aWdhdGlvbklu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
UHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgotI2ltcG9ydCAiV0tSZW1vdGVPYmplY3RSZWdpc3RyeUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS1VJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0Nv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVy
LmgiCkBAIC01NCw2ICs1Myw3IEBACiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJf
V0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlu
a1Byb3ZpZGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNzks
NyArNzksNyBAQAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2aWdhdGlvblN0YXRlOwogCi0gICAgUmV0
YWluUHRyPFdLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsKKyAg
ICBSZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKICAgICBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50czsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTgxMSwxMCArODExLDEwIEBAIHN0
YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6
RmxvYXRQb2ludCBjb250ZW50T2ZmCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJp
dmF0ZSkKIAotLSAoV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqKV9yZW1vdGVPYmplY3RSZWdpc3Ry
eQorLSAoX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKilfcmVtb3RlT2JqZWN0UmVnaXN0cnkKIHsK
ICAgICBpZiAoIV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAgICAgICBfcmVtb3RlT2JqZWN0
UmVnaXN0cnkgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBhbGxvY10gX2luaXRX
aXRoTWVzc2FnZVNlbmRlcjoqX3BhZ2VdKTsKKyAgICAgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gYWRvcHROUyhbW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IGFsbG9jXSBfaW5pdFdpdGhNZXNz
YWdlU2VuZGVyOipfcGFnZV0pOwogICAgICAgICBfcGFnZS0+cHJvY2VzcygpLmNvbnRleHQoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIF9wYWdlLT5wYWdlSUQoKSwgW19yZW1vdGVPYmplY3RSZWdpc3RyeSBy
ZW1vdGVPYmplY3RSZWdpc3RyeV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA3ZWQwNGQwZjFj
ZWZkODAzMzFhNDg3ZjllMTAxZTg2NmNkYjM5MGExLi4xZTcyODRjYWIyMGZhMGZmOGNjMjNjNjlm
MjllMmMxYTg3MmVlYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDEsMTIgKzQxLDEzIEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRpb25Nb2RlKSB7CiB9OwogCiBAY2xhc3MgV0tC
cm93c2luZ0NvbnRleHRIYW5kbGU7Ci1AY2xhc3MgV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKK0Bj
bGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBwcm90b2NvbCBXS0hpc3RvcnlEZWxlZ2F0
ZVByaXZhdGU7CiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1ByaXZhdGUpCiAKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqX3JlbW90ZU9i
amVjdFJlZ2lzdHJ5OworLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5ICouCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGlkIF9yZW1v
dGVPYmplY3RSZWdpc3RyeTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tCcm93
c2luZ0NvbnRleHRIYW5kbGUgKl9oYW5kbGU7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM6KSBfV0tSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50cyBfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZWI2ZThi
Yjk3MDFiMzI3MTM2YTE2YTc5MGNmYjM5MWVhZjYzZDdiLi4zZDlkMmQ4ZTRlNTY4N2VhYjVlYWFm
ZjVkODZhZTliNjk2YTViMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzUsMTUgKzI3NSwxNSBAQAogCQkxQTkxMDA3MjEy
NjY3NUM0MDAxODQyRjUgLyogRmluZEluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkxMDA3MDEyNjY3NUM0MDAxODQyRjUgLyogRmlu
ZEluZGljYXRvci5jcHAgKi87IH07CiAJCTFBOTJEQzExMTJGOEJBNDYwMDE3QUY2NSAvKiBMYXll
clRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTkyREMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5oICovOyB9
OwogCQkxQTkyREMxMzEyRjhCQUI5MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTJEQzEyMTJG
OEJBQjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0TWFjLm1tICovOyB9OwotCQkxQTlFMzI4
OTE4MjE2MzY5MDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RTMyODcxODIxNjM2OTAwRjVE
MDRDIC8qIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQTlFMzI4QTE4MjE2MzY5MDBGNUQwNEMgLyogV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBOUUzMjg4MTgyMTYzNjkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tICovOyB9OwotCQkxQTlFMzI4RDE4MjE2NUE5MDBGNUQwNEMgLyogV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBOUUzMjhCMTgyMTY1QTkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdEludGVyZmFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTFB
OUUzMjhFMTgyMTY1QTkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUUzMjhDMTgyMTY1
QTkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbSAqLzsgfTsKKwkJMUE5RTMy
ODkxODIxNjM2OTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlFMzI4NzE4MjE2MzY5MDBG
NUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQTlFMzI4QTE4MjE2MzY5MDBGNUQwNEMgLyog
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTlFMzI4ODE4MjE2MzY5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0gKi87IH07CisJCTFBOUUzMjhEMTgyMTY1QTkwMEY1RDA0QyAvKiBfV0tS
ZW1vdGVPYmplY3RJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBOUUzMjhCMTgyMTY1QTkwMEY1RDA0QyAvKiBfV0tSZW1vdGVPYmplY3RJ
bnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkxQTlFMzI4RTE4MjE2NUE5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RTMy
OEMxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbSAqLzsgfTsK
IAkJMUE5RTMyOUExODIyRTFDQzAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RTMyOTgxODIyRTFDQzAw
RjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Lm1tICovOyB9OwogCQkxQTlFMzI5QjE4MjJFMUNDMDBG
NUQwNEMgLyogV0tSZW1vdGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBOUUzMjk5MTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVj
dC5oICovOyB9OwogCQkxQTlFMzI5RTE4MjJGRUREMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RD
b2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
OUUzMjlDMTgyMkZFREQwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdENvZGVyLm1tICovOyB9Owog
CQkxQTlFMzI5RjE4MjJGRUREMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RDb2Rlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RTMyOUQxODIyRkVE
RDAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Q29kZXIuaCAqLzsgfTsKLQkJMUE5RTMyQTExODIz
MDE4OTAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RTMyQTAxODIzMDE4OTAw
RjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oICovOyB9OworCQkxQTlF
MzJBMTE4MjMwMTg5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RTMyQTAx
ODIzMDE4OTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCAqLzsg
fTsKIAkJMUE5RkJBOEQxM0ZGMDRFNjAwREVFRDY3IC8qIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5
RkJBOEMxM0ZGMDRFNjAwREVFRDY3IC8qIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oICov
OyB9OwogCQkxQUEyMEQ1MTE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUEyMEQ1MDE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBMkU1
MUQxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dV
dGlsaXRpZXMuaCAqLzsgfTsKQEAgLTMwOCw3ICszMDgsNyBAQAogCQkxQUFCMDM3QzE4NUY5OUQ4
MDBFREY1MDEgLyogQVBJRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUFCMDM3QjE4NUY5OUQ4MDBFREY1MDEgLyogQVBJRGF0YS5jcHAgKi87
IH07CiAJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFCNEE4QzEyOTZG
MEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oICovOyB9OwogCQkxQUFCNEFBQTEyOTZG
MTU0MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUI0QUE5MTI5NkYxNTQwMDIzOTUyRiAvKiBT
YW5kYm94RXh0ZW5zaW9uTWFjLm1tICovOyB9OwotCQkxQUFCRkUzQTE4MjlDMUVEMDA1QjA3MEUg
LyogV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQkZFMzkxODI5QzFFRDAwNUIwNzBFIC8qIFdL
UmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCAqLzsgfTsKKwkJMUFBQkZFM0ExODI5QzFF
RDAwNUIwNzBFIC8qIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFCRkUzOTE4MjlDMUVEMDA1
QjA3MEUgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCAqLzsgfTsKIAkJMUFB
RjBDNEExMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYwQzQ4MTJCMTYzMzQwMDhFNDlF
MiAvKiBBcmd1bWVudENvZGVyc0NGLmggKi87IH07CiAJCTFBQUYwQzRCMTJCMTYzMzQwMDhFNDlF
MiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQUYwQzQ5MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVy
c0NGLmNwcCAqLzsgfTsKIAkJMUFBRjI2MzgxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBRjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tICovOyB9OwpAQCAtMzYwLDYgKzM2MCwxMSBAQAogCQkxQUMxMzM4NjE4
NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDMTMzODQxODU5MEM0NjAw
RjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCAqLzsgfTsKIAkJMUFDMTQx
NTExOEFDNDdFRTAwNkM2MDJDIC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUMxNDE1MDE4QUM0
N0VFMDA2QzYwMkMgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUMyNUZDMjEyQTQ4RjYw
MDBCRDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUMyNUY4QTEyQTQ4RTAzMDBCRDI2NzEgLyogUGx1Z2lu
UHJvY2Vzc1NoaW0ubW0gKi87IH07CisJCTFBQzMwM0EyMThFNEQ5RjkwMDE4NjA5RiAvKiBXS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFDMzAzQTAxOEU0RDlGOTAwMTg2MDlGIC8qIFdLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0gKi87IH07CisJCTFBQzMwM0EzMThFNEQ5RjkwMDE4NjA5RiAvKiBXS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUMzMDNBMTE4RTREOUY5MDAxODYwOUYgLyogV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBQzMw
M0E3MThFNERBRTkwMDE4NjA5RiAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXJUb0JlUmVtb3ZlZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQzMwM0E1MThFNERBRTkwMDE4NjA5RiAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJUb0JlUmVtb3ZlZC5tbSAqLzsgfTsKKwkJMUFDMzAz
QUIxOEU0REI3QzAwMTg2MDlGIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDMzAzQTkxOEU0REI3QzAw
MTg2MDlGIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tICovOyB9OworCQkxQUMzMDNBQzE4
RTREQjdDMDAxODYwOUYgLyogV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzMwM0FBMThFNERCN0MwMDE4NjA5
RiAvKiBXS1JlbW90ZU9iamVjdEludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNz
YWdlRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBQzRDODI4MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCAqLzsgfTsKIAkJMUFD
NUZGQzIxNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM1RkZDMTE3NEJGRDFC
MDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCAqLzsgfTsKIAkJMUFDNzUzN0Ix
ODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBh
Z2VMb2FkU3RhdGUuY3BwICovOyB9OwpAQCAtMjAyNywxNSArMjAzMiwxNSBAQAogCQkxQTkxMDA3
MDEyNjY3NUM0MDAxODQyRjUgLyogRmluZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGaW5kSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUE5MkRDMTAxMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJUcmVlQ29udGV4dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTkyREMxMjEyRjhCQUI5MDAxN0FGNjUgLyog
TGF5ZXJUcmVlQ29udGV4dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IExheWVyVHJlZUNvbnRleHRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFBOUUzMjg3MTgyMTYzNjkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVtb3RlT2JqZWN0UmVnaXN0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5RTMyODgxODIxNjM2OTAwRjVEMDRD
IC8qIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQTlFMzI4QjE4MjE2NUE5MDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RJ
bnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tSZW1vdGVPYmpl
Y3RJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5RTMyOEMxODIx
NjVBOTAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOUUzMjg3MTgyMTYzNjkwMEY1RDA0QyAvKiBf
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQTlFMzI4ODE4MjE2MzY5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tSZW1vdGVPYmplY3RS
ZWdpc3RyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE5RTMyOEIxODIxNjVB
OTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUE5RTMyOEMxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9i
amVjdEludGVyZmFjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUE5RTMyOTgxODIyRTFDQzAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZW1vdGVPYmplY3QubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOUUzMjk5MTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1Jl
bW90ZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1JlbW90ZU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTlFMzI5QzE4MjJGRUREMDBG
NUQwNEMgLyogV0tSZW1vdGVPYmplY3RDb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLUmVtb3RlT2JqZWN0Q29kZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBOUUzMjlEMTgyMkZFREQwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdENv
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVtb3RlT2JqZWN0Q29k
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5RTMyQTAxODIzMDE4OTAwRjVE
MDRDIC8qIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE5RTMyQTAxODIzMDE4OTAwRjVEMDRDIC8qIF9XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTlGQkE4QzEzRkYwNEU2MDBERUVENjcgLyogUGx1Z2luQ29tcGxleFRl
eHRJbnB1dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUEx
Qzc5QTEwMEU3RkM1MDA3OERFQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0
aCA9IFdlYkNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkxQUExQzdERTEwMEU4NDZFMDA3OERFQkMgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0yMDY2LDcgKzIwNzEsNyBAQAogCQkxQUFCMDM3
QjE4NUY5OUQ4MDBFREY1MDEgLyogQVBJRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBUElEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFBQjRBOEMxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FuZGJveEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUFCNEFBOTEyOTZGMTU0MDAyMzk1MkYgLyogU2FuZGJveEV4dGVu
c2lvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbmRi
b3hFeHRlbnNpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQUJGRTM5
MTgyOUMxRUQwMDVCMDcwRSAvKiBXS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFBQkZFMzkxODI5QzFFRDAw
NUIwNzBFIC8qIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQURFNkZFMTBEODU1RkMwMEQzRDYzRCAv
KiBBcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsK
IAkJMUFBRjBDNDgxMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJndW1lbnRDb2RlcnNDRi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUFGMEM0OTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRD
b2RlcnNDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEFyZ3Vt
ZW50Q29kZXJzQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEyNCw2ICsy
MTI5LDExIEBACiAJCTFBQzI1Rjg5MTJBNDhFMDMwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hp
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5Qcm9jZXNzU2hpbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUMyNUY4QTEyQTQ4RTAzMDBCRDI2NzEg
LyogUGx1Z2luUHJvY2Vzc1NoaW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbHVnaW5Qcm9jZXNzU2hpbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFDMjVGQjAxMkE0OEVBNzAwQkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc1No
aW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTFBQzMwM0Ew
MThFNEQ5RjkwMDE4NjA5RiAvKiBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFDMzAzQTExOEU0RDlGOTAwMTg2MDlGIC8q
IFdLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQUMzMDNBNTE4RTREQUU5MDAxODYwOUYgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyVG9CZVJlbW92ZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJU
b0JlUmVtb3ZlZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFDMzAzQTkxOEU0
REI3QzAwMTg2MDlGIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQzMwM0FBMThFNERCN0MwMDE4NjA5RiAvKiBX
S1JlbW90ZU9iamVjdEludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1JlbW90ZU9iamVjdEludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUM0QzgyODE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUM1RkZDMTE3NEJGRDFCMDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJp
YnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzUzNzkxODNBOUZE
QTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGFnZUxvYWRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MjM0LDYgKzQyNDQsMjUgQEAKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCTFBQzMwMzlEMThFNEQ5QzkwMDE4NjA5RiAvKiBUbyBCZSBS
ZW1vdmVkICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkx
QUMzMDNBMTE4RTREOUY5MDAxODYwOUYgLyogV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovLAor
CQkJCTFBQzMwM0EwMThFNEQ5RjkwMDE4NjA5RiAvKiBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
ICovLAorCQkJCTFBQzMwM0FBMThFNERCN0MwMDE4NjA5RiAvKiBXS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5oICovLAorCQkJCTFBQzMwM0E5MThFNERCN0MwMDE4NjA5RiAvKiBXS1JlbW90ZU9iamVj
dEludGVyZmFjZS5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gIlRvIEJlIFJlbW92ZWQiOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUFDMzAzQTQxOEU0REFEMzAwMTg2MDlG
IC8qIFRvIEJlIFJlbW92ZWQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTFBQzMwM0E1MThFNERBRTkwMDE4NjA5RiAvKiBXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXJUb0JlUmVtb3ZlZC5tbSAqLywKKwkJCSk7CisJCQluYW1l
ID0gIlRvIEJlIFJlbW92ZWQiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
MUFFMDBENjgxODMyN0MxMjAwMDg3REQ3IC8qIElQQyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC00MzAxLDYgKzQzMzAsNyBAQAogCQkxRjAxODE2ODE4NThE
QzE1MDBGOTI4ODQgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTFBQzMwM0E0MThFNERBRDMwMDE4NjA5RiAvKiBUbyBCZSBSZW1vdmVkICov
LAogCQkJCTFBQTJFNTY1MThENzc1MDgwMDM4MTRCRCAvKiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJh
bWV0ZXJzLmggKi8sCiAJCQkJMUFBMkU1NjQxOEQ3NzUwODAwMzgxNEJEIC8qIFdLV2ViUHJvY2Vz
c0J1bmRsZVBhcmFtZXRlcnMubW0gKi8sCiAJCQkJMzc5NTc4OUIxOEFENEYxMTAwQjlFRDJFIC8q
IFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGUuaCAqLywKQEAgLTQ2NjgsNiAr
NDY5OCw3IEBACiAJCTM3REZBNkZFMTgxMEJCMkQwMDFGNEE5RiAvKiBDb2NvYSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUFDMzAzOUQxOEU0RDlDOTAw
MTg2MDlGIC8qIFRvIEJlIFJlbW92ZWQgKi8sCiAJCQkJMUFDMTMzN0UxODU5MEFFNDAwRjNFQzA1
IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8sCiAJCQkJMUFDMTMzODExODU5MEIwNTAwRjNF
QzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovLAogCQkJCTFBQzEzMzdE
MTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSAqLywKQEAgLTQ2ODAs
MTcgKzQ3MTEsMTcgQEAKIAkJCQkxQTlFMzI5ODE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVP
YmplY3QubW0gKi8sCiAJCQkJMUE5RTMyOUQxODIyRkVERDAwRjVEMDRDIC8qIFdLUmVtb3RlT2Jq
ZWN0Q29kZXIuaCAqLywKIAkJCQkxQTlFMzI5QzE4MjJGRUREMDBGNUQwNEMgLyogV0tSZW1vdGVP
YmplY3RDb2Rlci5tbSAqLywKLQkJCQkxQTlFMzI4QjE4MjE2NUE5MDBGNUQwNEMgLyogV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2UuaCAqLywKLQkJCQkxQTlFMzI4QzE4MjE2NUE5MDBGNUQwNEMgLyog
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0gKi8sCi0JCQkJMUFBQkZFMzkxODI5QzFFRDAwNUIw
NzBFIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCAqLywKLQkJCQkxQTlFMzI4
NzE4MjE2MzY5MDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovLAotCQkJCTFB
OUUzMjg4MTgyMTYzNjkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tICovLAot
CQkJCTFBOUUzMkEwMTgyMzAxODkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50
ZXJuYWwuaCAqLywKIAkJCQkxRjYwNEJBNjE4ODlGQTc0MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50cy5oICovLAogCQkJCTFGNjA0QkE3MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1Jl
bmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCAqLywKIAkJCQkzNzNEMTIyMTE4QTQ3MzAx
MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGUuaCAqLywKIAkJCQkzNzNEMTIyMDE4QTQ3MzAxMDA2
NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGUubW0gKi8sCiAJCQkJMzczRDEyMjYxOEE0NzNGNjAwNjZE
OUNDIC8qIF9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCAqLywKKwkJCQkxQTlFMzI4QjE4MjE2NUE5
MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmggKi8sCisJCQkJMUE5RTMyOEMx
ODIxNjVBOTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbSAqLywKKwkJCQkx
QUFCRkUzOTE4MjlDMUVEMDA1QjA3MEUgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJu
YWwuaCAqLywKKwkJCQkxQTlFMzI4NzE4MjE2MzY5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCAqLywKKwkJCQkxQTlFMzI4ODE4MjE2MzY5MDBGNUQwNEMgLyogX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkubW0gKi8sCisJCQkJMUE5RTMyQTAxODIzMDE4OTAwRjVEMDRDIC8qIF9X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29j
b2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjY1OSw3ICs2NjkwLDcgQEAKIAkJ
CQlCQ0E4QzZBOTExRTNCQTVGMDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgxNDdBOTEyRjY0Q0RBMDA3QjJDMzIgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzZC
MDExRTNDMDg3MDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTFBOUUzMjg5MTgyMTYzNjkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTlFMzI4OTE4MjE2MzY5MDBGNUQwNEMgLyog
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNjU0RUZFMTg0
RUYzM0YwMDdEQzgzNyAvKiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMzM0UwRDExMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTYwMThCQkUzRDkwMDBG
Q0ZDOSAvKiBGaW5kSW5kaWNhdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTY3NDAsNiAr
Njc3MSw3IEBACiAJCQkJN0NGNDdGRkIxNzI3NUM1NzAwOEFDQjkxIC8qIFBhZ2VCYW5uZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNkVEQUE2MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzIzNzEyNjUwNzE3MDAzRTQ0RDQgLyogUGFnZU92
ZXJsYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQzMwM0EzMThFNEQ5RjkwMDE4NjA5RiAvKiBX
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTc0QTU4MTEyRTY2
NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTk1
ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFGQ0IxODkxN0JCRkUwMzAwMzk0Q0Q4IC8qIFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NzQ5LDkgKzY3ODEsMTAgQEAKIAkJCQkxQTZGQjdE
MzExRTY1MUUyMDBEQjEzNzEgLyogUGx1Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUE2N0Uw
RDE2NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBOUZCQThEMTNGRjA0RTYwMERFRUQ2NyAvKiBQbHVnaW5Db21wbGV4VGV4dElu
cHV0U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQzMwM0FDMThFNERCN0MwMDE4NjA5RiAv
KiBXS1JlbW90ZU9iamVjdEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTZGMjkx
MUU5MkJDODAwNjFCODgyIC8qIFBsdWdpbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOEVGNENCMTI1MjQwMzcwMEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTFBOUUzMkExMTgyMzAxODkwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBOUUzMkExMTgyMzAxODkw
MEY1RDA0QyAvKiBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQThFRjk2RjEyNTJBRjZCMDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMTc5NzgwMTM3RUU4MkMwMEY5N0Q0NSAv
KiBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOUUzMjlC
MTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC03
MTI2LDkgKzcxNTksOSBAQAogCQkJCUJDNDA3NUZBMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RpY3Rp
b25hcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDE3RDBCMTYyNjBGRjQwMDcwNTRGNSAvKiBX
S0RPTUludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RDI0QzIxNkNENzA2RDAwN0Q1
NDYxIC8qIFdLRE9NTm9kZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQUJGRTNBMTgy
OUMxRUQwMDVCMDcwRSAvKiBXS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQUFCRkUzQTE4MjlDMUVEMDA1QjA3MEUgLyogX1dLUmVtb3RlT2JqZWN0
SW50ZXJmYWNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUQyNEM1MTZDRDcwODgw
MDdENTQ2MSAvKiBXS0RPTVJhbmdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUE5RTMy
OEQxODIxNjVBOTAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxQTlFMzI4RDE4MjE2NUE5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTI5MDk5MzE4M0FDRUFGMDA1NTIyQTYgLyog
V2ViSURCU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcwRjM0QTMxODI5
QkUxRTAwOTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKQEAg
LTc5ODcsNiArODAyMCw3IEBACiAJCQkJRTE3MDg3NzAxNkQ2Q0ZFNTAwRjk5MjI2IC8qIEJsb2JS
ZWdpc3RyYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzA4NzZCMTZENkNBNjkw
MEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Yx
ODYzODE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxQUMzMDNBNzE4RTREQUU5MDAxODYwOUYgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyVG9CZVJlbW92ZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEyRTUx
RTEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkRBOTQ0QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMkQ5NTcwMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC04MDQyLDcgKzgwNzYsNyBAQAogCQkJCTFBNDNFODI5MTg4RjND
REMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQTdDNkNEQTEzNzg5NTA4MDBCOUMwNEQgLyogRW52aXJvbm1lbnRWYXJpYWJsZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTc1RkExNDk2QjUyNjAwQTRFRTA2IC8qIEV2ZW50
RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTlFMzI4QTE4MjE2MzY5MDBGNUQw
NEMgLyogV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFBOUUz
MjhBMTgyMTYzNjkwMEY1RDA0QyAvKiBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQYWdlSU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFBNTc2MDIxNDk2Qjk3OTAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0
Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFFMDkzMzE4ODYx
RDM4MDBEMkRDNDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtODEwMyw3ICs4MTM3LDcgQEAKIAkJCQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyog
TWVzc2FnZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMzI4RkUxNjJDODY2QTAw
RDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0VFRDBF
MTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMUE5RTMyOEUxODIxNjVBOTAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUE5RTMyOEUxODIxNjVBOTAwRjVEMDRDIC8qIF9XS1Jl
bW90ZU9iamVjdEludGVyZmFjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMwRTNBQTdCMTIwOUU4
MzUwMEE0OUQwMSAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBFM0FBN0ExMjA5
RTgzMDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MEYzNEEy
MTgyOUJFMUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLm1tIGluIFNvdXJjZXMgKi8sCkBA
IC04MzIxLDYgKzgzNTUsNyBAQAogCQkJCTM3MkNBRjBDMTgzM0ZEOTEwMDQwQUMyNyAvKiBXS05T
RXJyb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTlFMzI5QTE4MjJFMUNDMDBGNUQwNEMgLyog
V0tSZW1vdGVPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDI4RjNFNDE4ODVDQ0MxMDA0
QjlFQUUgLyogV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUFDMzAz
QUIxOEU0REI3QzAwMTg2MDlGIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjZBOTA4MTMxMzNDMjA1MTAwODJDM0Y0IC8qIFdlYkNvb2tpZU1hbmFnZXJN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ0NzEzMTVCOTIyMDA5N0E3QkMgLyogV2Vi
Q29va2llTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5
MzQ1NTEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtODYxMiw2ICs4NjQ3LDcgQEAKIAkJCQkyRDFCNUQ1RDE4NTg2OUM4MDA2QzY1
OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3NjA4ODIyMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMzM2NzYzQTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUMzMDNBMjE4RTREOUY5MDAx
ODYwOUYgLyogV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY2
MzQ0NDVDMTJBODg1RTkwMDA2MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNDA3NjAzMTI0RkYwMjcwMDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM3MTE4NTY2QzdDMDBGM0VDMDUgLyog
QVBJRnJhbWVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJUb0JlUmVtb3ZlZC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlclRvQmVSZW1vdmVkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYWNkMTQy
ZDRiYzM4N2I5Yjc0ZDk0ODg5MGM4NmU1MzAwNGU4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJUb0JlUmVtb3ZlZC5tbQpAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgiCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyIChXS1RvQmVSZW1vdmVkKQorCistIChXS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5ICopcmVtb3RlT2JqZWN0UmVnaXN0cnkKK3sKKyAgICByZXR1cm4gKFdLUmVtb3RlT2JqZWN0
UmVnaXN0cnkgKilzZWxmLl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKK30KKworQGVuZAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDQ0Yzk4ZGJkMzViMmM3
ZTBhNjRiOGI5ZmJiOGQ5NDMwODNhOTcyNzQuLmVjZTFjZTlkNzI5MThjYTE5M2QxMWU4NTQzYWY4
ODE3YWQzZjFhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtMzYs
NyArMzYsNiBAQAogI2ltcG9ydCAiV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tE
T01JbnRlcm5hbHMuaCIKICNpbXBvcnQgIldLTlNFcnJvci5oIgotI2ltcG9ydCAiV0tSZW1vdGVP
YmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUmV0YWluUHRyLmgiCiAjaW1wb3J0ICJXS1VSTFJl
cXVlc3ROUy5oIgpAQCAtNTAsNiArNDksNyBAQAogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKICNp
bXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgIl9XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KIApAQCAtNjEsNyArNjEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogICAgIFdlYWtPYmpDUHRyPGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5M
b2FkRGVsZWdhdGU+PiBfbG9hZERlbGVnYXRlOwogICAgIFdlYWtPYmpDUHRyPGlkIDxXS1dlYlBy
b2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlPj4gX2Zvcm1EZWxlZ2F0ZTsKICAgICAKLSAg
ICBSZXRhaW5QdHI8V0tSZW1vdGVPYmplY3RSZWdpc3RyeT4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
OworICAgIFJldGFpblB0cjxfV0tSZW1vdGVPYmplY3RSZWdpc3RyeT4gX3JlbW90ZU9iamVjdFJl
Z2lzdHJ5OwogfQogCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYq
IHVzZXJEYXRhUmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQpAQCAtMzUzLDcgKzM1Myw3IEBA
IHN0YXRpYyB2b2lkIHNldFVwRm9ybUNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIgKmNvbnRleHRDCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAoUHJpdmF0ZSkKK0BpbXBsZW1l
bnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKFdLUHJp
dmF0ZSkKIAogLSAoV0tCdW5kbGVQYWdlUmVmKV9idW5kbGVQYWdlUmVmCiB7CkBAIC0zNzQsMTAg
KzM3NCwxMCBAQCBzdGF0aWMgdm9pZCBzZXRVcEZvcm1DbGllbnQoV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICpjb250ZXh0QwogICAgIHJldHVybiB3cmFwcGVyKCp3
ZWJQYWdlKTsKIH0KIAotLSAoV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqKXJlbW90ZU9iamVjdFJl
Z2lzdHJ5CistIChfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqKV9yZW1vdGVPYmplY3RSZWdpc3Ry
eQogewogICAgIGlmICghX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KSB7Ci0gICAgICAgIF9yZW1vdGVP
YmplY3RSZWdpc3RyeSA9IFtbV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBhbGxvY10gX2luaXRXaXRo
TWVzc2FnZVNlbmRlcjoqX3BhZ2VdOworICAgICAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBb
W19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IGFsbG9jXSBfaW5pdFdpdGhNZXNzYWdlU2VuZGVyOipf
cGFnZV07CiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgX3Bh
Z2UtPnBhZ2VJRCgpLCBbX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFJlZ2lzdHJ5
XSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUu
aAppbmRleCA2YmMzZDA3MWVjOTExZGJlZTk5MWNmYzc3YjFlMGJjNzhmNzVlNjkzLi44ZTFlMTVk
ODliODAyOTFmMGU3NzAyYzc1NDE0OWRlYjE3OTE4ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTMwLDE2ICszMCwxNiBAQAogI2ltcG9ydCA8
V2ViS2l0Mi9XS0Jhc2UuaD4KIAogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwotQGNs
YXNzIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CitAY2xhc3MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnk7CiBAcHJvdG9jb2wgV0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZTsKIAot
QGludGVyZmFjZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKFBy
aXZhdGUpCitAaW50ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciAoV0tQcml2YXRlKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLQnVu
ZGxlUGFnZVJlZiBfYnVuZGxlUGFnZVJlZjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAqaGFuZGxlOwogCi1AcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJlZ2lz
dHJ5OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeSAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiBAcHJvcGVydHkgKHdlYWssIHNldHRlcj1f
c2V0Rm9ybURlbGVnYXRlOikgaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZh
dGU+IF9mb3JtRGVsZWdhdGU7CiAKQEAgLTQ3LDQgKzQ3LDEzIEBACiAKIEBlbmQKIAorQGNsYXNz
IFdLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CisKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyIChXS1RvQmVSZW1vdmVkKQorCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFdLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJl
Z2lzdHJ5OworQGVuZDsKKworCisKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>
<flag name="review"
          id="252250"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>