<?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>27766</bug_id>
          
          <creation_ts>2009-07-28 06:43:18 -0700</creation_ts>
          <short_desc>Web Inspector: encapsulate ScriptState into the ScriptObject, get rid of InspectorJSONObject</short_desc>
          <delta_ts>2009-07-28 09:13:00 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135181</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-07-28 06:43:18 -0700</bug_when>
    <thetext>Currently, ScriptObject/ScriptArray require ScriptState for any operation on them. InspectorJSONObject is a ScriptObject convenience wrapper that lives is WebCore/inspector and encapsulates ScriptState. Its name is a bit confusing: it is not a real JSONObject, it is just an object that is intended to be stringified. This change encapsulates ScriptState in the ScriptObject itself and gets rid of InspectorJSONObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135185</commentid>
    <comment_count>1</comment_count>
      <attachid>33623</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-07-28 06:52:56 -0700</bug_when>
    <thetext>Created attachment 33623
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135228</commentid>
    <comment_count>2</comment_count>
      <attachid>33623</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-28 08:43:56 -0700</bug_when>
    <thetext>Comment on attachment 33623
patch

r=me.

This limits usefulness of the ScriptObject, but sure makes the code more legible/pretty. In any case, we could always add ScriptObject::setState(ScriptState*) later if we need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135239</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-07-28 09:05:32 -0700</bug_when>
    <thetext>	M	WebCore/WebCore.pro
	M	WebCore/ChangeLog
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/bindings/js/ScriptObject.h
	M	WebCore/bindings/js/ScriptObject.cpp
	M	WebCore/bindings/js/ScriptArray.h
	M	WebCore/bindings/js/ScriptArray.cpp
	M	WebCore/bindings/js/ScriptFunctionCall.cpp
	M	WebCore/bindings/js/ScriptObjectQuarantine.cpp
	M	WebCore/bindings/v8/ScriptObject.h
	M	WebCore/bindings/v8/ScriptObject.cpp
	M	WebCore/bindings/v8/ScriptArray.h
	M	WebCore/bindings/v8/ScriptArray.cpp
	M	WebCore/bindings/v8/ScriptFunctionCall.cpp
	M	WebCore/bindings/v8/ScriptObjectQuarantine.cpp
	D	WebCore/inspector/InspectorJSONObject.cpp
	D	WebCore/inspector/InspectorJSONObject.h
	M	WebCore/inspector/InspectorDOMStorageResource.cpp
	M	WebCore/inspector/InspectorDatabaseResource.cpp
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/ConsoleMessage.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/InspectorResource.cpp
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/WebCoreSources.bkl
r46490 = 86e33496b1bb9f675699ccdb697950e607d02c5e (trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135242</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-28 09:13:00 -0700</bug_when>
    <thetext>Thanks for doing this! InspectorJSONObject was confusing many people…</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33623</attachid>
            <date>2009-07-28 06:52:56 -0700</date>
            <delta_ts>2009-07-28 08:43:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>inspector_json</filename>
            <type>text/plain</type>
            <size>53952</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2ZjNjliNC4uMmI0ZjQ1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAwOS0wNy0yOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBlbmNhcHN1bGF0ZSBTY3JpcHRTdGF0
ZSBpbnRvIHRoZSBTY3JpcHRPYmplY3QsIGdldCByaWQgb2YgCisgICAgICAgIEluc3BlY3RvckpT
T05PYmplY3QuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NzY2CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcnJheTo6U2NyaXB0
QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJyYXk6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRBcnJheTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFy
cmF5OjpjcmVhdGVOZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEFycmF5Lmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0OjpT
Y3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0OjpzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdFF1YXJhbnRpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEFycmF5OjpTY3JpcHRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcnJheTo6
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFycmF5OjpsZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QXJyYXk6OmNyZWF0ZU5ldyk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
U2NyaXB0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjb25zdHJ1Y3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRP
YmplY3Q6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OmdldCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRPYmpl
Y3Q6OlNjcmlwdE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0UXVh
cmFudGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVj
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6Om5ld1Njcmlw
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpuZXdTY3JpcHRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VU
b0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6YWRkRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERPTVN0b3JhZ2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySlNPTk9iamVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUhlYWRlcnNPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0
T2JqZWN0KToKKwogMjAwOS0wNy0yOCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Ri
b0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgRmFsa2VuYnVyZy4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IDVmOTM4OGQuLmJkNzU5MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTE0Miw4ICsxMTQyLDYgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5o
IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIFwKIAlXZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCi0JV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAgXAotCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckpTT05PYmplY3QuaCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKIAlXZWJDb3JlL2xv
YWRlci9DYWNoZS5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZVBvbGljeS5oIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDZm
MjQ4Ny4uZThmMzJlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0MDksOCArMTQwOSw2IEBACiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckpTT05P
YmplY3QuY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGU0OWFiMTMuLjMwYzZiZmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtODUyLDcgKzg1Miw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBcCi0gICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckpTT05PYmplY3QuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgXAogICAgIGxvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwIFwKQEAgLTE1MDgsNyArMTUw
Nyw2IEBAIEhFQURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggXAotICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JKU09OT2JqZWN0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIFwKICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKICAgICBpbnNwZWN0b3IvSmF2YVNj
cmlwdERlYnVnU2VydmVyLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggOTg0Y2Q1OS4uYjU4N2Q0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zMDY4NCwxNCArMzA2ODQsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAi
DQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9ySlNPTk9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclJlc291cmNl
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDZjZTczNzIuLmI1ZTkyYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDI4LDggKzEwMjgsNiBAQAogCQk3QTc0RUNC
QTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUg
LyogSW5zcGVjdG9yQmFja2VuZC5jcHAgKi87IH07CiAJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5
RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2Vu
ZC5oICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JCYWNr
ZW5kQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJhY2tlbmRDdXN0b20u
Y3BwICovOyB9OwotCQk3QUI2Rjg4NzBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAgKi87IH07
Ci0JCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQwMiAvKiBJbnNwZWN0b3JKU09OT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NjBGQjlE
MjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5oICovOyB9OwogCQk3QUVEM0UwNTBG
QkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8q
IEluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKIAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDND
IC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRl
bmQuaCAqLzsgfTsKIAkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjcwRkQyNjFF
RTAwQTg3RDc5IC8qIEZpbHRlci5oICovOyB9OwpAQCAtNjA1NCw4ICs2MDUyLDYgQEAKIAkJN0E3
NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0
b3JCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3NEVDQkMxMDE4MzlEQTAw
QkY5MzlFIC8qIEpTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVj
dG9ySlNPTk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JKU09OT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FC
NkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySlNPTk9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QUVEM0UwMzBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9y
RnJvbnRlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yRnJvbnRlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUVEM0UwNDBG
QkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWx0ZXIuaDsgcGF0aCA9IGZpbHRlcnMvRmlsdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODQ3LDggKzk4NDMsNiBAQAogCQkJCTQx
RjA2MTcyMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAq
LywKIAkJCQk3QUVEM0UwMzBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
ICovLAogCQkJCTdBRUQzRTA0MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5o
ICovLAotCQkJCTdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBJbnNwZWN0b3JKU09OT2JqZWN0
LmNwcCAqLywKLQkJCQk3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9i
amVjdC5oICovLAogCQkJCTQxRjA2MjAwMEY1RjBCNjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JSZXNv
dXJjZS5jcHAgKi8sCiAJCQkJNDFGMDYxRkYwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJl
c291cmNlLmggKi8sCiAJCQkJMUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRD
YWxsRnJhbWUuY3BwICovLApAQCAtMTU5NTgsNyArMTU5NTIsNiBAQAogCQkJCTQxRjA2MjE0MEY1
RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUYwNjE3NDBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJl
c291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUVEM0UwNjBGQkIxRUFBMDBEMkIwM0MgLyog
SW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBQjZGODg4MEZCOUQyNzEw
MDgwNUQwMiAvKiBJbnNwZWN0b3JKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYw
NjIwMTBGNUYwQjY2MDBBMDdFQUMgLyogSW5zcGVjdG9yUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyNzUzNTcyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjI3NTM1NzQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTgwMDIsNyArMTc5OTUsNiBAQAogCQkJCTQxRjA2MjE1MEY1RjE5MjYwMEEwN0VB
QyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
RjA2MTc1MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0FFRDNFMDUwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3Rv
ckZyb250ZW5kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdBQjZGODg3MEZCOUQyNzEwMDgwNUQw
MiAvKiBJbnNwZWN0b3JKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjA2MjAy
MEY1RjBCNjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjc1MzU3QzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRNYWMubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggNGQ3NGFhYy4uOGI3MmJjZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNl
cy5ia2wKQEAgLTY3MSw3ICs2NzEsNiBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2Yg
ZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5j
cHAKICAgICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKLSAgICAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuY3BwCiAgICAgPC9zZXQ+CiAKICAgICA8c2V0
IGFwcGVuZD0iMSIgdmFyPSJXRUJDT1JFX1NPVVJDRVNfTE9BREVSIj4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRBcnJheS5jcHAKaW5kZXggMDE2YzdhNy4uMmM0MDc1YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRBcnJheS5jcHAKQEAgLTM3LDggKzM3LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRBcnJheTo6U2NyaXB0QXJyYXkoSlNBcnJheSog
b2JqZWN0KQotICAgIDogU2NyaXB0T2JqZWN0KG9iamVjdCkKK1NjcmlwdEFycmF5OjpTY3JpcHRB
cnJheShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIEpTQXJyYXkqIG9iamVjdCkKKyAgICA6IFNj
cmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgb2JqZWN0KQogewogfQogCkBAIC01MSw1NyArNTEsNTgg
QEAgc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0QXJyYXk6OnNldChTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUsIHVuc2lnbmVkIGluZGV4LCBjb25zdCBTY3JpcHRPYmplY3QmIHZhbHVl
KQorYm9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTY3JpcHRPYmpl
Y3QmIHZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0g
ICAganNBcnJheSgpLT5wdXQoc2NyaXB0U3RhdGUsIGluZGV4LCB2YWx1ZS5qc09iamVjdCgpKTsK
LSAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKKyAgICBqc0FycmF5KCkt
PnB1dChtX3NjcmlwdFN0YXRlLCBpbmRleCwgdmFsdWUuanNPYmplY3QoKSk7CisgICAgcmV0dXJu
IGhhbmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKIH0KIAotYm9vbCBTY3JpcHRBcnJheTo6
c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCitib29sIFNjcmlwdEFycmF5OjpzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
LSAgICBqc0FycmF5KCktPnB1dChzY3JpcHRTdGF0ZSwgaW5kZXgsIGpzU3RyaW5nKHNjcmlwdFN0
YXRlLCB2YWx1ZSkpOwotICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwor
ICAgIGpzQXJyYXkoKS0+cHV0KG1fc2NyaXB0U3RhdGUsIGluZGV4LCBqc1N0cmluZyhtX3Njcmlw
dFN0YXRlLCB2YWx1ZSkpOworICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24obV9zY3JpcHRTdGF0
ZSk7CiB9CiAKLWJvb2wgU2NyaXB0QXJyYXk6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUs
IHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCitib29sIFNjcmlwdEFycmF5OjpzZXQodW5z
aWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwotICAgIGpzQXJyYXkoKS0+cHV0KHNjcmlwdFN0YXRlLCBpbmRleCwganNO
dW1iZXIoc2NyaXB0U3RhdGUsIHZhbHVlKSk7Ci0gICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihz
Y3JpcHRTdGF0ZSk7CisgICAganNBcnJheSgpLT5wdXQobV9zY3JpcHRTdGF0ZSwgaW5kZXgsIGpz
TnVtYmVyKG1fc2NyaXB0U3RhdGUsIHZhbHVlKSk7CisgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlv
bihtX3NjcmlwdFN0YXRlKTsKIH0KIAotYm9vbCBTY3JpcHRBcnJheTo6c2V0KFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSwgdW5zaWduZWQgaW5kZXgsIGxvbmcgbG9uZyB2YWx1ZSkKK2Jvb2wgU2Ny
aXB0QXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgbG9uZyBsb25nIHZhbHVlKQogewogICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAganNBcnJheSgpLT5wdXQoc2Ny
aXB0U3RhdGUsIGluZGV4LCBqc051bWJlcihzY3JpcHRTdGF0ZSwgdmFsdWUpKTsKLSAgICByZXR1
cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKKyAgICBqc0FycmF5KCktPnB1dChtX3Nj
cmlwdFN0YXRlLCBpbmRleCwganNOdW1iZXIobV9zY3JpcHRTdGF0ZSwgdmFsdWUpKTsKKyAgICBy
ZXR1cm4gaGFuZGxlRXhjZXB0aW9uKG1fc2NyaXB0U3RhdGUpOwogfQogCi1ib29sIFNjcmlwdEFy
cmF5OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB1bnNpZ25lZCBpbmRleCwgaW50IHZh
bHVlKQorYm9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBpbnQgdmFsdWUpCiB7
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBqc0FycmF5KCkt
PnB1dChzY3JpcHRTdGF0ZSwgaW5kZXgsIGpzTnVtYmVyKHNjcmlwdFN0YXRlLCB2YWx1ZSkpOwot
ICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOworICAgIGpzQXJyYXkoKS0+
cHV0KG1fc2NyaXB0U3RhdGUsIGluZGV4LCBqc051bWJlcihtX3NjcmlwdFN0YXRlLCB2YWx1ZSkp
OworICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24obV9zY3JpcHRTdGF0ZSk7CiB9CiAKLWJvb2wg
U2NyaXB0QXJyYXk6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIHVuc2lnbmVkIGluZGV4
LCBib29sIHZhbHVlKQorYm9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBib29s
IHZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAg
anNBcnJheSgpLT5wdXQoc2NyaXB0U3RhdGUsIGluZGV4LCBqc0Jvb2xlYW4odmFsdWUpKTsKLSAg
ICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKKyAgICBqc0FycmF5KCktPnB1
dChtX3NjcmlwdFN0YXRlLCBpbmRleCwganNCb29sZWFuKHZhbHVlKSk7CisgICAgcmV0dXJuIGhh
bmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKIH0KIAotdW5zaWduZWQgU2NyaXB0QXJyYXk6
Omxlbmd0aChTY3JpcHRTdGF0ZSopCit1bnNpZ25lZCBTY3JpcHRBcnJheTo6bGVuZ3RoKCkKIHsK
KyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIHJldHVybiBqc0Fy
cmF5KCktPmxlbmd0aCgpOwogfQogCiBTY3JpcHRBcnJheSBTY3JpcHRBcnJheTo6Y3JlYXRlTmV3
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwotICAgIHJldHVybiBTY3JpcHRBcnJheShjb25zdHJ1Y3RFbXB0eUFycmF5
KHNjcmlwdFN0YXRlKSk7CisgICAgcmV0dXJuIFNjcmlwdEFycmF5KHNjcmlwdFN0YXRlLCBjb25z
dHJ1Y3RFbXB0eUFycmF5KHNjcmlwdFN0YXRlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuaCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuaAppbmRleCAyYmEzMDdmLi45MjQwMzY4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRBcnJheS5oCkBAIC00MCwxNyArNDAsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgU2NyaXB0QXJyYXkgOiBwdWJsaWMgU2NyaXB0T2JqZWN0IHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdEFycmF5KEpTQzo6SlNBcnJheSopOworICAgICAg
ICBTY3JpcHRBcnJheShTY3JpcHRTdGF0ZSosIEpTQzo6SlNBcnJheSopOwogICAgICAgICBTY3Jp
cHRBcnJheSgpIHt9CiAgICAgICAgIEpTQzo6SlNBcnJheSoganNBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIGFzQXJyYXkoanNWYWx1ZSgpKTsgfQogCi0gICAgICAgIGJvb2wgc2V0KFNjcmlwdFN0YXRl
KiwgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwotICAgICAgICBib29sIHNl
dChTY3JpcHRTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAg
Ym9vbCBzZXQoU2NyaXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgZG91YmxlKTsKLSAgICAgICAg
Ym9vbCBzZXQoU2NyaXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgbG9uZyBsb25nKTsKLSAgICAg
ICAgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgaW50KTsKLSAgICAgICAg
Ym9vbCBzZXQoU2NyaXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgYm9vbCk7Ci0gICAgICAgIHVu
c2lnbmVkIGxlbmd0aChTY3JpcHRTdGF0ZSopOworICAgICAgICBib29sIHNldCh1bnNpZ25lZCBp
bmRleCwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGlu
ZGV4LCBjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGRv
dWJsZSk7CisgICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOworICAg
ICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgaW50KTsKKyAgICAgICAgYm9vbCBzZXQodW5z
aWduZWQgaW5kZXgsIGJvb2wpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKTsKIAogICAgICAg
ICBzdGF0aWMgU2NyaXB0QXJyYXkgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKik7CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCBjYTZiMDNhLi40
NmU4MGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgU2NyaXB0T2JqZWN0IFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y29uc3Ry
dWN0KGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHQKICAgICAgICAgcmV0dXJu
IFNjcmlwdE9iamVjdCgpOwogICAgIH0KIAotICAgIHJldHVybiBTY3JpcHRPYmplY3QoYXNPYmpl
Y3QocmVzdWx0KSk7CisgICAgcmV0dXJuIFNjcmlwdE9iamVjdChtX2V4ZWMsIGFzT2JqZWN0KHJl
c3VsdCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5jcHAKaW5kZXggZTY2NDY0NS4uYWE5ZTNhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcApAQCAtNDAsOCArNDAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KEpTT2JqZWN0
KiBvYmplY3QpCitTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgOiBTY3JpcHRWYWx1ZShvYmplY3QpCisgICAg
LCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQogewogfQogCkBAIC01NCw2NiArNTUsNjYgQEAg
c3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0T2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiti
b29sIFNjcmlwdE9iamVjdDo6c2V0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwotICAgIGpzT2JqZWN0KCktPnB1dChzY3JpcHRTdGF0ZSwgSWRl
bnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIGpzU3RyaW5nKHNjcmlwdFN0YXRlLCB2YWx1ZSks
IHNsb3QpOwotICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOworICAgIGpz
T2JqZWN0KCktPnB1dChtX3NjcmlwdFN0YXRlLCBJZGVudGlmaWVyKG1fc2NyaXB0U3RhdGUsIG5h
bWUpLCBqc1N0cmluZyhtX3NjcmlwdFN0YXRlLCB2YWx1ZSksIHNsb3QpOworICAgIHJldHVybiBo
YW5kbGVFeGNlcHRpb24obV9zY3JpcHRTdGF0ZSk7CiB9CiAKLWJvb2wgU2NyaXB0T2JqZWN0Ojpz
ZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3Jp
cHRPYmplY3QmIHZhbHVlKQorYm9vbCBTY3JpcHRPYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAganNPYmplY3Qo
KS0+cHV0KHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUu
anNPYmplY3QoKSwgc2xvdCk7Ci0gICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0
ZSk7CisgICAganNPYmplY3QoKS0+cHV0KG1fc2NyaXB0U3RhdGUsIElkZW50aWZpZXIobV9zY3Jp
cHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCksIHNsb3QpOworICAgIHJldHVybiBoYW5k
bGVFeGNlcHRpb24obV9zY3JpcHRTdGF0ZSk7CiB9CiAKLWJvb2wgU2NyaXB0T2JqZWN0OjpzZXQo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQorYm9vbCBTY3JpcHRPYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAganNPYmplY3QoKS0+cHV0KHNjcmlwdFN0
YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwganNTdHJpbmcoc2NyaXB0U3RhdGUs
IHZhbHVlKSwgc2xvdCk7Ci0gICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7
CisgICAganNPYmplY3QoKS0+cHV0KG1fc2NyaXB0U3RhdGUsIElkZW50aWZpZXIobV9zY3JpcHRT
dGF0ZSwgbmFtZSksIGpzU3RyaW5nKG1fc2NyaXB0U3RhdGUsIHZhbHVlKSwgc2xvdCk7CisgICAg
cmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKIH0KIAotYm9vbCBTY3JpcHRP
YmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGRv
dWJsZSB2YWx1ZSkKK2Jvb2wgU2NyaXB0T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgZG91
YmxlIHZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAganNPYmplY3QoKS0+cHV0KHNjcmlwdFN0YXRl
LCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwganNOdW1iZXIoc2NyaXB0U3RhdGUsIHZh
bHVlKSwgc2xvdCk7Ci0gICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7Cisg
ICAganNPYmplY3QoKS0+cHV0KG1fc2NyaXB0U3RhdGUsIElkZW50aWZpZXIobV9zY3JpcHRTdGF0
ZSwgbmFtZSksIGpzTnVtYmVyKG1fc2NyaXB0U3RhdGUsIHZhbHVlKSwgc2xvdCk7CisgICAgcmV0
dXJuIGhhbmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKIH0KIAotYm9vbCBTY3JpcHRPYmpl
Y3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGxvbmcg
bG9uZyB2YWx1ZSkKK2Jvb2wgU2NyaXB0T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgbG9u
ZyBsb25nIHZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAganNPYmplY3QoKS0+cHV0KHNjcmlwdFN0
YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwganNOdW1iZXIoc2NyaXB0U3RhdGUs
IHZhbHVlKSwgc2xvdCk7Ci0gICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7
CisgICAganNPYmplY3QoKS0+cHV0KG1fc2NyaXB0U3RhdGUsIElkZW50aWZpZXIobV9zY3JpcHRT
dGF0ZSwgbmFtZSksIGpzTnVtYmVyKG1fc2NyaXB0U3RhdGUsIHZhbHVlKSwgc2xvdCk7CisgICAg
cmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKIH0KIAotYm9vbCBTY3JpcHRP
YmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGlu
dCB2YWx1ZSkKK2Jvb2wgU2NyaXB0T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgaW50IHZh
bHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAganNPYmplY3QoKS0+cHV0KHNjcmlwdFN0YXRlLCBJZGVu
dGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwganNOdW1iZXIoc2NyaXB0U3RhdGUsIHZhbHVlKSwg
c2xvdCk7Ci0gICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CisgICAganNP
YmplY3QoKS0+cHV0KG1fc2NyaXB0U3RhdGUsIElkZW50aWZpZXIobV9zY3JpcHRTdGF0ZSwgbmFt
ZSksIGpzTnVtYmVyKG1fc2NyaXB0U3RhdGUsIHZhbHVlKSwgc2xvdCk7CisgICAgcmV0dXJuIGhh
bmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKIH0KIAotYm9vbCBTY3JpcHRPYmplY3Q6OnNl
dChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUp
Citib29sIFNjcmlwdE9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUpCiB7
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKLSAgICBqc09iamVjdCgpLT5wdXQoc2NyaXB0U3RhdGUsIElkZW50aWZpZXIo
c2NyaXB0U3RhdGUsIG5hbWUpLCBqc0Jvb2xlYW4odmFsdWUpLCBzbG90KTsKLSAgICByZXR1cm4g
aGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKKyAgICBqc09iamVjdCgpLT5wdXQobV9zY3Jp
cHRTdGF0ZSwgSWRlbnRpZmllcihtX3NjcmlwdFN0YXRlLCBuYW1lKSwganNCb29sZWFuKHZhbHVl
KSwgc2xvdCk7CisgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKIH0K
IAogU2NyaXB0T2JqZWN0IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAg
IHJldHVybiBTY3JpcHRPYmplY3QoY29uc3RydWN0RW1wdHlPYmplY3Qoc2NyaXB0U3RhdGUpKTsK
KyAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBjb25zdHJ1Y3RFbXB0eU9iamVj
dChzY3JpcHRTdGF0ZSkpOwogfQogCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0
JiB2YWx1ZSkKQEAgLTE0MSw3ICsxNDIsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgU2NyaXB0TwogICAg
IGlmICghanNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB2
YWx1ZSA9IFNjcmlwdE9iamVjdChhc09iamVjdChqc1ZhbHVlKSk7CisgICAgdmFsdWUgPSBTY3Jp
cHRPYmplY3Qoc2NyaXB0U3RhdGUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgKaW5kZXggOTcwMjJkYS4uNTBiNjNh
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCkBAIC00MiwxOSArNDIsMjIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2NyaXB0T2JqZWN0IDogcHVibGljIFNjcmlw
dFZhbHVlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdE9iamVjdChKU0M6OkpTT2JqZWN0
Kik7CisgICAgICAgIFNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsK
ICAgICAgICAgU2NyaXB0T2JqZWN0KCkge30KICAgICAgICAgSlNDOjpKU09iamVjdCoganNPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBhc09iamVjdChqc1ZhbHVlKCkpOyB9CiAKLSAgICAgICAgYm9v
bCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOwot
ICAgICAgICBib29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNj
cmlwdE9iamVjdCYpOwotICAgICAgICBib29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IFN0cmluZyYpOwotICAgICAgICBib29sIHNldChTY3JpcHRTdGF0ZSosIGNv
bnN0IGNoYXIqIG5hbWUsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwg
Y29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nKTsKLSAgICAgICAgYm9vbCBzZXQoU2NyaXB0U3Rh
dGUqLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQpOwotICAgICAgICBib29sIHNldChTY3JpcHRTdGF0
ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wpOworICAgICAgICBib29sIHNldChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciog
bmFtZSwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUs
IGRvdWJsZSk7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGxvbmcgbG9uZyk7
CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCk7CisgICAgICAgIGJvb2wg
c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wpOwogCiAgICAgICAgIHN0YXRpYyBTY3JpcHRPYmpl
Y3QgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKik7CisgICAgCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAgICB9OwogCiAgICAgY2xhc3MgU2NyaXB0
R2xvYmFsT2JqZWN0IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2Jq
ZWN0UXVhcmFudGluZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdFF1YXJh
bnRpbmUuY3BwCmluZGV4IDE3MTg4M2EuLjg5NTUzZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcApAQCAtNzMsNyArNzMsNyBAQCBib29sIGdl
dFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KERhdGFiYXNlKiBkYXRhYmFzZSwgU2NyaXB0T2JqZWN0
JiBxdWFyYW50aW5lZE9iagogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAg
ICBxdWFyYW50aW5lZE9iamVjdCA9IFNjcmlwdE9iamVjdChhc09iamVjdChKU0luc3BlY3RlZE9i
amVjdFdyYXBwZXI6OndyYXAoZXhlYywgdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGRhdGFiYXNl
KSkpKTsKKyAgICBxdWFyYW50aW5lZE9iamVjdCA9IFNjcmlwdE9iamVjdChleGVjLCBhc09iamVj
dChKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZXhlYywgdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIGRhdGFiYXNlKSkpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODksNyArODks
NyBAQCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KEZyYW1lKiBmcmFtZSwgU3RvcmFn
ZSogc3RvcmFnZSwgU2NyaXB0T2JqZWN0JiBxdQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKLSAgICBxdWFyYW50aW5lZE9iamVjdCA9IFNjcmlwdE9iamVjdChhc09iamVjdChK
U0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZXhlYywgdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0b3JhZ2UpKSkpOworICAgIHF1YXJhbnRpbmVkT2JqZWN0ID0gU2NyaXB0T2JqZWN0KGV4
ZWMsIGFzT2JqZWN0KEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChleGVjLCB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RvcmFnZSkpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTEwMyw3ICsxMDMsNyBAQCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KE5vZGUqIG5v
ZGUsIFNjcmlwdE9iamVjdCYgcXVhcmFudGluZWRPYmplY3QpCiAKICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHNvbWUgc29y
dCBvZiBnbG9iYWxPYmplY3RGcm9tTm9kZSgpCi0gICAgcXVhcmFudGluZWRPYmplY3QgPSBTY3Jp
cHRPYmplY3QoYXNPYmplY3QoSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFwKGV4ZWMsIHRv
SlMoZXhlYywgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShleGVjKSwgbm9kZSkp
KSk7CisgICAgcXVhcmFudGluZWRPYmplY3QgPSBTY3JpcHRPYmplY3QoZXhlYywgYXNPYmplY3Qo
SlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFwKGV4ZWMsIHRvSlMoZXhlYywgZGVwcmVjYXRl
ZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShleGVjKSwgbm9kZSkpKSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0T2Jq
ZWN0KERPTVdpbmRvdyogZG9tV2luZG93LCBTY3JpcHRPYmplY3QmIHF1YXJhbnRpbmVkTwogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwogCiAgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBxdWFyYW50aW5lZE9iamVjdCA9IFNjcmlw
dE9iamVjdChhc09iamVjdChKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZXhlYywgd2lu
ZG93KSkpOworICAgIHF1YXJhbnRpbmVkT2JqZWN0ID0gU2NyaXB0T2JqZWN0KGV4ZWMsIGFzT2Jq
ZWN0KEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChleGVjLCB3aW5kb3cpKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
QXJyYXkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5jcHAKaW5kZXggMmUw
NzQwZC4uNzQ4ZWUxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJh
eS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5jcHAKQEAgLTQzLDYz
ICs0Myw2MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdEFycmF5OjpTY3JpcHRB
cnJheSh2ODo6SGFuZGxlPHY4OjpBcnJheT4gdjhBcnJheSkKLSAgICA6IFNjcmlwdE9iamVjdCh2
OEFycmF5KQorU2NyaXB0QXJyYXk6OlNjcmlwdEFycmF5KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgdjg6OkhhbmRsZTx2ODo6QXJyYXk+IHY4QXJyYXkpCisgICAgOiBTY3JpcHRPYmplY3Qoc2Ny
aXB0U3RhdGUsIHY4QXJyYXkpCiB7CiB9CiAKLWJvb2wgU2NyaXB0QXJyYXk6OnNldChTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUsIHVuc2lnbmVkIGluZGV4LCBjb25zdCBTY3JpcHRPYmplY3QmIHZh
bHVlKQorYm9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTY3JpcHRP
YmplY3QmIHZhbHVlKQogewotICAgIFNjcmlwdFNjb3BlIHNjb3BlKHNjcmlwdFN0YXRlKTsKKyAg
ICBTY3JpcHRTY29wZSBzY29wZShtX3NjcmlwdFN0YXRlKTsKICAgICB2OE9iamVjdCgpLT5TZXQo
djg6OkludGVnZXI6Ok5ldyhpbmRleCksIHZhbHVlLnY4VmFsdWUoKSk7CiAgICAgcmV0dXJuIHNj
b3BlLnN1Y2Nlc3MoKTsKIH0KIAotYm9vbCBTY3JpcHRBcnJheTo6c2V0KFNjcmlwdFN0YXRlKiBz
Y3JpcHRTdGF0ZSwgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIFNj
cmlwdEFycmF5OjpzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0g
ICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUpOworICAgIFNjcmlwdFNjb3BlIHNjb3Bl
KG1fc2NyaXB0U3RhdGUpOwogICAgIHY4T2JqZWN0KCktPlNldCh2ODo6SW50ZWdlcjo6TmV3KGlu
ZGV4KSwgdjhTdHJpbmcodmFsdWUpKTsKICAgICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQog
Ci1ib29sIFNjcmlwdEFycmF5OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB1bnNpZ25l
ZCBpbmRleCwgZG91YmxlIHZhbHVlKQorYm9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGlu
ZGV4LCBkb3VibGUgdmFsdWUpCiB7Ci0gICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUp
OworICAgIFNjcmlwdFNjb3BlIHNjb3BlKG1fc2NyaXB0U3RhdGUpOwogICAgIHY4T2JqZWN0KCkt
PlNldCh2ODo6SW50ZWdlcjo6TmV3KGluZGV4KSwgdjg6Ok51bWJlcjo6TmV3KHZhbHVlKSk7CiAg
ICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKIH0KIAotYm9vbCBTY3JpcHRBcnJheTo6c2V0KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdW5zaWduZWQgaW5kZXgsIGxvbmcgbG9uZyB2YWx1ZSkK
K2Jvb2wgU2NyaXB0QXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgbG9uZyBsb25nIHZhbHVlKQog
ewotICAgIFNjcmlwdFNjb3BlIHNjb3BlKHNjcmlwdFN0YXRlKTsKKyAgICBTY3JpcHRTY29wZSBz
Y29wZShtX3NjcmlwdFN0YXRlKTsKICAgICB2OE9iamVjdCgpLT5TZXQodjg6OkludGVnZXI6Ok5l
dyhpbmRleCksIHY4OjpOdW1iZXI6Ok5ldyh2YWx1ZSkpOwogICAgIHJldHVybiBzY29wZS5zdWNj
ZXNzKCk7CiB9CiAKLWJvb2wgU2NyaXB0QXJyYXk6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUsIHVuc2lnbmVkIGluZGV4LCBpbnQgdmFsdWUpCitib29sIFNjcmlwdEFycmF5OjpzZXQodW5z
aWduZWQgaW5kZXgsIGludCB2YWx1ZSkKIHsKLSAgICBTY3JpcHRTY29wZSBzY29wZShzY3JpcHRT
dGF0ZSk7CisgICAgU2NyaXB0U2NvcGUgc2NvcGUobV9zY3JpcHRTdGF0ZSk7CiAgICAgdjhPYmpl
Y3QoKS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaW5kZXgpLCB2ODo6TnVtYmVyOjpOZXcodmFsdWUp
KTsKICAgICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQogCi1ib29sIFNjcmlwdEFycmF5Ojpz
ZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB1bnNpZ25lZCBpbmRleCwgYm9vbCB2YWx1ZSkK
K2Jvb2wgU2NyaXB0QXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgYm9vbCB2YWx1ZSkKIHsKLSAg
ICBTY3JpcHRTY29wZSBzY29wZShzY3JpcHRTdGF0ZSk7CisgICAgU2NyaXB0U2NvcGUgc2NvcGUo
bV9zY3JpcHRTdGF0ZSk7CiAgICAgdjhPYmplY3QoKS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaW5k
ZXgpLCB2OEJvb2xlYW4odmFsdWUpKTsKICAgICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQog
Ci11bnNpZ25lZCBTY3JpcHRBcnJheTo6bGVuZ3RoKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkK
K3Vuc2lnbmVkIFNjcmlwdEFycmF5OjpsZW5ndGgoKQogewotICAgIFNjcmlwdFNjb3BlIHNjb3Bl
KHNjcmlwdFN0YXRlKTsKKyAgICBTY3JpcHRTY29wZSBzY29wZShtX3NjcmlwdFN0YXRlKTsKICAg
ICByZXR1cm4gdjg6OkFycmF5OjpDYXN0KCp2OFZhbHVlKCkpLT5MZW5ndGgoKTsKIH0KIAogU2Ny
aXB0QXJyYXkgU2NyaXB0QXJyYXk6OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUp
CiB7CiAgICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUpOwotICAgIHJldHVybiBTY3Jp
cHRBcnJheSh2ODo6QXJyYXk6Ok5ldygpKTsKKyAgICByZXR1cm4gU2NyaXB0QXJyYXkoc2NyaXB0
U3RhdGUsIHY4OjpBcnJheTo6TmV3KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmggYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdEFycmF5LmgKaW5kZXggMjUwNWMxOC4uNmU4Zjg1MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5oCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0QXJyYXkuaApAQCAtNDAsMTcgKzQwLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIGNsYXNzIFNjcmlwdEFycmF5IDogcHVibGljIFNjcmlwdE9iamVjdCB7CiAgICAg
cHVibGljOgotICAgICAgICBTY3JpcHRBcnJheSh2ODo6SGFuZGxlPHY4OjpBcnJheT4pOwotICAg
ICAgICBTY3JpcHRBcnJheSgpIHt9CisgICAgICAgIFNjcmlwdEFycmF5KFNjcmlwdFN0YXRlKiBz
Y3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6QXJyYXk+KTsKICAgICAgICAgdmlydHVhbCB+U2Ny
aXB0QXJyYXkoKSB7fQogCi0gICAgICAgIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgdW5zaWduZWQg
aW5kZXgsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwotICAgICAgICBib29sIHNldChTY3JpcHRTdGF0
ZSosIHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgYm9vbCBzZXQoU2Ny
aXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgZG91YmxlKTsKLSAgICAgICAgYm9vbCBzZXQoU2Ny
aXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgbG9uZyBsb25nKTsKLSAgICAgICAgYm9vbCBzZXQo
U2NyaXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgaW50KTsKLSAgICAgICAgYm9vbCBzZXQoU2Ny
aXB0U3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgYm9vbCk7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0
aChTY3JpcHRTdGF0ZSopOworICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgY29uc3Qg
U2NyaXB0T2JqZWN0Jik7CisgICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBT
dHJpbmcmKTsKKyAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSk7CisgICAg
ICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOworICAgICAgICBib29sIHNl
dCh1bnNpZ25lZCBpbmRleCwgaW50KTsKKyAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgs
IGJvb2wpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKTsKIAogICAgICAgICBzdGF0aWMgU2Ny
aXB0QXJyYXkgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCBkMmY3YTUyLi4yZmE0M2Q1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xNjIsNyArMTYy
LDcgQEAgU2NyaXB0T2JqZWN0IFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y29uc3RydWN0KGJvb2wmIGhh
ZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHQKICAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVj
dCgpOwogICAgIH0KIAotICAgIHJldHVybiBTY3JpcHRPYmplY3QocmVzdWx0KTsKKyAgICByZXR1
cm4gU2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcAppbmRleCAwZjUwMGZi
Li5jYjYxOGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCkBAIC00Myw4ICs0
Myw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmpl
Y3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iamVjdCkKK1NjcmlwdE9iamVjdDo6U2NyaXB0
T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2
OE9iamVjdCkKICAgICA6IFNjcmlwdFZhbHVlKHY4T2JqZWN0KQorICAgICwgbV9zY3JpcHRTdGF0
ZShzY3JpcHRTdGF0ZSkKIHsKIH0KIApAQCAtNTQsNTEgKzU1LDUxIEBAIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBTY3JpcHRPYmplY3Q6OnY4T2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+KHY4OjpPYmplY3Q6OkNhc3QoKnY4VmFsdWUoKSkpOwogfQogCi1ib29s
IFNjcmlwdE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBTY3JpcHRPYmplY3Q6OnNldChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU2NyaXB0U2NvcGUg
c2NvcGUoc2NyaXB0U3RhdGUpOworICAgIFNjcmlwdFNjb3BlIHNjb3BlKG1fc2NyaXB0U3RhdGUp
OwogICAgIHY4T2JqZWN0KCktPlNldCh2OFN0cmluZyhuYW1lKSwgdjhTdHJpbmcodmFsdWUpKTsK
ICAgICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQogCi1ib29sIFNjcmlwdE9iamVjdDo6c2V0
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0
T2JqZWN0JiB2YWx1ZSkKK2Jvb2wgU2NyaXB0T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKLSAgICBTY3JpcHRTY29wZSBzY29wZShzY3Jp
cHRTdGF0ZSk7CisgICAgU2NyaXB0U2NvcGUgc2NvcGUobV9zY3JpcHRTdGF0ZSk7CiAgICAgdjhP
YmplY3QoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhuYW1lKSwgdmFsdWUudjhWYWx1ZSgpKTsKICAg
ICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQogCi1ib29sIFNjcmlwdE9iamVjdDo6c2V0KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK2Jvb2wgU2NyaXB0T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBTY3JpcHRTY29wZSBzY29wZShzY3JpcHRTdGF0ZSk7CisgICAg
U2NyaXB0U2NvcGUgc2NvcGUobV9zY3JpcHRTdGF0ZSk7CiAgICAgdjhPYmplY3QoKS0+U2V0KHY4
OjpTdHJpbmc6Ok5ldyhuYW1lKSwgdjhTdHJpbmcodmFsdWUpKTsKICAgICByZXR1cm4gc2NvcGUu
c3VjY2VzcygpOwogfQogCi1ib29sIFNjcmlwdE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlKQorYm9vbCBTY3JpcHRPYmpl
Y3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdmFsdWUpCiB7Ci0gICAgU2NyaXB0U2Nv
cGUgc2NvcGUoc2NyaXB0U3RhdGUpOworICAgIFNjcmlwdFNjb3BlIHNjb3BlKG1fc2NyaXB0U3Rh
dGUpOwogICAgIHY4T2JqZWN0KCktPlNldCh2ODo6U3RyaW5nOjpOZXcobmFtZSksIHY4OjpOdW1i
ZXI6Ok5ldyh2YWx1ZSkpOwogICAgIHJldHVybiBzY29wZS5zdWNjZXNzKCk7CiB9CiAKLWJvb2wg
U2NyaXB0T2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBu
YW1lLCBsb25nIGxvbmcgdmFsdWUpCitib29sIFNjcmlwdE9iamVjdDo6c2V0KGNvbnN0IGNoYXIq
IG5hbWUsIGxvbmcgbG9uZyB2YWx1ZSkKIHsKLSAgICBTY3JpcHRTY29wZSBzY29wZShzY3JpcHRT
dGF0ZSk7CisgICAgU2NyaXB0U2NvcGUgc2NvcGUobV9zY3JpcHRTdGF0ZSk7CiAgICAgdjhPYmpl
Y3QoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhuYW1lKSwgdjg6Ok51bWJlcjo6TmV3KHZhbHVlKSk7
CiAgICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKIH0KIAotYm9vbCBTY3JpcHRPYmplY3Q6OnNl
dChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkK
K2Jvb2wgU2NyaXB0T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKQogewot
ICAgIFNjcmlwdFNjb3BlIHNjb3BlKHNjcmlwdFN0YXRlKTsKKyAgICBTY3JpcHRTY29wZSBzY29w
ZShtX3NjcmlwdFN0YXRlKTsKICAgICB2OE9iamVjdCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KG5h
bWUpLCB2ODo6TnVtYmVyOjpOZXcodmFsdWUpKTsKICAgICByZXR1cm4gc2NvcGUuc3VjY2Vzcygp
OwogfQogCi1ib29sIFNjcmlwdE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
Y29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkKK2Jvb2wgU2NyaXB0T2JqZWN0OjpzZXQoY29u
c3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBTY3JpcHRTY29wZSBzY29wZShzY3Jp
cHRTdGF0ZSk7CisgICAgU2NyaXB0U2NvcGUgc2NvcGUobV9zY3JpcHRTdGF0ZSk7CiAgICAgdjhP
YmplY3QoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhuYW1lKSwgdjhCb29sZWFuKHZhbHVlKSk7CiAg
ICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKIH0KQEAgLTEwNiw3ICsxMDcsNyBAQCBib29sIFNj
cmlwdE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFt
ZSwgYm9vbCB2YWx1ZSkKIFNjcmlwdE9iamVjdCBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCiB7CiAgICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3Rh
dGUpOwotICAgIHJldHVybiBTY3JpcHRPYmplY3Qodjg6Ok9iamVjdDo6TmV3KCkpOworICAgIHJl
dHVybiBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIHY4OjpPYmplY3Q6Ok5ldygpKTsKIH0KIAog
Ym9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgdmFsdWUpCkBAIC0xMzMsNyArMTM0
LDcgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE8KICAgICBpZiAoIXY4VmFsdWUtPklzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHZhbHVlID0gU2NyaXB0T2JqZWN0KHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4odjg6Ok9iamVjdDo6Q2FzdCgqdjhWYWx1ZSkpKTsKKyAgICB2
YWx1ZSA9IFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pih2
ODo6T2JqZWN0OjpDYXN0KCp2OFZhbHVlKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRPYmplY3QuaAppbmRleCAyZDBhZGMzLi5kY2VlM2E1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAgLTQxLDIxICs0MSwyMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgU2NyaXB0T2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwot
ICAgICAgICBTY3JpcHRPYmplY3QoKSB7fQorICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3Rh
dGUqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICAgICAgU2NyaXB0T2JqZWN0KCkge307
CiAgICAgICAgIHZpcnR1YWwgflNjcmlwdE9iamVjdCgpIHt9CiAKICAgICAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IHY4T2JqZWN0KCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBzZXQoU2NyaXB0
U3RhdGUqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOwotICAgICAgICBib29s
IHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYp
OwotICAgICAgICBib29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFN0cmluZyYpOwotICAgICAgICBib29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5h
bWUsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3QgY2hhciog
bmFtZSwgbG9uZyBsb25nKTsKLSAgICAgICAgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBj
aGFyKiBuYW1lLCBpbnQpOwotICAgICAgICBib29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNo
YXIqIG5hbWUsIGJvb2wpOworICAgICAgICBib29sIHNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBT
Y3JpcHRPYmplY3QmKTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
U3RyaW5nJik7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSk7Cisg
ICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGxvbmcgbG9uZyk7CisgICAgICAgIGJv
b2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCk7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNo
YXIqIG5hbWUsIGJvb2wpOwogCiAgICAgICAgIHN0YXRpYyBTY3JpcHRPYmplY3QgY3JlYXRlTmV3
KFNjcmlwdFN0YXRlKik7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBTY3JpcHRTdGF0ZSogbV9z
Y3JpcHRTdGF0ZTsKICAgICB9OwogCiAgICAgY2xhc3MgU2NyaXB0R2xvYmFsT2JqZWN0IHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwCmluZGV4IGE4
ZTU2NWUuLmY0OTE0MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2Jq
ZWN0UXVhcmFudGluZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3RR
dWFyYW50aW5lLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0
T2JqZWN0KEZyYW1lKiBmcmFtZSwgU3RvcmFnZSogc3RvcmFnZSwgU2NyaXB0T2JqZWN0JiBxdQog
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKIAogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2OFN0b3JhZ2UgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4
Q2xhc3NJbmRleDo6U1RPUkFHRSwgc3RvcmFnZSk7Ci0gICAgcXVhcmFudGluZWRPYmplY3QgPSBT
Y3JpcHRPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+KHY4OjpPYmplY3Q6OkNhc3QoKnY4U3Rv
cmFnZSkpKTsKKyAgICBxdWFyYW50aW5lZE9iamVjdCA9IFNjcmlwdE9iamVjdChmcmFtZS0+c2Ny
aXB0KCktPnN0YXRlKCksIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pih2ODo6T2JqZWN0OjpDYXN0KCp2
OFN0b3JhZ2UpKSk7CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHF1YXJh
bnRpbmVkT2JqZWN0ID0gU2NyaXB0T2JqZWN0KCk7CkBAIC04NSwxMSArODUsMTIgQEAgYm9vbCBn
ZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChOb2RlKiBub2RlLCBTY3JpcHRPYmplY3QmIHF1YXJh
bnRpbmVkT2JqZWN0KQogICAgIEFTU0VSVChub2RlKTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBWOFByb3h5
Ojpjb250ZXh0KG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCkpOworICAgIEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CisgICAg
djg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZSk7
CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOwogCiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHY4Tm9kZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0
KG5vZGUpOwotICAgIHF1YXJhbnRpbmVkT2JqZWN0ID0gU2NyaXB0T2JqZWN0KHY4OjpMb2NhbDx2
ODo6T2JqZWN0Pih2ODo6T2JqZWN0OjpDYXN0KCp2OE5vZGUpKSk7CisgICAgcXVhcmFudGluZWRP
YmplY3QgPSBTY3JpcHRPYmplY3QoZnJhbWUtPnNjcmlwdCgpLT5zdGF0ZSgpLCB2ODo6TG9jYWw8
djg6Ok9iamVjdD4odjg6Ok9iamVjdDo6Q2FzdCgqdjhOb2RlKSkpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC05OSwxMSArMTAwLDEyIEBAIGJvb2wgZ2V0UXVhcmFudGluZWRTY3JpcHRPYmpl
Y3QoRE9NV2luZG93KiBkb21XaW5kb3csIFNjcmlwdE9iamVjdCYgcXVhcmFudGluZWRPCiAgICAg
QVNTRVJUKGRvbVdpbmRvdyk7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChkb21X
aW5kb3ctPmZyYW1lKCkpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvbVdpbmRvdy0+ZnJhbWUoKTsK
KyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZy
YW1lKTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CiAKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdjhEb21XaW5kb3cgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4
T2JqZWN0KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBkb21XaW5kb3cpOwotICAgIHF1YXJhbnRp
bmVkT2JqZWN0ID0gU2NyaXB0T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0Pih2ODo6T2JqZWN0
OjpDYXN0KCp2OERvbVdpbmRvdykpKTsKKyAgICBxdWFyYW50aW5lZE9iamVjdCA9IFNjcmlwdE9i
amVjdChmcmFtZS0+c2NyaXB0KCktPnN0YXRlKCksIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pih2ODo6
T2JqZWN0OjpDYXN0KCp2OERvbVdpbmRvdykpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9p
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDYwOTE5N2UuLmY5ZDg3MDggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRl
ICJDb25zb2xlTWVzc2FnZS5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVh
cmFudGluZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Nyw3ICs3Nyw3IEBAIENvbnNv
bGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQs
IE1lc3NhZ2VMZXZlbCBsLCBTCiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvQ29uc29sZShJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7Ci0gICAgSW5zcGVjdG9ySlNPTk9iamVjdCBq
c29uT2JqID0gZnJvbnRlbmQtPm5ld0luc3BlY3RvckpTT05PYmplY3QoKTsKKyAgICBTY3JpcHRP
YmplY3QganNvbk9iaiA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICBqc29uT2Jq
LnNldCgic291cmNlIiwgc3RhdGljX2Nhc3Q8aW50PihtX3NvdXJjZSkpOwogICAgIGpzb25PYmou
c2V0KCJ0eXBlIiwgc3RhdGljX2Nhc3Q8aW50PihtX3R5cGUpKTsKICAgICBqc29uT2JqLnNldCgi
bGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbGV2ZWwpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCmluZGV4IGI4MDhhODQuLjAzZGI2
NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNv
dXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRl
ICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICBpZiAobV9zY3JpcHRPYmplY3RDcmVhdGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBJbnNwZWN0b3JKU09OT2JqZWN0IGpzb25PYmplY3QgPSBm
cm9udGVuZC0+bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOworICAgIFNjcmlwdE9iamVjdCBqc29u
T2JqZWN0ID0gZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVjdCgpOwogICAgIFNjcmlwdE9iamVjdCBk
b21TdG9yYWdlOwogICAgIGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9mcmFtZS5n
ZXQoKSwgbV9kb21TdG9yYWdlLmdldCgpLCBkb21TdG9yYWdlKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRl
eCBjNzVjYTg3Li5mYmE1MGE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvckpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCiAKIApAQCAtNTYsNyArNTYs
NyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQoSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQogICAgIGlmIChtX3NjcmlwdE9iamVjdENyZWF0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEluc3BlY3RvckpTT05PYmplY3QganNvbk9iamVjdCA9IGZyb250ZW5kLT5u
ZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CisgICAgU2NyaXB0T2JqZWN0IGpzb25PYmplY3QgPSBm
cm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CiAgICAgU2NyaXB0T2JqZWN0IGRhdGFiYXNlOwog
ICAgIGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9kYXRhYmFzZS5nZXQoKSwgZGF0
YWJhc2UpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAKaW5kZXggYzFhYmQzMS4uZWYyZThiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdl
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
ICAvLyBUT0RPKHBmZWxkbWFuKTogRXh0cmFjdCBTcGVjaWFsUGFuZWxzIHRvIHJlbW92ZSBpbmNs
dWRlLgotI2luY2x1ZGUgIkluc3BlY3RvckpTT05PYmplY3QuaCIKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCkBAIC02MSwxNSArNjAsMjAgQEAgSW5zcGVjdG9yRnJvbnRlbmQ6On5JbnNwZWN0b3JGcm9u
dGVuZCgpCiAgICAgbV93ZWJJbnNwZWN0b3IgPSBTY3JpcHRPYmplY3QoKTsKIH0KIAotSW5zcGVj
dG9ySlNPTk9iamVjdCBJbnNwZWN0b3JGcm9udGVuZDo6bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgp
CitTY3JpcHRBcnJheSBJbnNwZWN0b3JGcm9udGVuZDo6bmV3U2NyaXB0QXJyYXkoKQogewotICAg
IHJldHVybiBJbnNwZWN0b3JKU09OT2JqZWN0OjpjcmVhdGVOZXcobV9zY3JpcHRTdGF0ZSk7Cisg
ICAgcmV0dXJuIFNjcmlwdEFycmF5OjpjcmVhdGVOZXcobV9zY3JpcHRTdGF0ZSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgSW5zcGVjdG9y
SlNPTk9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1l
cywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCitTY3JpcHRPYmplY3QgSW5zcGVjdG9yRnJvbnRlbmQ6Om5ld1NjcmlwdE9i
amVjdCgpCit7CisgICAgcmV0dXJuIFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KG1fc2NyaXB0U3Rh
dGUpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25zb2xlKGNv
bnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4m
IGZyYW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVu
Y3Rpb24obmV3RnVuY3Rpb25DYWxsKCJhZGRNZXNzYWdlVG9Db25zb2xlIikpOwotICAgIGZ1bmN0
aW9uLT5hcHBlbmRBcmd1bWVudChtZXNzYWdlT2JqLnNjcmlwdE9iamVjdCgpKTsKKyAgICBmdW5j
dGlvbi0+YXBwZW5kQXJndW1lbnQobWVzc2FnZU9iaik7CiAgICAgaWYgKCFmcmFtZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgICAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoZnJhbWVzW2ldKTsKQEAg
LTgxLDIxICs4NSwyMSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25z
b2xlKGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIG1lc3NhZ2VPYgogICAgIGZ1bmN0aW9uLT5j
YWxsKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFJlc291cmNlKGxvbmcgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBJbnNwZWN0b3JKU09OT2JqZWN0JiByZXNvdXJjZU9iaikKK2Jv
b2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTY3JpcHRPYmplY3QmIHJlc291cmNlT2JqKQogewogICAgIE93blB0cjxTY3JpcHRGdW5j
dGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRkUmVzb3VyY2UiKSk7CiAgICAg
ZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGlkZW50aWZpZXIpOwotICAgIGZ1bmN0aW9uLT5hcHBl
bmRBcmd1bWVudChyZXNvdXJjZU9iai5zY3JpcHRPYmplY3QoKSk7CisgICAgZnVuY3Rpb24tPmFw
cGVuZEFyZ3VtZW50KHJlc291cmNlT2JqKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OwogICAgIGZ1bmN0aW9uLT5jYWxsKGhhZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuICFoYWRFeGNl
cHRpb247CiB9CiAKLWJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZVJlc291cmNlKGxvbmcg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBJbnNwZWN0b3JKU09OT2JqZWN0JiByZXNvdXJjZU9iaikK
K2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZVJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTY3JpcHRPYmplY3QmIHJlc291cmNlT2JqKQogewogICAgIE93blB0cjxTY3Jp
cHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgidXBkYXRlUmVzb3VyY2Ui
KSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGlkZW50aWZpZXIpOwotICAgIGZ1bmN0
aW9uLT5hcHBlbmRBcmd1bWVudChyZXNvdXJjZU9iai5zY3JpcHRPYmplY3QoKSk7CisgICAgZnVu
Y3Rpb24tPmFwcGVuZEFyZ3VtZW50KHJlc291cmNlT2JqKTsKICAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOwogICAgIGZ1bmN0aW9uLT5jYWxsKGhhZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJu
ICFoYWRFeGNlcHRpb247CkBAIC0yNjEsMTAgKzI2NSwxMCBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kOjpyZXN1bWVkU2NyaXB0KCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQotYm9v
bCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkRGF0YWJhc2UoY29uc3QgSW5zcGVjdG9ySlNPTk9iamVj
dCYgZGJPYmplY3QpCitib29sIEluc3BlY3RvckZyb250ZW5kOjphZGREYXRhYmFzZShjb25zdCBT
Y3JpcHRPYmplY3QmIGRiT2JqZWN0KQogewogICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+
IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRkRGF0YWJhc2UiKSk7Ci0gICAgZnVuY3Rpb24t
PmFwcGVuZEFyZ3VtZW50KGRiT2JqZWN0LnNjcmlwdE9iamVjdCgpKTsKKyAgICBmdW5jdGlvbi0+
YXBwZW5kQXJndW1lbnQoZGJPYmplY3QpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CiAgICAgZnVuY3Rpb24tPmNhbGwoaGFkRXhjZXB0aW9uKTsKICAgICByZXR1cm4gIWhhZEV4Y2Vw
dGlvbjsKQEAgLTI3MiwxMCArMjc2LDEwIEBAIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERh
dGFiYXNlKGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIGRiT2JqZWN0KQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi1ib29sIEluc3BlY3RvckZyb250ZW5kOjphZGRET01TdG9y
YWdlKGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIGRvbVN0b3JhZ2VPYmopCitib29sIEluc3Bl
Y3RvckZyb250ZW5kOjphZGRET01TdG9yYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgZG9tU3RvcmFn
ZU9iaikKIHsKICAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5j
dGlvbkNhbGwoImFkZERPTVN0b3JhZ2UiKSk7Ci0gICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50
KGRvbVN0b3JhZ2VPYmouc2NyaXB0T2JqZWN0KCkpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1
bWVudChkb21TdG9yYWdlT2JqKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAg
IGZ1bmN0aW9uLT5jYWxsKGhhZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuICFoYWRFeGNlcHRpb247
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCAxYmYzZmVhLi5iODY4YzEw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTMwLDcgKzMwLDggQEAK
ICNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaAogI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZF9o
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0QXJy
YXkuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTUzLDEyICs1NCwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZChT
Y3JpcHRTdGF0ZSosIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpOwogICAgICAgICB+SW5zcGVj
dG9yRnJvbnRlbmQoKTsKLSAgICAgICAgSW5zcGVjdG9ySlNPTk9iamVjdCBuZXdJbnNwZWN0b3JK
U09OT2JqZWN0KCk7CiAKLSAgICAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IElu
c3BlY3RvckpTT05PYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+
JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgU2NyaXB0QXJyYXkgbmV3U2NyaXB0QXJyYXko
KTsKKyAgICAgICAgU2NyaXB0T2JqZWN0IG5ld1NjcmlwdE9iamVjdCgpOworCisgICAgICAgIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNv
bnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1
ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgCi0g
ICAgICAgIGJvb2wgYWRkUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEluc3Bl
Y3RvckpTT05PYmplY3QmIHJlc291cmNlT2JqKTsKLSAgICAgICAgYm9vbCB1cGRhdGVSZXNvdXJj
ZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgcmVzb3Vy
Y2VPYmopOworICAgICAgICBib29sIGFkZFJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTY3JpcHRPYmplY3QmIHJlc291cmNlT2JqKTsKKyAgICAgICAgYm9vbCB1cGRhdGVSZXNv
dXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0T2JqZWN0JiByZXNvdXJjZU9i
aik7CiAgICAgICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIpOwog
CiAgICAgICAgIHZvaWQgdXBkYXRlRm9jdXNlZE5vZGUoTm9kZSogbm9kZSk7CkBAIC04NiwxMSAr
ODksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJB
U0UpCi0gICAgICAgIGJvb2wgYWRkRGF0YWJhc2UoY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYg
ZGJPYmopOworICAgICAgICBib29sIGFkZERhdGFiYXNlKGNvbnN0IFNjcmlwdE9iamVjdCYgZGJP
YmopOwogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAgICAgICAg
Ym9vbCBhZGRET01TdG9yYWdlKGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIGRvbVN0b3JhZ2VP
YmopOworICAgICAgICBib29sIGFkZERPTVN0b3JhZ2UoY29uc3QgU2NyaXB0T2JqZWN0JiBkb21T
dG9yYWdlT2JqKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySlNPTk9iamVjdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3YjUx
NzguLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0LmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW5zcGVjdG9ySlNPTk9iamVjdDo6SW5zcGVjdG9y
SlNPTk9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi0gICAgOiBtX3NjcmlwdFN0YXRl
KHNjcmlwdFN0YXRlKQotewotICAgIG1fc2NyaXB0T2JqZWN0ID0gU2NyaXB0T2JqZWN0OjpjcmVh
dGVOZXcoc2NyaXB0U3RhdGUpOwotfQotCi1ib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIG1f
c2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KLWJvb2wg
SW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9i
amVjdCYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0
YXRlLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIHZhbHVlKQotewotICAg
IHJldHVybiBzZXQobmFtZSwgdmFsdWUuc2NyaXB0T2JqZWN0KCkpOwotfQotCi1ib29sIEluc3Bl
Y3RvckpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQotewotICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwg
dmFsdWUpOwotfQotCi1ib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBu
YW1lLCBkb3VibGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3Nj
cmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6
c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGxvbmcgbG9uZyB2YWx1ZSkKLXsKLSAgICByZXR1cm4gbV9z
Y3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKLX0KLQotYm9vbCBJ
bnNwZWN0b3JKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKQotewot
ICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUp
OwotfQotCi1ib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBi
b29sIHZhbHVlKQotewotICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0
ZSwgbmFtZSwgdmFsdWUpOwotfQotCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9ySlNPTk9iamVjdDo6
c2NyaXB0T2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Q7Ci19Ci0K
LUluc3BlY3RvckpTT05PYmplY3QgSW5zcGVjdG9ySlNPTk9iamVjdDo6Y3JlYXRlTmV3KFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSkKLXsKLSAgICByZXR1cm4gSW5zcGVjdG9ySlNPTk9iamVjdChz
Y3JpcHRTdGF0ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckpTT05PYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg1
OGZmMi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI2lmbmRlZiBJbnNwZWN0b3JKU09O
T2JqZWN0X2gKLSNkZWZpbmUgSW5zcGVjdG9ySlNPTk9iamVjdF9oCi0KLSNpbmNsdWRlICJTY3Jp
cHRPYmplY3QuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgY2xhc3MgU3RyaW5nOwotCi0gICAgY2xhc3MgSW5zcGVjdG9ySlNPTk9iamVjdCB7
Ci0gICAgcHVibGljOgotICAgICAgICBib29sIHNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYpOwotICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnNw
ZWN0b3JKU09OT2JqZWN0Jik7Ci0gICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IFNjcmlwdE9iamVjdCYpOwotICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBTdHJpbmcmKTsKLSAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgZG91Ymxl
KTsKLSAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nKTsKLSAgICAg
ICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgaW50KTsKLSAgICAgICAgYm9vbCBzZXQoY29u
c3QgY2hhciogbmFtZSwgYm9vbCk7Ci0gICAgICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3Qo
KSBjb25zdDsKLQotICAgICAgICBzdGF0aWMgSW5zcGVjdG9ySlNPTk9iamVjdCBjcmVhdGVOZXco
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKTsKLSAgICBwcml2YXRlOgotICAgICAgICBJbnNwZWN0
b3JKU09OT2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIFNjcmlwdFN0
YXRlKiBtX3NjcmlwdFN0YXRlOwotICAgICAgICBTY3JpcHRPYmplY3QgbV9zY3JpcHRPYmplY3Q7
Ci0gICAgfTsKLX0KLQotI2VuZGlmIC8vIEluc3BlY3RvckpTT05PYmplY3QuaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCmluZGV4IDE1ZWNjZTAuLjhlNmU5YjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAog
I2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckpTT05PYmplY3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBv
cHVsYXRlSGVhZGVyc09iamVjdChJbnNwZWN0b3JKU09OT2JqZWN0KiBvYmplY3QsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIGhlYWRlcnMpCitzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3Qo
U2NyaXB0T2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7CiAg
ICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKICAg
ICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTExNiw4ICsxMTYsOCBAQCBzdGF0aWMgdm9pZCBwb3B1
bGF0ZUhlYWRlcnNPYmplY3QoSW5zcGVjdG9ySlNPTk9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQ
SGVhZGVyTQogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0Q3JlYXRl
ZCkgewotICAgICAgICBJbnNwZWN0b3JKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+
bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOwotICAgICAgICBJbnNwZWN0b3JKU09OT2JqZWN0IHJl
cXVlc3RIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0luc3BlY3RvckpTT05PYmplY3QoKTsKKyAgICAg
ICAgU2NyaXB0T2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7
CisgICAgICAgIFNjcmlwdE9iamVjdCByZXF1ZXN0SGVhZGVycyA9IGZyb250ZW5kLT5uZXdTY3Jp
cHRPYmplY3QoKTsKICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXF1ZXN0SGVhZGVy
cywgbV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInJlcXVl
c3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVx
dWVzdFVSTCIsIHJlcXVlc3RVUkwoKSk7CkBAIC0xNDMsMTMgKzE0MywxMyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKQogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKE5vQ2hhbmdlKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSW5zcGVjdG9ySlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5l
d0luc3BlY3RvckpTT05PYmplY3QoKTsKKyAgICBTY3JpcHRPYmplY3QganNvbk9iamVjdCA9IGZy
b250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShS
ZXF1ZXN0Q2hhbmdlKSkgewogICAgICAgICBqc29uT2JqZWN0LnNldCgidXJsIiwgcmVxdWVzdFVS
TCgpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImRvbWFpbiIsIG1fcmVxdWVzdFVSTC5ob3N0
KCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkp
OwogICAgICAgICBqc29uT2JqZWN0LnNldCgibGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RV
UkwubGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIEluc3BlY3RvckpTT05PYmplY3QgcmVx
dWVzdEhlYWRlcnMgPSBmcm9udGVuZC0+bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOworICAgICAg
ICBTY3JpcHRPYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0
KCk7CiAgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVxdWVzdEhlYWRlcnMsIG1fcmVx
dWVzdEhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0SGVhZGVy
cyIsIHJlcXVlc3RIZWFkZXJzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoIm1haW5SZXNvdXJj
ZSIsIG1faXNNYWluUmVzb3VyY2UpOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJleHBlY3RlZENvbnRlbnRMZW5ndGgiLCBtX2V4cGVj
dGVkQ29udGVudExlbmd0aCk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdGF0dXNDb2RlIiwg
bV9yZXNwb25zZVN0YXR1c0NvZGUpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgic3VnZ2VzdGVk
RmlsZW5hbWUiLCBtX3N1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICAgICAgSW5zcGVjdG9ySlNPTk9i
amVjdCByZXNwb25zZUhlYWRlcnMgPSBmcm9udGVuZC0+bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgp
OworICAgICAgICBTY3JpcHRPYmplY3QgcmVzcG9uc2VIZWFkZXJzID0gZnJvbnRlbmQtPm5ld1Nj
cmlwdE9iamVjdCgpOwogICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlc3BvbnNlSGVh
ZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJy
ZXNwb25zZUhlYWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOwogICAgICAgICBqc29uT2JqZWN0LnNl
dCgiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsK
</data>
<flag name="review"
          id="17869"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>