<?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>95983</bug_id>
          
          <creation_ts>2012-09-06 07:50:31 -0700</creation_ts>
          <short_desc>Web Inspector: Migrate Database to async protocol commands</short_desc>
          <delta_ts>2012-09-07 05:32:34 -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="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713281</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 07:50:31 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713300</commentid>
    <comment_count>1</comment_count>
      <attachid>162509</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 08:13:42 -0700</bug_when>
    <thetext>Created attachment 162509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713308</commentid>
    <comment_count>2</comment_count>
      <attachid>162509</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-06 08:22:02 -0700</bug_when>
    <thetext>Comment on attachment 162509
Patch

Attachment 162509 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13771360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713396</commentid>
    <comment_count>3</comment_count>
      <attachid>162531</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 10:05:17 -0700</bug_when>
    <thetext>Created attachment 162531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714292</commentid>
    <comment_count>4</comment_count>
      <attachid>162710</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-07 01:50:38 -0700</bug_when>
    <thetext>Created attachment 162710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714417</commentid>
    <comment_count>5</comment_count>
      <attachid>162710</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-07 05:07:02 -0700</bug_when>
    <thetext>Comment on attachment 162710
Patch

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

&gt; Source/WebCore/inspector/InspectorDatabaseAgent.cpp:284
&gt; +    UNUSED_PARAM(error);

Not necessary, just declare ...::executeSQL(ErrorString*, const String&amp; databaseId,...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714429</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-07 05:32:34 -0700</bug_when>
    <thetext>Committed r127861: &lt;http://trac.webkit.org/changeset/127861&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162509</attachid>
            <date>2012-09-06 08:13:42 -0700</date>
            <delta_ts>2012-09-06 10:05:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95983-20120906191322.patch</filename>
            <type>text/plain</type>
            <size>23469</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI5MjAyYzRjOTkzMWY5
MzZjOTg4NDAxYmU0N2I5MmQ0ZjJjNDRhOC4uMjNhOWRkZWQ5NGYwYjg0MDE2Y2UwNmI1NTg1NjA5
NjY4MzY3ZThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1pZ3JhdGUgRGF0YWJhc2UgdG8gYXN5bmMgcHJvdG9jb2wgY29tbWFuZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlk
T3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4
ZWN1dGVTUUwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6
CisgICAgICAgIChJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RhdGFiYXNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnBy
b3RvdHlwZS5leGVjdXRlU3FsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3Bh
dGNoZXIucHJvdG90eXBlLmFkZERhdGFiYXNlKToKKwogMjAxMi0wOS0wNiAgS2Vpc2hpIEhhdHRv
cmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZWZhY3RvciBDYWxlbmRhclBpY2tl
ciB0byBub3QgdXNlIGdsb2JhbCB2YXJpYWJsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9Fbmds
aXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMjA0N2Y5NzhlZjdmYTA4MjZhN2Zl
NDdkYzQ0YWQwY2YwMjZkMGY4MC4uYzU4OTZlNTU3NDNmOGQ5NTliMjQzOTU2ZDk2OGMzNGI2Mzk1
OWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcwpAQCAtMTUwLDcgKzE1MCw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIkRPTUNvbnRlbnQg
ZXZlbnQgZmlyZWQiXSA9ICJET01Db250ZW50IGV2ZW50IGZpcmVkIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkRPTUNvbnRlbnQgZXZlbnQiXSA9ICJET01Db250ZW50IGV2ZW50IjsKIGxvY2FsaXplZFN0
cmluZ3NbIkRPTSBOb2RlIENvdW50Il0gPSAiRE9NIE5vZGUgQ291bnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siRGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBleHBlY3RlZCB2ZXJzaW9uLiJdID0gIkRhdGFi
YXNlIG5vIGxvbmdlciBoYXMgZXhwZWN0ZWQgdmVyc2lvbi4iOwotbG9jYWxpemVkU3RyaW5nc1si
RGF0YWJhc2Ugbm90IGZvdW5kLiJdID0gIkRhdGFiYXNlIG5vdCBmb3VuZC4iOwogbG9jYWxpemVk
U3RyaW5nc1siRGVhY3RpdmF0ZSBhbGwgYnJlYWtwb2ludHMuIl0gPSAiRGVhY3RpdmF0ZSBhbGwg
YnJlYWtwb2ludHMuIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRlYWN0aXZhdGUgYWxsIGJyZWFrcG9p
bnRzIl0gPSAiRGVhY3RpdmF0ZSBhbGwgYnJlYWtwb2ludHMiOwogbG9jYWxpemVkU3RyaW5nc1si
RGVidWciXSA9ICJEZWJ1ZyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
aW5kZXggZTJkZTMzMDFhYzgxNjVkOTZhNTA3ZTAyZTVjMjRhMmM0ZDY3MzJjMi4uMzU2ZTk5OGZm
NGI0MDk1NGI0OGI2MTU4MTljZDFlMTIxN2RhMDVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgpAQCAtMTA3NCw3ICsxMDc0LDExIEBACiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgImlkIjogIkVycm9yIiwKICAgICAgICAgICAgICAgICAidHlwZSI6ICJv
YmplY3QiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBlcnJvci4i
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIGVycm9yLiIsCisgICAg
ICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibWVzc2FnZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJFcnJvciBtZXNz
YWdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb2RlIiwgInR5cGUiOiAi
aW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJFcnJvciBjb2RlLiIgfQorICAgICAgICAgICAgICAg
IF0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpAQCAt
MTA5NywxMyArMTEwMSwxNSBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAibmFtZSI6ICJleGVjdXRlU1FMIiwKKyAgICAgICAgICAgICAgICAiYXN5bmMi
OiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImRhdGFiYXNlSWQiLCAiJHJlZiI6ICJEYXRhYmFzZUlkIiB9LAogICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiB9CiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzdWNjZXNzIiwgInR5cGUiOiAiYm9vbGVhbiIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFuc2FjdGlvbklkIiwgInR5cGUiOiAiaW50
ZWdlciIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbHVtbk5hbWVzIiwgInR5
cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmlu
ZyIgfSB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhbHVlcyIsICJ0eXBlIjog
ImFycmF5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAidHlwZSI6ICJhbnkiIH19LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNxbEVycm9yIiwgIiRyZWYiOiAiRXJyb3Ii
LCAib3B0aW9uYWwiOiB0cnVlIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAg
ICAgICAgIF0sCkBAIC0xMTEzLDIxICsxMTE5LDYgQEAKICAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZSIsICIkcmVm
IjogIkRhdGFiYXNlIiB9CiAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJzcWxUcmFuc2FjdGlvblN1Y2NlZWRl
ZCIsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidHJhbnNhY3Rpb25JZCIsICJ0eXBlIjogImludGVnZXIiIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29sdW1uTmFtZXMiLCAidHlwZSI6ICJhcnJheSIsICJp
dGVtcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidmFsdWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogImFueSIg
fX0KLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICJuYW1lIjogInNxbFRyYW5zYWN0aW9uRmFpbGVkIiwKLSAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFu
c2FjdGlvbklkIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzcWxFcnJvciIsICIkcmVmIjogIkVycm9yIiB9Ci0gICAgICAgICAgICAgICAgXQog
ICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCA5OGM5MzYzYWU2OTdk
NDY4MzRlYzNiNjFkNDNhM2VlZDQ0ODA5ZWFjLi5iZTRhNWJjNjkxYTQyNjE4NTNjZTY0NTI3YTVj
NzQ0YjhmNzY2MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC01MSw1NiArNTEsMzUgQEAKIAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAordHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6RGF0YWJhc2VDb21tYW5kSGFuZGxlcjo6RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1dGVTUUxD
YWxsYmFjazsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGF0YWJhc2VBZ2Vu
dFN0YXRlIHsKIHN0YXRpYyBjb25zdCBjaGFyIGRhdGFiYXNlQWdlbnRFbmFibGVkW10gPSAiZGF0
YWJhc2VBZ2VudEVuYWJsZWQiOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6
RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
cm9udGVuZFByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250
ZW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9udGVuZFByb3ZpZGVy
KGluc3BlY3RvckZyb250ZW5kKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RnJvbnRlbmRQcm92
aWRlcigpIHsgfQotCi0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKiBmcm9udGVuZCgp
IHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmQ7IH0KLSAgICB2b2lkIGNsZWFyRnJvbnRlbmQo
KSB7IG1faW5zcGVjdG9yRnJvbnRlbmQgPSAwOyB9Ci1wcml2YXRlOgotICAgIEZyb250ZW5kUHJv
dmlkZXIoSW5zcGVjdG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250ZW5kKSA6IG1faW5zcGVjdG9y
RnJvbnRlbmQoaW5zcGVjdG9yRnJvbnRlbmQtPmRhdGFiYXNlKCkpIHsgfQotICAgIEluc3BlY3Rv
ckZyb250ZW5kOjpEYXRhYmFzZSogbV9pbnNwZWN0b3JGcm9udGVuZDsKLX07Ci0KIG5hbWVzcGFj
ZSB7CiAKLWludCBsYXN0VHJhbnNhY3Rpb25JZCA9IDA7Ci0KLXZvaWQgcmVwb3J0VHJhbnNhY3Rp
b25GYWlsZWQoSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKiBmcm9udGVuZCwgaW50IHRyYW5z
YWN0aW9uSWQsIFNRTEVycm9yKiBlcnJvcikKK3ZvaWQgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQo
RXhlY3V0ZVNRTENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2ssIFNRTEVycm9yKiBlcnJvcikKIHsK
LSAgICBpZiAoIWZyb250ZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZXJyb3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGVy
cm9yT2JqZWN0LT5zZXRTdHJpbmcoIm1lc3NhZ2UiLCBlcnJvci0+bWVzc2FnZSgpKTsKLSAgICBl
cnJvck9iamVjdC0+c2V0TnVtYmVyKCJjb2RlIiwgZXJyb3ItPmNvZGUoKSk7Ci0gICAgZnJvbnRl
bmQtPnNxbFRyYW5zYWN0aW9uRmFpbGVkKHRyYW5zYWN0aW9uSWQsIGVycm9yT2JqZWN0KTsKKyAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gZXJyb3JPYmplY3QgPSBUeXBl
QnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yOjpjcmVhdGUoKQorICAgICAgICAuc2V0TWVzc2FnZShl
cnJvci0+bWVzc2FnZSgpKQorICAgICAgICAuc2V0Q29kZShlcnJvci0+Y29kZSgpKTsKKyAgICBy
ZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKDAsIDAsIGVycm9yT2JqZWN0LnJlbGVhc2UoKSk7
CiB9CiAKIGNsYXNzIFN0YXRlbWVudENhbGxiYWNrIDogcHVibGljIFNRTFN0YXRlbWVudENhbGxi
YWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0ZW1lbnRDYWxsYmFjaz4g
Y3JlYXRlKGludCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV4ZWN1dGVTUUxDYWxs
YmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdGF0ZW1lbnRDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBmcm9udGVuZFByb3ZpZGVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGVtZW50Q2FsbGJhY2socmVxdWVzdENhbGxi
YWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50Q2FsbGJhY2soKSB7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiosIFNRTFJlc3VsdFNl
dCogcmVzdWx0U2V0KQogICAgIHsKLSAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZy
b250ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAgICBTUUxSZXN1bHRT
ZXRSb3dMaXN0KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAKICAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gY29sdW1uTmFtZXMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CkBAIC0xMTgsOTIgKzk3LDg0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3Bl
Y3RvclZhbHVlOjpudWxsKCkpOyBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPnNxbFRyYW5zYWN0aW9uU3VjY2Vl
ZGVkKG1fdHJhbnNhY3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcyk7CisgICAgICAgIG1fcmVx
dWVzdENhbGxiYWNrLT5zZW5kU3VjY2Vzcyhjb2x1bW5OYW1lcy5yZWxlYXNlKCksIHZhbHVlcy5y
ZWxlYXNlKCksIDApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgU3RhdGVtZW50Q2FsbGJhY2soaW50IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlcikKLSAg
ICAgICAgOiBtX3RyYW5zYWN0aW9uSWQodHJhbnNhY3Rpb25JZCkKLSAgICAgICAgLCBtX2Zyb250
ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikgeyB9Ci0gICAgaW50IG1fdHJhbnNhY3Rpb25J
ZDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4g
bV9mcm9udGVuZFByb3ZpZGVyOworICAgIFN0YXRlbWVudENhbGxiYWNrKFBhc3NSZWZQdHI8RXhl
Y3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCisgICAgICAgIDogbV9yZXF1ZXN0Q2Fs
bGJhY2socmVxdWVzdENhbGxiYWNrKSB7IH0KKyAgICBSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNr
PiBtX3JlcXVlc3RDYWxsYmFjazsKIH07CiAKIGNsYXNzIFN0YXRlbWVudEVycm9yQ2FsbGJhY2sg
OiBwdWJsaWMgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gY3JlYXRlKGludCB0cmFuc2FjdGlv
bklkLCBQYXNzUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+
IGZyb250ZW5kUHJvdmlkZXIpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGVtZW50RXJyb3JD
YWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2Fs
bGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRlbWVudEVycm9y
Q2FsbGJhY2sodHJhbnNhY3Rpb25JZCwgZnJvbnRlbmRQcm92aWRlcikpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFN0YXRlbWVudEVycm9yQ2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50RXJyb3JDYWxsYmFjaygpIHsgfQogCiAg
ICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiwgU1FMRXJyb3IqIGVy
cm9yKQogICAgIHsKLSAgICAgICAgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQobV9mcm9udGVuZFBy
b3ZpZGVyLT5mcm9udGVuZCgpLCBtX3RyYW5zYWN0aW9uSWQsIGVycm9yKTsKKyAgICAgICAgcmVw
b3J0VHJhbnNhY3Rpb25GYWlsZWQobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCksIGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7ICAKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU3RhdGVtZW50RXJy
b3JDYWxsYmFjayhpbnQgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQotICAgICAgICA6IG1f
dHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQotICAgICAgICAsIG1fZnJvbnRlbmRQcm92aWRl
cihmcm9udGVuZFByb3ZpZGVyKSB7IH0KLSAgICBpbnQgbV90cmFuc2FjdGlvbklkOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5k
UHJvdmlkZXI7CisgICAgU3RhdGVtZW50RXJyb3JDYWxsYmFjayhQYXNzUmVmUHRyPEV4ZWN1dGVT
UUxDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNr
KHJlcXVlc3RDYWxsYmFjaykgeyB9CisgICAgUmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4gbV9y
ZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbkNhbGxiYWNrIDogcHVibGlj
IFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwg
aW50IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6RnJv
bnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlcikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
cmFuc2FjdGlvbkNhbGxiYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIFBh
c3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5zYWN0aW9uQ2FsbGJhY2soc3FsU3RhdGVtZW50
LCB0cmFuc2FjdGlvbklkLCBmcm9udGVuZFByb3ZpZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVHJhbnNhY3Rpb25DYWxsYmFjayhzcWxTdGF0ZW1lbnQsIHJlcXVlc3RDYWxsYmFj
aykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CiAgICAgewotICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAg
ICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFsdWVzOwotICAgICAg
ICBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNhbGxiYWNrKFN0YXRlbWVudENhbGxiYWNr
OjpjcmVhdGUobV90cmFuc2FjdGlvbklkLCBtX2Zyb250ZW5kUHJvdmlkZXIpKTsKLSAgICAgICAg
UmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soU3RhdGVtZW50
RXJyb3JDYWxsYmFjazo6Y3JlYXRlKG1fdHJhbnNhY3Rpb25JZCwgbV9mcm9udGVuZFByb3ZpZGVy
KSk7CisgICAgICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2soU3RhdGVt
ZW50Q2FsbGJhY2s6OmNyZWF0ZShtX3JlcXVlc3RDYWxsYmFjay5nZXQoKSkpOworICAgICAgICBS
ZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCkpKTsKICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKG1f
c3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogcHJpdmF0ZToK
LSAgICBUcmFuc2FjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBpbnQg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpGcm9udGVu
ZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQorICAgIFRyYW5zYWN0aW9uQ2FsbGJhY2soY29u
c3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiBy
ZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogbV9zcWxTdGF0ZW1lbnQoc3FsU3RhdGVtZW50KQot
ICAgICAgICAsIG1fdHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQotICAgICAgICAsIG1fZnJv
bnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKSB7IH0KKyAgICAgICAgLCBtX3JlcXVlc3RD
YWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQogICAgIFN0cmluZyBtX3NxbFN0YXRlbWVudDsK
LSAgICBpbnQgbV90cmFuc2FjdGlvbklkOwotICAgIFJlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgUmVmUHRyPEV4
ZWN1dGVTUUxDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCiBjbGFzcyBUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
IGNyZWF0ZShpbnQgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXhlY3V0
ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBmcm9udGVu
ZFByb3ZpZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjaygpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50
KFNRTEVycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVk
KG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSwgbV90cmFuc2FjdGlvbklkLCBlcnJvcik7
CisgICAgICAgIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKG1fcmVxdWVzdENhbGxiYWNrLmdldCgp
LCBlcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIHByaXZhdGU6Ci0gICAgVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrKGludCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIpCi0g
ICAgICAgIDogbV90cmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQpCi0gICAgICAgICwgbV9mcm9u
dGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIpIHsgfQotICAgIGludCBtX3RyYW5zYWN0aW9u
SWQ7Ci0gICAgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+
IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2soUGFzc1Jl
ZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICAgICAgOiBtX3Jl
cXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQorICAgIFJlZlB0cjxFeGVjdXRlU1FM
Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwogfTsKIAogY2xhc3MgVHJhbnNhY3Rpb25TdWNj
ZXNzQ2FsbGJhY2sgOiBwdWJsaWMgVm9pZENhbGxiYWNrIHsKQEAgLTIzMyw4ICsyMDQsOCBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShQYXNzUmVmUHRyPERh
dGFiYXNlPiBkYXRhYmFzZSwgY29ucwogICAgIFJlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlPiByZXNvdXJjZSA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmNyZWF0ZShkYXRhYmFz
ZSwgZG9tYWluLCBuYW1lLCB2ZXJzaW9uKTsKICAgICBtX3Jlc291cmNlcy5zZXQocmVzb3VyY2Ut
PmlkKCksIHJlc291cmNlKTsKICAgICAvLyBSZXNvdXJjZXMgYXJlIG9ubHkgYm91bmQgd2hpbGUg
dmlzaWJsZS4KLSAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyICYmIG1fZW5hYmxlZCkKLSAgICAg
ICAgcmVzb3VyY2UtPmJpbmQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKKyAgICBp
ZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCisgICAgICAgIHJlc291cmNlLT5iaW5kKG1fZnJv
bnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNsZWFyUmVzb3VyY2Vz
KCkKQEAgLTI1NiwxMyArMjI3LDEyIEBAIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0
b3JEYXRhYmFzZUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpzZXRGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7Ci0gICAgbV9mcm9udGVuZFByb3Zp
ZGVyID0gRnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKGZyb250ZW5kKTsKKyAgICBtX2Zyb250ZW5k
ID0gZnJvbnRlbmQtPmRhdGFiYXNlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6Y2xlYXJGcm9udGVuZCgpCiB7Ci0gICAgbV9mcm9udGVuZFByb3ZpZGVyLT5jbGVhckZyb250
ZW5kKCk7Ci0gICAgbV9mcm9udGVuZFByb3ZpZGVyLmNsZWFyKCk7CisgICAgbV9mcm9udGVuZCA9
IDA7CiAgICAgZGlzYWJsZSgwKTsKIH0KIApAQCAtMjc1LDcgKzI0NSw3IEBAIHZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAogICAgIERhdGFiYXNlUmVz
b3VyY2VzTWFwOjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAg
ICBmb3IgKERhdGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJl
Z2luKCk7IGl0ICE9IGRhdGFiYXNlc0VuZDsgKytpdCkKLSAgICAgICAgaXQtPnNlY29uZC0+Ymlu
ZChtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOworICAgICAgICBpdC0+c2Vjb25kLT5i
aW5kKG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcqKQpAQCAtMzA5LDI1ICsyNzksMjUgQEAgdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25z
dCBTdHIKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZXhlY3V0ZVNR
TChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgYm9vbCogc3VjY2VzcywgaW50KiB0cmFuc2FjdGlvbklkKQordm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBQYXNzUmVmUHRyPEV4ZWN1
dGVTUUxDYWxsYmFjaz4gcHJwUmVxdWVzdENhbGxiYWNrKQogeworICAgIFJlZlB0cjxFeGVjdXRl
U1FMQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjayA9IHBycFJlcXVlc3RDYWxsYmFjazsKKwogICAg
IGlmICghbV9lbmFibGVkKSB7Ci0gICAgICAgICplcnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBu
b3QgZW5hYmxlZCI7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkRhdGFi
YXNlIGFnZW50IGlzIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBEYXRhYmFzZSogZGF0YWJhc2UgPSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlm
ICghZGF0YWJhc2UpIHsKLSAgICAgICAgKnN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgcmVxdWVz
dENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiRGF0YWJhc2Ugbm90IGZvdW5kIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAqdHJhbnNhY3Rpb25JZCA9ICsrbGFzdFRyYW5zYWN0aW9uSWQ7
Ci0gICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKFRyYW5zYWN0aW9u
Q2FsbGJhY2s6OmNyZWF0ZShxdWVyeSwgKnRyYW5zYWN0aW9uSWQsIG1fZnJvbnRlbmRQcm92aWRl
cikpOwotICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2soVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUoKnRyYW5zYWN0aW9uSWQsIG1fZnJv
bnRlbmRQcm92aWRlcikpOworICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxs
YmFjayhUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUocXVlcnksIHJlcXVlc3RDYWxsYmFjay5n
ZXQoKSkpOworICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2soVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUocmVxdWVzdENhbGxiYWNrLmdl
dCgpKSk7CiAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKFRyYW5zYWN0
aW9uU3VjY2Vzc0NhbGxiYWNrOjpjcmVhdGUoKSk7CiAgICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9u
KGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxs
YmFjay5yZWxlYXNlKCkpOwotICAgICpzdWNjZXNzID0gdHJ1ZTsKIH0KIAogU3RyaW5nIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmRhdGFiYXNlSWQoRGF0YWJhc2UqIGRhdGFiYXNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXgg
MjkwMmM2ZWUyOWIyYzNiMmUyM2Y4NjU1M2I0MmE1YWVhYjJiNTFlNS4uZGVlMWQyMDlmNmFlNWM0
ZWE3ZTQyNWU5NTE2N2Q4NjQ5YjIwZmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkluc3Bl
Y3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00OSw4ICs1MCw2IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudDxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpEYXRhYmFzZUNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICBjbGFz
cyBGcm9udGVuZFByb3ZpZGVyOwotCiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRGF0
YWJhc2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkp
OwpAQCAtNjcsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIG5h
bWVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCogc3VjY2VzcywgaW50
KiB0cmFuc2FjdGlvbklkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1Jl
ZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+KTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmpl
Y3RlZCBzY3JpcHQuCiAgICAgU3RyaW5nIGRhdGFiYXNlSWQoRGF0YWJhc2UqKTsKQEAgLTc5LDkg
Kzc4LDkgQEAgcHJpdmF0ZToKICAgICBEYXRhYmFzZSogZGF0YWJhc2VGb3JJZChjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWQpOwogICAgIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UqIGZpbmRCeUZp
bGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCisgICAgSW5zcGVjdG9yRnJvbnRlbmQ6
OkRhdGFiYXNlKiBtX2Zyb250ZW5kOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiA+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwogICAg
IERhdGFiYXNlUmVzb3VyY2VzTWFwIG1fcmVzb3VyY2VzOwotICAgIFJlZlB0cjxGcm9udGVuZFBy
b3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwppbmRleCA5
ZTY3Njk2OWY4MTU4YTI4MmIwMzliMTQyYzU4MTdlMWI5NGM5NWQ4Li5jYWFlZGI1ODcwNGU4ZDRl
OTEyYTcwOWUxNmQ1YjBkN2RjYzQ3ZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGF0YWJhc2UuanMKQEAgLTk0LDIyICs5NCwzNSBAQCBXZWJJbnNwZWN0b3Iu
RGF0YWJhc2UucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9
IHF1ZXJ5Ci0gICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48c3RyaW5nPiwgQXJyYXkuPCo+
KX0gb25TdWNjZXNzCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbihEYXRhYmFzZUFnZW50LkVycm9y
KX0gb25FcnJvcgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPHN0cmluZz49LCBBcnJh
eS48Kj49KX0gb25TdWNjZXNzCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpfSBvbkVy
cm9yCiAgICAgICovCiAgICAgZXhlY3V0ZVNxbDogZnVuY3Rpb24ocXVlcnksIG9uU3VjY2Vzcywg
b25FcnJvcikKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNz
LCB0cmFuc2FjdGlvbklkKQorICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHs/UHJvdG9j
b2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz49fSBjb2x1
bW5OYW1lcworICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjwqPj19IHZhbHVlcworICAgICAgICAg
KiBAcGFyYW0ge0RhdGFiYXNlQWdlbnQuRXJyb3I9fSBlcnJvck9iagorICAgICAgICAgKi8KKyAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIGNvbHVtbk5hbWVzLCB2YWx1ZXMsIGVycm9y
T2JqKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAg
ICBvbkVycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBvbkVycm9yKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRGF0YWJhc2Ugbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAg
IGlmIChlcnJvck9iaikgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlOworICAgICAgICAg
ICAgICAgIGlmIChlcnJvck9iai5tZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gZXJyb3JPYmoubWVzc2FnZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChlcnJvck9iai5j
b2RlID09IDIpCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkRhdGFiYXNlIG5vIGxvbmdlciBoYXMgZXhwZWN0ZWQgdmVyc2lvbi4iKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFuIHVuZXhwZWN0ZWQgZXJyb3IgJXMgb2NjdXJyZWQuIiwgZXJyb3JPYmou
Y29kZSk7CisgICAgICAgICAgICAgICAgb25FcnJvcihtZXNzYWdlKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9tb2RlbC5fY2FsbGJh
Y2tzW3RyYW5zYWN0aW9uSWRdID0geyJvblN1Y2Nlc3MiOiBvblN1Y2Nlc3MsICJvbkVycm9yIjog
b25FcnJvcn07CisgICAgICAgICAgICBvblN1Y2Nlc3MoY29sdW1uTmFtZXMsIHZhbHVlcyk7CiAg
ICAgICAgIH0KICAgICAgICAgRGF0YWJhc2VBZ2VudC5leGVjdXRlU1FMKHRoaXMuX2lkLCBxdWVy
eSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfQpAQCAtMTIxLDcgKzEzNCw2IEBAIFdlYklu
c3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5EYXRhYmFz
ZU1vZGVsID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9OwogICAgIHRo
aXMuX2RhdGFiYXNlcyA9IFtdOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEYXRhYmFz
ZURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIodGhpcykpOwog
ICAgIERhdGFiYXNlQWdlbnQuZW5hYmxlKCk7CkBAIC0xNTksMzcgKzE3MSw2IEBAIFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX2Rh
dGFiYXNlcy5wdXNoKGRhdGFiYXNlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFiYXNlTW9kZWwuRXZlbnRzLkRhdGFiYXNlQWRkZWQsIGRh
dGFiYXNlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHRyYW5z
YWN0aW9uSWQKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBjb2x1bW5OYW1lcwotICAg
ICAqIEBwYXJhbSB7QXJyYXkuPCo+fSB2YWx1ZXMKLSAgICAgKi8KLSAgICBfc3FsVHJhbnNhY3Rp
b25TdWNjZWVkZWQ6IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMp
Ci0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9jYWxsYmFj
a3NbdHJhbnNhY3Rpb25JZF1bIm9uU3VjY2VzcyJdOwotICAgICAgICBkZWxldGUgdGhpcy5fY2Fs
bGJhY2tzW3RyYW5zYWN0aW9uSWRdOwotICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAg
ICBjYWxsYmFjayhjb2x1bW5OYW1lcywgdmFsdWVzKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtudW1iZXJ9IHRyYW5zYWN0aW9uSWQKLSAgICAgKiBAcGFyYW0gez9EYXRhYmFz
ZUFnZW50LkVycm9yfSBlcnJvck9iagotICAgICAqLwotICAgIF9zcWxUcmFuc2FjdGlvbkZhaWxl
ZDogZnVuY3Rpb24odHJhbnNhY3Rpb25JZCwgZXJyb3JPYmopCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF1bIm9u
RXJyb3IiXTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsK
LSAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2soZXJyb3JPYmopOwog
ICAgIH0KIH0KIApAQCAtMjA1LDggKzE4Niw2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3Bh
dGNoZXIgPSBmdW5jdGlvbihtb2RlbCkKICAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwogfQogCi1X
ZWJJbnNwZWN0b3IuRGF0YWJhc2VEaXNwYXRjaGVyLl9jYWxsYmFja3MgPSB7fTsKLQogV2ViSW5z
cGVjdG9yLkRhdGFiYXNlRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtEYXRhYmFzZUFnZW50LkRhdGFiYXNlfSBwYXlsb2FkCkBAIC0yMTksMjUgKzE5OCw2
IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcGF5bG9hZC5kb21haW4sCiAgICAgICAgICAgICBwYXlsb2FkLm5hbWUsCiAgICAgICAg
ICAgICBwYXlsb2FkLnZlcnNpb24pKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFt
IHtudW1iZXJ9IHRyYW5zYWN0aW9uSWQKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBj
b2x1bW5OYW1lcwotICAgICAqIEBwYXJhbSB7QXJyYXkuPCo+fSB2YWx1ZXMKLSAgICAgKi8KLSAg
ICBzcWxUcmFuc2FjdGlvblN1Y2NlZWRlZDogZnVuY3Rpb24odHJhbnNhY3Rpb25JZCwgY29sdW1u
TmFtZXMsIHZhbHVlcykKLSAgICB7Ci0gICAgICAgIHRoaXMuX21vZGVsLl9zcWxUcmFuc2FjdGlv
blN1Y2NlZWRlZCh0cmFuc2FjdGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVzKTsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHRyYW5zYWN0aW9uSWQKLSAgICAgKiBA
cGFyYW0gez9EYXRhYmFzZUFnZW50LkVycm9yfSBlcnJvck9iagotICAgICAqLwotICAgIHNxbFRy
YW5zYWN0aW9uRmFpbGVkOiBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBlcnJvck9iaikKLSAgICB7
Ci0gICAgICAgIHRoaXMuX21vZGVsLl9zcWxUcmFuc2FjdGlvbkZhaWxlZCh0cmFuc2FjdGlvbklk
LCBlcnJvck9iaik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcwppbmRleCAzOGRmNDZhMjIyNTBi
M2UxYTRiYTRhYTRmZjUyMzQ1ZTVmMzdhMmFlLi5kYjA2YzFjYjIzYThiNTQ3OWVlNGFjZjAzNTA0
YjdmODM1MjE0ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMKQEAgLTE0OCwxOCArMTQ4LDkgQEAgV2ViSW5z
cGVjdG9yLkRhdGFiYXNlUXVlcnlWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhYmFzZVF1ZXJ5Vmlldy5F
dmVudHMuU2NoZW1hVXBkYXRlZCwgdGhpcy5kYXRhYmFzZSk7CiAgICAgfSwKIAotICAgIF9xdWVy
eUVycm9yOiBmdW5jdGlvbihxdWVyeSwgZXJyb3IpCisgICAgX3F1ZXJ5RXJyb3I6IGZ1bmN0aW9u
KHF1ZXJ5LCBlcnJvck1lc3NhZ2UpCiAgICAgewotICAgICAgICBpZiAodHlwZW9mIGVycm9yID09
PSAic3RyaW5nIikKLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZXJyb3I7Ci0gICAgICAgIGVs
c2UgaWYgKGVycm9yLm1lc3NhZ2UpCi0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGVycm9yLm1l
c3NhZ2U7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yLmNvZGUgPT0gMikKLSAgICAgICAgICAgIHZh
ciBtZXNzYWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEYXRhYmFzZSBubyBsb25nZXIgaGFz
IGV4cGVjdGVkIHZlcnNpb24uIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhciBtZXNz
YWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbiB1bmV4cGVjdGVkIGVycm9yICVzIG9jY3Vy
cmVkLiIsIGVycm9yLmNvZGUpOwotCi0gICAgICAgIHRoaXMuX2FwcGVuZEVycm9yUXVlcnlSZXN1
bHQocXVlcnksIG1lc3NhZ2UpOworICAgICAgICB0aGlzLl9hcHBlbmRFcnJvclF1ZXJ5UmVzdWx0
KHF1ZXJ5LCBlcnJvck1lc3NhZ2UpOwogICAgIH0sCiAKICAgICAvKioK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162531</attachid>
            <date>2012-09-06 10:05:17 -0700</date>
            <delta_ts>2012-09-07 01:50:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95983-20120906210457.patch</filename>
            <type>text/plain</type>
            <size>23497</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI5MjAyYzRjOTkzMWY5
MzZjOTg4NDAxYmU0N2I5MmQ0ZjJjNDRhOC4uMjNhOWRkZWQ5NGYwYjg0MDE2Y2UwNmI1NTg1NjA5
NjY4MzY3ZThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1pZ3JhdGUgRGF0YWJhc2UgdG8gYXN5bmMgcHJvdG9jb2wgY29tbWFuZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlk
T3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4
ZWN1dGVTUUwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6
CisgICAgICAgIChJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RhdGFiYXNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnBy
b3RvdHlwZS5leGVjdXRlU3FsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3Bh
dGNoZXIucHJvdG90eXBlLmFkZERhdGFiYXNlKToKKwogMjAxMi0wOS0wNiAgS2Vpc2hpIEhhdHRv
cmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZWZhY3RvciBDYWxlbmRhclBpY2tl
ciB0byBub3QgdXNlIGdsb2JhbCB2YXJpYWJsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9Fbmds
aXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMjA0N2Y5NzhlZjdmYTA4MjZhN2Zl
NDdkYzQ0YWQwY2YwMjZkMGY4MC4uYzU4OTZlNTU3NDNmOGQ5NTliMjQzOTU2ZDk2OGMzNGI2Mzk1
OWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcwpAQCAtMTUwLDcgKzE1MCw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIkRPTUNvbnRlbnQg
ZXZlbnQgZmlyZWQiXSA9ICJET01Db250ZW50IGV2ZW50IGZpcmVkIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkRPTUNvbnRlbnQgZXZlbnQiXSA9ICJET01Db250ZW50IGV2ZW50IjsKIGxvY2FsaXplZFN0
cmluZ3NbIkRPTSBOb2RlIENvdW50Il0gPSAiRE9NIE5vZGUgQ291bnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siRGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBleHBlY3RlZCB2ZXJzaW9uLiJdID0gIkRhdGFi
YXNlIG5vIGxvbmdlciBoYXMgZXhwZWN0ZWQgdmVyc2lvbi4iOwotbG9jYWxpemVkU3RyaW5nc1si
RGF0YWJhc2Ugbm90IGZvdW5kLiJdID0gIkRhdGFiYXNlIG5vdCBmb3VuZC4iOwogbG9jYWxpemVk
U3RyaW5nc1siRGVhY3RpdmF0ZSBhbGwgYnJlYWtwb2ludHMuIl0gPSAiRGVhY3RpdmF0ZSBhbGwg
YnJlYWtwb2ludHMuIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRlYWN0aXZhdGUgYWxsIGJyZWFrcG9p
bnRzIl0gPSAiRGVhY3RpdmF0ZSBhbGwgYnJlYWtwb2ludHMiOwogbG9jYWxpemVkU3RyaW5nc1si
RGVidWciXSA9ICJEZWJ1ZyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
aW5kZXggZTJkZTMzMDFhYzgxNjVkOTZhNTA3ZTAyZTVjMjRhMmM0ZDY3MzJjMi4uMzU2ZTk5OGZm
NGI0MDk1NGI0OGI2MTU4MTljZDFlMTIxN2RhMDVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgpAQCAtMTA3NCw3ICsxMDc0LDExIEBACiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgImlkIjogIkVycm9yIiwKICAgICAgICAgICAgICAgICAidHlwZSI6ICJv
YmplY3QiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBlcnJvci4i
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIGVycm9yLiIsCisgICAg
ICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibWVzc2FnZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJFcnJvciBtZXNz
YWdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb2RlIiwgInR5cGUiOiAi
aW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJFcnJvciBjb2RlLiIgfQorICAgICAgICAgICAgICAg
IF0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpAQCAt
MTA5NywxMyArMTEwMSwxNSBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAibmFtZSI6ICJleGVjdXRlU1FMIiwKKyAgICAgICAgICAgICAgICAiYXN5bmMi
OiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImRhdGFiYXNlSWQiLCAiJHJlZiI6ICJEYXRhYmFzZUlkIiB9LAogICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiB9CiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzdWNjZXNzIiwgInR5cGUiOiAiYm9vbGVhbiIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFuc2FjdGlvbklkIiwgInR5cGUiOiAiaW50
ZWdlciIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbHVtbk5hbWVzIiwgInR5
cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmlu
ZyIgfSB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhbHVlcyIsICJ0eXBlIjog
ImFycmF5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAidHlwZSI6ICJhbnkiIH19LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNxbEVycm9yIiwgIiRyZWYiOiAiRXJyb3Ii
LCAib3B0aW9uYWwiOiB0cnVlIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAg
ICAgICAgIF0sCkBAIC0xMTEzLDIxICsxMTE5LDYgQEAKICAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZSIsICIkcmVm
IjogIkRhdGFiYXNlIiB9CiAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJzcWxUcmFuc2FjdGlvblN1Y2NlZWRl
ZCIsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidHJhbnNhY3Rpb25JZCIsICJ0eXBlIjogImludGVnZXIiIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29sdW1uTmFtZXMiLCAidHlwZSI6ICJhcnJheSIsICJp
dGVtcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidmFsdWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogImFueSIg
fX0KLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICJuYW1lIjogInNxbFRyYW5zYWN0aW9uRmFpbGVkIiwKLSAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFu
c2FjdGlvbklkIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzcWxFcnJvciIsICIkcmVmIjogIkVycm9yIiB9Ci0gICAgICAgICAgICAgICAgXQog
ICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCA5OGM5MzYzYWU2OTdk
NDY4MzRlYzNiNjFkNDNhM2VlZDQ0ODA5ZWFjLi42ODM2MWY3MDNlZTZhY2UyNmU4YWQyNGEwMDUw
YWJhMzQzZjU0ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC01MSw1NiArNTEsMzUgQEAKIAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAordHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6RGF0YWJhc2VDb21tYW5kSGFuZGxlcjo6RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1dGVTUUxD
YWxsYmFjazsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRGF0YWJhc2VBZ2Vu
dFN0YXRlIHsKIHN0YXRpYyBjb25zdCBjaGFyIGRhdGFiYXNlQWdlbnRFbmFibGVkW10gPSAiZGF0
YWJhc2VBZ2VudEVuYWJsZWQiOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6
RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
cm9udGVuZFByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250
ZW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9udGVuZFByb3ZpZGVy
KGluc3BlY3RvckZyb250ZW5kKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+RnJvbnRlbmRQcm92
aWRlcigpIHsgfQotCi0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKiBmcm9udGVuZCgp
IHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmQ7IH0KLSAgICB2b2lkIGNsZWFyRnJvbnRlbmQo
KSB7IG1faW5zcGVjdG9yRnJvbnRlbmQgPSAwOyB9Ci1wcml2YXRlOgotICAgIEZyb250ZW5kUHJv
dmlkZXIoSW5zcGVjdG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250ZW5kKSA6IG1faW5zcGVjdG9y
RnJvbnRlbmQoaW5zcGVjdG9yRnJvbnRlbmQtPmRhdGFiYXNlKCkpIHsgfQotICAgIEluc3BlY3Rv
ckZyb250ZW5kOjpEYXRhYmFzZSogbV9pbnNwZWN0b3JGcm9udGVuZDsKLX07Ci0KIG5hbWVzcGFj
ZSB7CiAKLWludCBsYXN0VHJhbnNhY3Rpb25JZCA9IDA7Ci0KLXZvaWQgcmVwb3J0VHJhbnNhY3Rp
b25GYWlsZWQoSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKiBmcm9udGVuZCwgaW50IHRyYW5z
YWN0aW9uSWQsIFNRTEVycm9yKiBlcnJvcikKK3ZvaWQgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQo
RXhlY3V0ZVNRTENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2ssIFNRTEVycm9yKiBlcnJvcikKIHsK
LSAgICBpZiAoIWZyb250ZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZXJyb3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGVy
cm9yT2JqZWN0LT5zZXRTdHJpbmcoIm1lc3NhZ2UiLCBlcnJvci0+bWVzc2FnZSgpKTsKLSAgICBl
cnJvck9iamVjdC0+c2V0TnVtYmVyKCJjb2RlIiwgZXJyb3ItPmNvZGUoKSk7Ci0gICAgZnJvbnRl
bmQtPnNxbFRyYW5zYWN0aW9uRmFpbGVkKHRyYW5zYWN0aW9uSWQsIGVycm9yT2JqZWN0KTsKKyAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gZXJyb3JPYmplY3QgPSBUeXBl
QnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yOjpjcmVhdGUoKQorICAgICAgICAuc2V0TWVzc2FnZShl
cnJvci0+bWVzc2FnZSgpKQorICAgICAgICAuc2V0Q29kZShlcnJvci0+Y29kZSgpKTsKKyAgICBy
ZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKDAsIDAsIGVycm9yT2JqZWN0LnJlbGVhc2UoKSk7
CiB9CiAKIGNsYXNzIFN0YXRlbWVudENhbGxiYWNrIDogcHVibGljIFNRTFN0YXRlbWVudENhbGxi
YWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0ZW1lbnRDYWxsYmFjaz4g
Y3JlYXRlKGludCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV4ZWN1dGVTUUxDYWxs
YmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdGF0ZW1lbnRDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBmcm9udGVuZFByb3ZpZGVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGVtZW50Q2FsbGJhY2socmVxdWVzdENhbGxi
YWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50Q2FsbGJhY2soKSB7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiosIFNRTFJlc3VsdFNl
dCogcmVzdWx0U2V0KQogICAgIHsKLSAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZy
b250ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAgICBTUUxSZXN1bHRT
ZXRSb3dMaXN0KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAKICAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gY29sdW1uTmFtZXMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CkBAIC0xMTgsOTIgKzk3LDg0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3Bl
Y3RvclZhbHVlOjpudWxsKCkpOyBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPnNxbFRyYW5zYWN0aW9uU3VjY2Vl
ZGVkKG1fdHJhbnNhY3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcyk7CisgICAgICAgIG1fcmVx
dWVzdENhbGxiYWNrLT5zZW5kU3VjY2Vzcyhjb2x1bW5OYW1lcy5yZWxlYXNlKCksIHZhbHVlcy5y
ZWxlYXNlKCksIDApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgU3RhdGVtZW50Q2FsbGJhY2soaW50IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlcikKLSAg
ICAgICAgOiBtX3RyYW5zYWN0aW9uSWQodHJhbnNhY3Rpb25JZCkKLSAgICAgICAgLCBtX2Zyb250
ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikgeyB9Ci0gICAgaW50IG1fdHJhbnNhY3Rpb25J
ZDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4g
bV9mcm9udGVuZFByb3ZpZGVyOworICAgIFN0YXRlbWVudENhbGxiYWNrKFBhc3NSZWZQdHI8RXhl
Y3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCisgICAgICAgIDogbV9yZXF1ZXN0Q2Fs
bGJhY2socmVxdWVzdENhbGxiYWNrKSB7IH0KKyAgICBSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNr
PiBtX3JlcXVlc3RDYWxsYmFjazsKIH07CiAKIGNsYXNzIFN0YXRlbWVudEVycm9yQ2FsbGJhY2sg
OiBwdWJsaWMgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gY3JlYXRlKGludCB0cmFuc2FjdGlv
bklkLCBQYXNzUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+
IGZyb250ZW5kUHJvdmlkZXIpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGVtZW50RXJyb3JD
YWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2Fs
bGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRlbWVudEVycm9y
Q2FsbGJhY2sodHJhbnNhY3Rpb25JZCwgZnJvbnRlbmRQcm92aWRlcikpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFN0YXRlbWVudEVycm9yQ2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50RXJyb3JDYWxsYmFjaygpIHsgfQogCiAg
ICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiwgU1FMRXJyb3IqIGVy
cm9yKQogICAgIHsKLSAgICAgICAgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQobV9mcm9udGVuZFBy
b3ZpZGVyLT5mcm9udGVuZCgpLCBtX3RyYW5zYWN0aW9uSWQsIGVycm9yKTsKKyAgICAgICAgcmVw
b3J0VHJhbnNhY3Rpb25GYWlsZWQobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCksIGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7ICAKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU3RhdGVtZW50RXJy
b3JDYWxsYmFjayhpbnQgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQotICAgICAgICA6IG1f
dHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQotICAgICAgICAsIG1fZnJvbnRlbmRQcm92aWRl
cihmcm9udGVuZFByb3ZpZGVyKSB7IH0KLSAgICBpbnQgbV90cmFuc2FjdGlvbklkOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5k
UHJvdmlkZXI7CisgICAgU3RhdGVtZW50RXJyb3JDYWxsYmFjayhQYXNzUmVmUHRyPEV4ZWN1dGVT
UUxDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNr
KHJlcXVlc3RDYWxsYmFjaykgeyB9CisgICAgUmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4gbV9y
ZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbkNhbGxiYWNrIDogcHVibGlj
IFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwg
aW50IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6RnJv
bnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlcikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
cmFuc2FjdGlvbkNhbGxiYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIFBh
c3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5zYWN0aW9uQ2FsbGJhY2soc3FsU3RhdGVtZW50
LCB0cmFuc2FjdGlvbklkLCBmcm9udGVuZFByb3ZpZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVHJhbnNhY3Rpb25DYWxsYmFjayhzcWxTdGF0ZW1lbnQsIHJlcXVlc3RDYWxsYmFj
aykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CiAgICAgewotICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAg
ICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFsdWVzOwotICAgICAg
ICBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNhbGxiYWNrKFN0YXRlbWVudENhbGxiYWNr
OjpjcmVhdGUobV90cmFuc2FjdGlvbklkLCBtX2Zyb250ZW5kUHJvdmlkZXIpKTsKLSAgICAgICAg
UmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soU3RhdGVtZW50
RXJyb3JDYWxsYmFjazo6Y3JlYXRlKG1fdHJhbnNhY3Rpb25JZCwgbV9mcm9udGVuZFByb3ZpZGVy
KSk7CisgICAgICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2soU3RhdGVt
ZW50Q2FsbGJhY2s6OmNyZWF0ZShtX3JlcXVlc3RDYWxsYmFjay5nZXQoKSkpOworICAgICAgICBS
ZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCkpKTsKICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKG1f
c3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogcHJpdmF0ZToK
LSAgICBUcmFuc2FjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBpbnQg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpGcm9udGVu
ZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQorICAgIFRyYW5zYWN0aW9uQ2FsbGJhY2soY29u
c3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiBy
ZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogbV9zcWxTdGF0ZW1lbnQoc3FsU3RhdGVtZW50KQot
ICAgICAgICAsIG1fdHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQotICAgICAgICAsIG1fZnJv
bnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKSB7IH0KKyAgICAgICAgLCBtX3JlcXVlc3RD
YWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQogICAgIFN0cmluZyBtX3NxbFN0YXRlbWVudDsK
LSAgICBpbnQgbV90cmFuc2FjdGlvbklkOwotICAgIFJlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgUmVmUHRyPEV4
ZWN1dGVTUUxDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCiBjbGFzcyBUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
IGNyZWF0ZShpbnQgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXhlY3V0
ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBmcm9udGVu
ZFByb3ZpZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjaygpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50
KFNRTEVycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVk
KG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSwgbV90cmFuc2FjdGlvbklkLCBlcnJvcik7
CisgICAgICAgIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKG1fcmVxdWVzdENhbGxiYWNrLmdldCgp
LCBlcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIHByaXZhdGU6Ci0gICAgVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrKGludCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIpCi0g
ICAgICAgIDogbV90cmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQpCi0gICAgICAgICwgbV9mcm9u
dGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIpIHsgfQotICAgIGludCBtX3RyYW5zYWN0aW9u
SWQ7Ci0gICAgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+
IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2soUGFzc1Jl
ZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICAgICAgOiBtX3Jl
cXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQorICAgIFJlZlB0cjxFeGVjdXRlU1FM
Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwogfTsKIAogY2xhc3MgVHJhbnNhY3Rpb25TdWNj
ZXNzQ2FsbGJhY2sgOiBwdWJsaWMgVm9pZENhbGxiYWNrIHsKQEAgLTIzMyw4ICsyMDQsOCBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShQYXNzUmVmUHRyPERh
dGFiYXNlPiBkYXRhYmFzZSwgY29ucwogICAgIFJlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlPiByZXNvdXJjZSA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmNyZWF0ZShkYXRhYmFz
ZSwgZG9tYWluLCBuYW1lLCB2ZXJzaW9uKTsKICAgICBtX3Jlc291cmNlcy5zZXQocmVzb3VyY2Ut
PmlkKCksIHJlc291cmNlKTsKICAgICAvLyBSZXNvdXJjZXMgYXJlIG9ubHkgYm91bmQgd2hpbGUg
dmlzaWJsZS4KLSAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyICYmIG1fZW5hYmxlZCkKLSAgICAg
ICAgcmVzb3VyY2UtPmJpbmQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKKyAgICBp
ZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCisgICAgICAgIHJlc291cmNlLT5iaW5kKG1fZnJv
bnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNsZWFyUmVzb3VyY2Vz
KCkKQEAgLTI1NiwxMyArMjI3LDEyIEBAIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0
b3JEYXRhYmFzZUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpzZXRGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7Ci0gICAgbV9mcm9udGVuZFByb3Zp
ZGVyID0gRnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKGZyb250ZW5kKTsKKyAgICBtX2Zyb250ZW5k
ID0gZnJvbnRlbmQtPmRhdGFiYXNlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6Y2xlYXJGcm9udGVuZCgpCiB7Ci0gICAgbV9mcm9udGVuZFByb3ZpZGVyLT5jbGVhckZyb250
ZW5kKCk7Ci0gICAgbV9mcm9udGVuZFByb3ZpZGVyLmNsZWFyKCk7CisgICAgbV9mcm9udGVuZCA9
IDA7CiAgICAgZGlzYWJsZSgwKTsKIH0KIApAQCAtMjc1LDcgKzI0NSw3IEBAIHZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAogICAgIERhdGFiYXNlUmVz
b3VyY2VzTWFwOjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAg
ICBmb3IgKERhdGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJl
Z2luKCk7IGl0ICE9IGRhdGFiYXNlc0VuZDsgKytpdCkKLSAgICAgICAgaXQtPnNlY29uZC0+Ymlu
ZChtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOworICAgICAgICBpdC0+c2Vjb25kLT5i
aW5kKG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcqKQpAQCAtMzA5LDI1ICsyNzksMjcgQEAgdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25z
dCBTdHIKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZXhlY3V0ZVNR
TChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgYm9vbCogc3VjY2VzcywgaW50KiB0cmFuc2FjdGlvbklkKQordm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBQYXNzUmVmUHRyPEV4ZWN1
dGVTUUxDYWxsYmFjaz4gcHJwUmVxdWVzdENhbGxiYWNrKQogeworICAgIFVOVVNFRF9QQVJBTShl
cnJvcik7CisKKyAgICBSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sg
PSBwcnBSZXF1ZXN0Q2FsbGJhY2s7CisKICAgICBpZiAoIW1fZW5hYmxlZCkgewotICAgICAgICAq
ZXJyb3IgPSAiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiOworICAgICAgICByZXF1ZXN0
Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJEYXRhYmFzZSBhZ2VudCBpcyBub3QgZW5hYmxlZCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gZGF0YWJh
c2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoIWRhdGFiYXNlKSB7Ci0gICAgICAgICpzdWNj
ZXNzID0gZmFsc2U7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkRhdGFi
YXNlIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKnRyYW5zYWN0
aW9uSWQgPSArK2xhc3RUcmFuc2FjdGlvbklkOwotICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrPiBjYWxsYmFjayhUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUocXVlcnksICp0cmFu
c2FjdGlvbklkLCBtX2Zyb250ZW5kUHJvdmlkZXIpKTsKLSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6
Y3JlYXRlKCp0cmFuc2FjdGlvbklkLCBtX2Zyb250ZW5kUHJvdmlkZXIpKTsKKyAgICBSZWZQdHI8
U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2soVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3Jl
YXRlKHF1ZXJ5LCByZXF1ZXN0Q2FsbGJhY2suZ2V0KCkpKTsKKyAgICBSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFj
azo6Y3JlYXRlKHJlcXVlc3RDYWxsYmFjay5nZXQoKSkpOwogICAgIFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayhUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjazo6Y3JlYXRlKCkp
OwogICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBzdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpKTsKLSAgICAqc3VjY2Vz
cyA9IHRydWU7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRhYmFzZUlk
KERhdGFiYXNlKiBkYXRhYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDI5MDJjNmVlMjliMmMzYjJlMjNmODY1NTNiNDJh
NWFlYWIyYjUxZTUuLmRlZTFkMjA5ZjZhZTVjNGVhN2U0MjVlOTUxNjdkODY0OWIyMGZlMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
aApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShTUUxf
REFUQUJBU0UpCiAKICNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDksOCAr
NTAsNiBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VDb21tYW5k
SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgRnJvbnRlbmRQcm92aWRlcjsKLQogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRhdGFiYXNlQWdlbnQo
aW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpKTsKQEAgLTY3LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxl
TmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiBuYW1lcyk7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVTUUwoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIGJvb2wqIHN1Y2Nlc3MsIGludCogdHJhbnNhY3Rpb25JZCk7CisgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgcXVlcnksIFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPik7CiAK
ICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgogICAgIFN0cmluZyBkYXRh
YmFzZUlkKERhdGFiYXNlKik7CkBAIC03OSw5ICs3OCw5IEBAIHByaXZhdGU6CiAgICAgRGF0YWJh
c2UqIGRhdGFiYXNlRm9ySWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkKTsKICAgICBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlKiBmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KTsKIAorICAgIEluc3BlY3RvckZyb250ZW5kOjpEYXRhYmFzZSogbV9mcm9udGVuZDsKICAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4g
PiBEYXRhYmFzZVJlc291cmNlc01hcDsKICAgICBEYXRhYmFzZVJlc291cmNlc01hcCBtX3Jlc291
cmNlczsKLSAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwog
ICAgIGJvb2wgbV9lbmFibGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGF0YWJhc2UuanMKaW5kZXggOWU2NzY5NjlmODE1OGEyODJiMDM5YjE0MmM1ODE3
ZTFiOTRjOTVkOC4uY2FhZWRiNTg3MDRlOGQ0ZTkxMmE3MDllMTZkNWIwZDdkY2M0N2YyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCkBAIC05
NCwyMiArOTQsMzUgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9IHsKIAogICAg
IC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeQotICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oQXJyYXkuPHN0cmluZz4sIEFycmF5LjwqPil9IG9uU3VjY2VzcwotICAgICAqIEBwYXJhbSB7
ZnVuY3Rpb24oRGF0YWJhc2VBZ2VudC5FcnJvcil9IG9uRXJyb3IKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKEFycmF5LjxzdHJpbmc+PSwgQXJyYXkuPCo+PSl9IG9uU3VjY2VzcworICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gb25FcnJvcgogICAgICAqLwogICAgIGV4ZWN1dGVTcWw6
IGZ1bmN0aW9uKHF1ZXJ5LCBvblN1Y2Nlc3MsIG9uRXJyb3IpCiAgICAgewotICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjayhlcnJvciwgc3VjY2VzcywgdHJhbnNhY3Rpb25JZCkKKyAgICAgICAgLyoq
CisgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAgICAgKiBA
cGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29sdW1uTmFtZXMKKyAgICAgICAgICogQHBhcmFtIHtB
cnJheS48Kj49fSB2YWx1ZXMKKyAgICAgICAgICogQHBhcmFtIHtEYXRhYmFzZUFnZW50LkVycm9y
PX0gZXJyb3JPYmoKKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9y
LCBjb2x1bW5OYW1lcywgdmFsdWVzLCBlcnJvck9iaikKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgb25FcnJvcihlcnJvcik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7
Ci0gICAgICAgICAgICAgICAgb25FcnJvcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRhdGFiYXNl
IG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICBpZiAoZXJyb3JPYmopIHsKKyAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3JPYmoubWVzc2FnZSkK
KyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yT2JqLm1lc3NhZ2U7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZXJyb3JPYmouY29kZSA9PSAyKQorICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEYXRhYmFzZSBubyBsb25nZXIgaGFz
IGV4cGVjdGVkIHZlcnNpb24uIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbiB1bmV4cGVjdGVkIGVy
cm9yICVzIG9jY3VycmVkLiIsIGVycm9yT2JqLmNvZGUpOworICAgICAgICAgICAgICAgIG9uRXJy
b3IobWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdGhpcy5fbW9kZWwuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXSA9IHsib25TdWNj
ZXNzIjogb25TdWNjZXNzLCAib25FcnJvciI6IG9uRXJyb3J9OworICAgICAgICAgICAgb25TdWNj
ZXNzKGNvbHVtbk5hbWVzLCB2YWx1ZXMpOwogICAgICAgICB9CiAgICAgICAgIERhdGFiYXNlQWdl
bnQuZXhlY3V0ZVNRTCh0aGlzLl9pZCwgcXVlcnksIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAg
IH0KQEAgLTEyMSw3ICsxMzQsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlID0g
ewogICovCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VNb2RlbCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0
aGlzLl9jYWxsYmFja3MgPSB7fTsKICAgICB0aGlzLl9kYXRhYmFzZXMgPSBbXTsKICAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRGF0YWJhc2VEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YWJhc2VEaXNwYXRjaGVyKHRoaXMpKTsKICAgICBEYXRhYmFzZUFnZW50LmVuYWJsZSgpOwpA
QCAtMTU5LDM3ICsxNzEsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VNb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgewogICAgICAgICB0aGlzLl9kYXRhYmFzZXMucHVzaChkYXRhYmFzZSk7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhYmFzZU1v
ZGVsLkV2ZW50cy5EYXRhYmFzZUFkZGVkLCBkYXRhYmFzZSk7Ci0gICAgfSwKLQotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cmFuc2FjdGlvbklkCi0gICAgICogQHBhcmFtIHtBcnJh
eS48c3RyaW5nPn0gY29sdW1uTmFtZXMKLSAgICAgKiBAcGFyYW0ge0FycmF5LjwqPn0gdmFsdWVz
Ci0gICAgICovCi0gICAgX3NxbFRyYW5zYWN0aW9uU3VjY2VlZGVkOiBmdW5jdGlvbih0cmFuc2Fj
dGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVzKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9j
YWxsYmFja3NbdHJhbnNhY3Rpb25JZF0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dmFyIGNhbGxiYWNrID0gdGhpcy5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdWyJvblN1Y2Nlc3Mi
XTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKLSAgICAg
ICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2soY29sdW1uTmFtZXMsIHZhbHVl
cyk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cmFuc2FjdGlv
bklkCi0gICAgICogQHBhcmFtIHs/RGF0YWJhc2VBZ2VudC5FcnJvcn0gZXJyb3JPYmoKLSAgICAg
Ki8KLSAgICBfc3FsVHJhbnNhY3Rpb25GYWlsZWQ6IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGVy
cm9yT2JqKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jYWxsYmFja3NbdHJhbnNhY3Rpb25J
ZF0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5f
Y2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdWyJvbkVycm9yIl07Ci0gICAgICAgIGRlbGV0ZSB0aGlz
Ll9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF07Ci0gICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAg
ICAgICAgIGNhbGxiYWNrKGVycm9yT2JqKTsKICAgICB9CiB9CiAKQEAgLTIwNSw4ICsxODYsNiBA
QCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VEaXNwYXRjaGVyID0gZnVuY3Rpb24obW9kZWwpCiAgICAg
dGhpcy5fbW9kZWwgPSBtb2RlbDsKIH0KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlRGlzcGF0Y2hl
ci5fY2FsbGJhY2tzID0ge307Ci0KIFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIucHJv
dG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7RGF0YWJhc2VBZ2VudC5EYXRhYmFz
ZX0gcGF5bG9hZApAQCAtMjE5LDI1ICsxOTgsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VEaXNw
YXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHBheWxvYWQuZG9tYWluLAogICAgICAg
ICAgICAgcGF5bG9hZC5uYW1lLAogICAgICAgICAgICAgcGF5bG9hZC52ZXJzaW9uKSk7Ci0gICAg
fSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cmFuc2FjdGlvbklkCi0gICAg
ICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gY29sdW1uTmFtZXMKLSAgICAgKiBAcGFyYW0ge0Fy
cmF5LjwqPn0gdmFsdWVzCi0gICAgICovCi0gICAgc3FsVHJhbnNhY3Rpb25TdWNjZWVkZWQ6IGZ1
bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpCi0gICAgewotICAgICAg
ICB0aGlzLl9tb2RlbC5fc3FsVHJhbnNhY3Rpb25TdWNjZWVkZWQodHJhbnNhY3Rpb25JZCwgY29s
dW1uTmFtZXMsIHZhbHVlcyk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVt
YmVyfSB0cmFuc2FjdGlvbklkCi0gICAgICogQHBhcmFtIHs/RGF0YWJhc2VBZ2VudC5FcnJvcn0g
ZXJyb3JPYmoKLSAgICAgKi8KLSAgICBzcWxUcmFuc2FjdGlvbkZhaWxlZDogZnVuY3Rpb24odHJh
bnNhY3Rpb25JZCwgZXJyb3JPYmopCi0gICAgewotICAgICAgICB0aGlzLl9tb2RlbC5fc3FsVHJh
bnNhY3Rpb25GYWlsZWQodHJhbnNhY3Rpb25JZCwgZXJyb3JPYmopOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5
Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVy
eVZpZXcuanMKaW5kZXggMzhkZjQ2YTIyMjUwYjNlMWE0YmE0YWE0ZmY1MjM0NWU1ZjM3YTJhZS4u
ZGIwNmMxY2IyM2E4YjU0NzllZTRhY2YwMzUwNGI3ZjgzNTIxNGYwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3Lmpz
CkBAIC0xNDgsMTggKzE0OCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVF1ZXJ5Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRGF0YWJhc2VRdWVyeVZpZXcuRXZlbnRzLlNjaGVtYVVwZGF0ZWQsIHRoaXMuZGF0
YWJhc2UpOwogICAgIH0sCiAKLSAgICBfcXVlcnlFcnJvcjogZnVuY3Rpb24ocXVlcnksIGVycm9y
KQorICAgIF9xdWVyeUVycm9yOiBmdW5jdGlvbihxdWVyeSwgZXJyb3JNZXNzYWdlKQogICAgIHsK
LSAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICB2YXIg
bWVzc2FnZSA9IGVycm9yOwotICAgICAgICBlbHNlIGlmIChlcnJvci5tZXNzYWdlKQotICAgICAg
ICAgICAgdmFyIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlOwotICAgICAgICBlbHNlIGlmIChlcnJv
ci5jb2RlID09IDIpCi0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBleHBlY3RlZCB2ZXJzaW9uLiIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QW4gdW5leHBlY3RlZCBlcnJvciAlcyBvY2N1cnJlZC4iLCBlcnJvci5jb2RlKTsKLQotICAgICAg
ICB0aGlzLl9hcHBlbmRFcnJvclF1ZXJ5UmVzdWx0KHF1ZXJ5LCBtZXNzYWdlKTsKKyAgICAgICAg
dGhpcy5fYXBwZW5kRXJyb3JRdWVyeVJlc3VsdChxdWVyeSwgZXJyb3JNZXNzYWdlKTsKICAgICB9
LAogCiAgICAgLyoqCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162710</attachid>
            <date>2012-09-07 01:50:38 -0700</date>
            <delta_ts>2012-09-07 05:07:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95983-20120907125017.patch</filename>
            <type>text/plain</type>
            <size>23513</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVmNDQyZjc1NzcwODU5
YzZkYTgzZGMzMThlNzlmY2ViMzljZDI2NC4uYjJlYzc2NTYxOWMyNTUyOGQwZWM3YWM2MzY2YzVk
N2IyMzY4ZjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1pZ3JhdGUgRGF0YWJhc2UgdG8gYXN5bmMgcHJvdG9jb2wgY29tbWFuZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlk
T3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4
ZWN1dGVTUUwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6
CisgICAgICAgIChJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RhdGFiYXNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnBy
b3RvdHlwZS5leGVjdXRlU3FsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3Bh
dGNoZXIucHJvdG90eXBlLmFkZERhdGFiYXNlKToKKwogMjAxMi0wOS0wNyAgWW9zaGlmdW1pIElu
b3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgbG9j
YWxpemVkIHN0cmluZyBvZiBlbXB0eSBmb3IgZGF0ZSB0aW1lIGZpZWxkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMjA0N2Y5Nzhl
ZjdmYTA4MjZhN2ZlNDdkYzQ0YWQwY2YwMjZkMGY4MC4uYzU4OTZlNTU3NDNmOGQ5NTliMjQzOTU2
ZDk2OGMzNGI2Mzk1OWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMTUwLDcgKzE1MCw2IEBAIGxvY2FsaXplZFN0cmluZ3Nb
IkRPTUNvbnRlbnQgZXZlbnQgZmlyZWQiXSA9ICJET01Db250ZW50IGV2ZW50IGZpcmVkIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkRPTUNvbnRlbnQgZXZlbnQiXSA9ICJET01Db250ZW50IGV2ZW50IjsK
IGxvY2FsaXplZFN0cmluZ3NbIkRPTSBOb2RlIENvdW50Il0gPSAiRE9NIE5vZGUgQ291bnQiOwog
bG9jYWxpemVkU3RyaW5nc1siRGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBleHBlY3RlZCB2ZXJzaW9u
LiJdID0gIkRhdGFiYXNlIG5vIGxvbmdlciBoYXMgZXhwZWN0ZWQgdmVyc2lvbi4iOwotbG9jYWxp
emVkU3RyaW5nc1siRGF0YWJhc2Ugbm90IGZvdW5kLiJdID0gIkRhdGFiYXNlIG5vdCBmb3VuZC4i
OwogbG9jYWxpemVkU3RyaW5nc1siRGVhY3RpdmF0ZSBhbGwgYnJlYWtwb2ludHMuIl0gPSAiRGVh
Y3RpdmF0ZSBhbGwgYnJlYWtwb2ludHMuIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRlYWN0aXZhdGUg
YWxsIGJyZWFrcG9pbnRzIl0gPSAiRGVhY3RpdmF0ZSBhbGwgYnJlYWtwb2ludHMiOwogbG9jYWxp
emVkU3RyaW5nc1siRGVidWciXSA9ICJEZWJ1ZyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KaW5kZXggYzFlMjY1YzRiMTRiYmFkMWZiZDkzNjJiMDA4NGE5MDc5OGM1NTI2
Ni4uYWIwNTgwOGVlZmZjOWY4YjQxZDhhYjI0MWE1NTIxYzk4NDAyMzQ3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTA3NCw3ICsxMDc0LDExIEBACiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgImlkIjogIkVycm9yIiwKICAgICAgICAgICAgICAg
ICAidHlwZSI6ICJvYmplY3QiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEYXRh
YmFzZSBlcnJvci4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIGVy
cm9yLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibWVzc2FnZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJFcnJvciBtZXNzYWdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb2Rl
IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJFcnJvciBjb2RlLiIgfQorICAg
ICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImNvbW1h
bmRzIjogWwpAQCAtMTA5NywxMyArMTEwMSwxNSBAQAogICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJleGVjdXRlU1FMIiwKKyAgICAgICAgICAg
ICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlSWQiLCAiJHJlZiI6ICJEYXRhYmFz
ZUlkIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAi
c3RyaW5nIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6
IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdWNjZXNzIiwgInR5cGUiOiAiYm9v
bGVhbiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFuc2FjdGlvbklkIiwg
InR5cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbHVt
bk5hbWVzIiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICJ0
eXBlIjogInN0cmluZyIgfSB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhbHVl
cyIsICJ0eXBlIjogImFycmF5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAidHlwZSI6
ICJhbnkiIH19LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNxbEVycm9yIiwgIiRy
ZWYiOiAiRXJyb3IiLCAib3B0aW9uYWwiOiB0cnVlIH0KICAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0sCkBAIC0xMTEzLDIxICsxMTE5LDYgQEAKICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRh
YmFzZSIsICIkcmVmIjogIkRhdGFiYXNlIiB9CiAgICAgICAgICAgICAgICAgXQotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJzcWxUcmFuc2Fj
dGlvblN1Y2NlZWRlZCIsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidHJhbnNhY3Rpb25JZCIsICJ0eXBlIjogImludGVnZXIi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29sdW1uTmFtZXMiLCAidHlwZSI6
ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9IH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidmFsdWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0
eXBlIjogImFueSIgfX0KLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogInNxbFRyYW5zYWN0aW9uRmFpbGVkIiwK
LSAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ0cmFuc2FjdGlvbklkIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzcWxFcnJvciIsICIkcmVmIjogIkVycm9yIiB9Ci0gICAgICAg
ICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCA5
OGM5MzYzYWU2OTdkNDY4MzRlYzNiNjFkNDNhM2VlZDQ0ODA5ZWFjLi42ODM2MWY3MDNlZTZhY2Uy
NmU4YWQyNGEwMDUwYWJhMzQzZjU0ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC01MSw1NiArNTEsMzUgQEAKIAog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAordHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VDb21tYW5kSGFuZGxlcjo6RXhlY3V0ZVNRTENhbGxiYWNr
IEV4ZWN1dGVTUUxDYWxsYmFjazsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2Ug
RGF0YWJhc2VBZ2VudFN0YXRlIHsKIHN0YXRpYyBjb25zdCBjaGFyIGRhdGFiYXNlQWdlbnRFbmFi
bGVkW10gPSAiZGF0YWJhc2VBZ2VudEVuYWJsZWQiOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudDo6RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmQqIGlu
c3BlY3RvckZyb250ZW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9u
dGVuZFByb3ZpZGVyKGluc3BlY3RvckZyb250ZW5kKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+
RnJvbnRlbmRQcm92aWRlcigpIHsgfQotCi0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNl
KiBmcm9udGVuZCgpIHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmQ7IH0KLSAgICB2b2lkIGNs
ZWFyRnJvbnRlbmQoKSB7IG1faW5zcGVjdG9yRnJvbnRlbmQgPSAwOyB9Ci1wcml2YXRlOgotICAg
IEZyb250ZW5kUHJvdmlkZXIoSW5zcGVjdG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250ZW5kKSA6
IG1faW5zcGVjdG9yRnJvbnRlbmQoaW5zcGVjdG9yRnJvbnRlbmQtPmRhdGFiYXNlKCkpIHsgfQot
ICAgIEluc3BlY3RvckZyb250ZW5kOjpEYXRhYmFzZSogbV9pbnNwZWN0b3JGcm9udGVuZDsKLX07
Ci0KIG5hbWVzcGFjZSB7CiAKLWludCBsYXN0VHJhbnNhY3Rpb25JZCA9IDA7Ci0KLXZvaWQgcmVw
b3J0VHJhbnNhY3Rpb25GYWlsZWQoSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKiBmcm9udGVu
ZCwgaW50IHRyYW5zYWN0aW9uSWQsIFNRTEVycm9yKiBlcnJvcikKK3ZvaWQgcmVwb3J0VHJhbnNh
Y3Rpb25GYWlsZWQoRXhlY3V0ZVNRTENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2ssIFNRTEVycm9y
KiBlcnJvcikKIHsKLSAgICBpZiAoIWZyb250ZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZXJyb3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIGVycm9yT2JqZWN0LT5zZXRTdHJpbmcoIm1lc3NhZ2UiLCBlcnJvci0+bWVzc2Fn
ZSgpKTsKLSAgICBlcnJvck9iamVjdC0+c2V0TnVtYmVyKCJjb2RlIiwgZXJyb3ItPmNvZGUoKSk7
Ci0gICAgZnJvbnRlbmQtPnNxbFRyYW5zYWN0aW9uRmFpbGVkKHRyYW5zYWN0aW9uSWQsIGVycm9y
T2JqZWN0KTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gZXJyb3JP
YmplY3QgPSBUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yOjpjcmVhdGUoKQorICAgICAgICAu
c2V0TWVzc2FnZShlcnJvci0+bWVzc2FnZSgpKQorICAgICAgICAuc2V0Q29kZShlcnJvci0+Y29k
ZSgpKTsKKyAgICByZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKDAsIDAsIGVycm9yT2JqZWN0
LnJlbGVhc2UoKSk7CiB9CiAKIGNsYXNzIFN0YXRlbWVudENhbGxiYWNrIDogcHVibGljIFNRTFN0
YXRlbWVudENhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0ZW1l
bnRDYWxsYmFjaz4gY3JlYXRlKGludCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV4
ZWN1dGVTUUxDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdGF0ZW1lbnRDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBmcm9udGVuZFBy
b3ZpZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGVtZW50Q2FsbGJhY2so
cmVxdWVzdENhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50Q2FsbGJh
Y2soKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbios
IFNRTFJlc3VsdFNldCogcmVzdWx0U2V0KQogICAgIHsKLSAgICAgICAgaWYgKCFtX2Zyb250ZW5k
UHJvdmlkZXItPmZyb250ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAg
ICBTUUxSZXN1bHRTZXRSb3dMaXN0KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAKICAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gY29sdW1uTmFtZXMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CkBAIC0xMTgsOTIgKzk3LDg0IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5h
ZGRJdGVtKEluc3BlY3RvclZhbHVlOjpudWxsKCkpOyBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPnNxbFRyYW5z
YWN0aW9uU3VjY2VlZGVkKG1fdHJhbnNhY3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcyk7Cisg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2Vzcyhjb2x1bW5OYW1lcy5yZWxlYXNl
KCksIHZhbHVlcy5yZWxlYXNlKCksIDApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgU3RhdGVtZW50Q2FsbGJhY2soaW50IHRyYW5zYWN0aW9uSWQsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQ
cm92aWRlcikKLSAgICAgICAgOiBtX3RyYW5zYWN0aW9uSWQodHJhbnNhY3Rpb25JZCkKLSAgICAg
ICAgLCBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikgeyB9Ci0gICAgaW50IG1f
dHJhbnNhY3Rpb25JZDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6RnJvbnRl
bmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOworICAgIFN0YXRlbWVudENhbGxiYWNrKFBh
c3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCisgICAgICAgIDog
bV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSB7IH0KKyAgICBSZWZQdHI8RXhlY3V0
ZVNRTENhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKIH07CiAKIGNsYXNzIFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2sgOiBwdWJsaWMgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gY3JlYXRlKGlu
dCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OkZyb250
ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Rh
dGVtZW50RXJyb3JDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNr
PiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0
YXRlbWVudEVycm9yQ2FsbGJhY2sodHJhbnNhY3Rpb25JZCwgZnJvbnRlbmRQcm92aWRlcikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRlbWVudEVycm9yQ2FsbGJhY2socmVxdWVz
dENhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50RXJyb3JDYWxsYmFj
aygpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiwg
U1FMRXJyb3IqIGVycm9yKQogICAgIHsKLSAgICAgICAgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQo
bV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLCBtX3RyYW5zYWN0aW9uSWQsIGVycm9yKTsK
KyAgICAgICAgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCks
IGVycm9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7ICAKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
U3RhdGVtZW50RXJyb3JDYWxsYmFjayhpbnQgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQot
ICAgICAgICA6IG1fdHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQotICAgICAgICAsIG1fZnJv
bnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKSB7IH0KLSAgICBpbnQgbV90cmFuc2FjdGlv
bklkOwotICAgIFJlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpGcm9udGVuZFByb3ZpZGVy
PiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgU3RhdGVtZW50RXJyb3JDYWxsYmFjayhQYXNzUmVm
UHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgICAgICA6IG1fcmVx
dWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykgeyB9CisgICAgUmVmUHRyPEV4ZWN1dGVTUUxD
YWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbkNhbGxi
YWNrIDogcHVibGljIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNx
bFN0YXRlbWVudCwgaW50IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlcikKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzcWxT
dGF0ZW1lbnQsIFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5zYWN0aW9uQ2FsbGJhY2so
c3FsU3RhdGVtZW50LCB0cmFuc2FjdGlvbklkLCBmcm9udGVuZFByb3ZpZGVyKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25DYWxsYmFjayhzcWxTdGF0ZW1lbnQsIHJl
cXVlc3RDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uQ2FsbGJh
Y2soKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJv
bnRlbmQoKSkKKyAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFs
dWVzOwotICAgICAgICBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNhbGxiYWNrKFN0YXRl
bWVudENhbGxiYWNrOjpjcmVhdGUobV90cmFuc2FjdGlvbklkLCBtX2Zyb250ZW5kUHJvdmlkZXIp
KTsKLSAgICAgICAgUmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2soU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6Y3JlYXRlKG1fdHJhbnNhY3Rpb25JZCwgbV9mcm9u
dGVuZFByb3ZpZGVyKSk7CisgICAgICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2Fs
bGJhY2soU3RhdGVtZW50Q2FsbGJhY2s6OmNyZWF0ZShtX3JlcXVlc3RDYWxsYmFjay5nZXQoKSkp
OworICAgICAgICBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayhTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCkp
KTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5l
eGVjdXRlU1FMKG1fc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwg
ZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogcHJpdmF0ZToKLSAgICBUcmFuc2FjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgc3FsU3Rh
dGVtZW50LCBpbnQgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQorICAgIFRyYW5zYWN0aW9u
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIFBhc3NSZWZQdHI8RXhlY3V0ZVNR
TENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogbV9zcWxTdGF0ZW1lbnQoc3Fs
U3RhdGVtZW50KQotICAgICAgICAsIG1fdHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQotICAg
ICAgICAsIG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKSB7IH0KKyAgICAgICAg
LCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQogICAgIFN0cmluZyBtX3Nx
bFN0YXRlbWVudDsKLSAgICBpbnQgbV90cmFuc2FjdGlvbklkOwotICAgIFJlZlB0cjxJbnNwZWN0
b3JEYXRhYmFzZUFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7Cisg
ICAgUmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCiBj
bGFzcyBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2s+IGNyZWF0ZShpbnQgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JEYXRhYmFzZUFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRlKFBhc3NS
ZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayh0cmFuc2FjdGlv
bklkLCBmcm9udGVuZFByb3ZpZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgflRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaygpIHsgfQogCiAgICAgdmlydHVhbCBib29s
IGhhbmRsZUV2ZW50KFNRTEVycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIHJlcG9ydFRyYW5z
YWN0aW9uRmFpbGVkKG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSwgbV90cmFuc2FjdGlv
bklkLCBlcnJvcik7CisgICAgICAgIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKG1fcmVxdWVzdENh
bGxiYWNrLmdldCgpLCBlcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIHByaXZh
dGU6Ci0gICAgVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKGludCB0cmFuc2FjdGlvbklkLCBQYXNz
UmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5k
UHJvdmlkZXIpCi0gICAgICAgIDogbV90cmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQpCi0gICAg
ICAgICwgbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIpIHsgfQotICAgIGludCBt
X3RyYW5zYWN0aW9uSWQ7Ci0gICAgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OkZyb250
ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2soUGFzc1JlZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKKyAg
ICAgICAgOiBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQorICAgIFJlZlB0
cjxFeGVjdXRlU1FMQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwogfTsKIAogY2xhc3MgVHJh
bnNhY3Rpb25TdWNjZXNzQ2FsbGJhY2sgOiBwdWJsaWMgVm9pZENhbGxiYWNrIHsKQEAgLTIzMyw4
ICsyMDQsOCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShQ
YXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgY29ucwogICAgIFJlZlB0cjxJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlPiByZXNvdXJjZSA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmNy
ZWF0ZShkYXRhYmFzZSwgZG9tYWluLCBuYW1lLCB2ZXJzaW9uKTsKICAgICBtX3Jlc291cmNlcy5z
ZXQocmVzb3VyY2UtPmlkKCksIHJlc291cmNlKTsKICAgICAvLyBSZXNvdXJjZXMgYXJlIG9ubHkg
Ym91bmQgd2hpbGUgdmlzaWJsZS4KLSAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyICYmIG1fZW5h
YmxlZCkKLSAgICAgICAgcmVzb3VyY2UtPmJpbmQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVu
ZCgpKTsKKyAgICBpZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCisgICAgICAgIHJlc291cmNl
LT5iaW5kKG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNs
ZWFyUmVzb3VyY2VzKCkKQEAgLTI1NiwxMyArMjI3LDEyIEBAIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7Ci0gICAgbV9m
cm9udGVuZFByb3ZpZGVyID0gRnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKGZyb250ZW5kKTsKKyAg
ICBtX2Zyb250ZW5kID0gZnJvbnRlbmQtPmRhdGFiYXNlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiB7Ci0gICAgbV9mcm9udGVuZFByb3ZpZGVy
LT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9mcm9udGVuZFByb3ZpZGVyLmNsZWFyKCk7CisgICAg
bV9mcm9udGVuZCA9IDA7CiAgICAgZGlzYWJsZSgwKTsKIH0KIApAQCAtMjc1LDcgKzI0NSw3IEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAogICAg
IERhdGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX3Jlc291cmNl
cy5lbmQoKTsKICAgICBmb3IgKERhdGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1f
cmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlc0VuZDsgKytpdCkKLSAgICAgICAgaXQt
PnNlY29uZC0+YmluZChtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOworICAgICAgICBp
dC0+c2Vjb25kLT5iaW5kKG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQpAQCAtMzA5LDI1ICsyNzksMjcgQEAgdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHIKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZXhlY3V0ZVNRTChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCogc3VjY2VzcywgaW50KiB0cmFuc2FjdGlvbklk
KQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBQYXNz
UmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4gcHJwUmVxdWVzdENhbGxiYWNrKQogeworICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CisKKyAgICBSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPiByZXF1
ZXN0Q2FsbGJhY2sgPSBwcnBSZXF1ZXN0Q2FsbGJhY2s7CisKICAgICBpZiAoIW1fZW5hYmxlZCkg
ewotICAgICAgICAqZXJyb3IgPSAiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiOworICAg
ICAgICByZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJEYXRhYmFzZSBhZ2VudCBpcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRGF0YWJhc2UqIGRhdGFi
YXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoIWRhdGFiYXNlKSB7Ci0g
ICAgICAgICpzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZh
aWx1cmUoIkRhdGFiYXNlIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgKnRyYW5zYWN0aW9uSWQgPSArK2xhc3RUcmFuc2FjdGlvbklkOwotICAgIFJlZlB0cjxTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjayhUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUo
cXVlcnksICp0cmFuc2FjdGlvbklkLCBtX2Zyb250ZW5kUHJvdmlkZXIpKTsKLSAgICBSZWZQdHI8
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjazo6Y3JlYXRlKCp0cmFuc2FjdGlvbklkLCBtX2Zyb250ZW5kUHJvdmlkZXIpKTsK
KyAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2soVHJhbnNhY3Rpb25D
YWxsYmFjazo6Y3JlYXRlKHF1ZXJ5LCByZXF1ZXN0Q2FsbGJhY2suZ2V0KCkpKTsKKyAgICBSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjazo6Y3JlYXRlKHJlcXVlc3RDYWxsYmFjay5nZXQoKSkpOwogICAgIFJlZlB0
cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayhUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFj
azo6Y3JlYXRlKCkpOwogICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNl
KCksIGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBzdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpKTsK
LSAgICAqc3VjY2VzcyA9IHRydWU7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpkYXRhYmFzZUlkKERhdGFiYXNlKiBkYXRhYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDk0YWNkMGM0YTMxYWIzNmM5
NGQ3ODJmMWFjNTI4NWQ1OWEwYzgxMDcuLmM3Mzk5YTFlNDQwMTI3MDNhNWJjMDI0OWFlYzQ3Njg0
MTg3MTM3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYm
IEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTQ5LDggKzUwLDYgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNs
YXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OkRhdGFiYXNlQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgotICAgIGNsYXNzIEZyb250ZW5kUHJv
dmlkZXI7Ci0KICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
U3RhdGUqIHN0YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0
b3JEYXRhYmFzZUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKSk7CkBAIC02Nyw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiYgbmFtZXMpOwotICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlU1FMKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sKiBzdWNjZXNzLCBpbnQqIHRyYW5zYWN0aW9u
SWQpOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBQYXNzUmVmUHRyPEV4ZWN1dGVT
UUxDYWxsYmFjaz4pOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4K
ICAgICBTdHJpbmcgZGF0YWJhc2VJZChEYXRhYmFzZSopOwpAQCAtNzksOSArNzgsOSBAQCBwcml2
YXRlOgogICAgIERhdGFiYXNlKiBkYXRhYmFzZUZvcklkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJ
ZCk7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZSogZmluZEJ5RmlsZU5hbWUoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSk7CiAKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6RGF0YWJhc2UqIG1f
ZnJvbnRlbmQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2U+ID4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7CiAgICAgRGF0YWJhc2VSZXNv
dXJjZXNNYXAgbV9yZXNvdXJjZXM7Ci0gICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJv
bnRlbmRQcm92aWRlcjsKICAgICBib29sIG1fZW5hYmxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCmluZGV4IDllNjc2OTY5ZjgxNThh
MjgyYjAzOWIxNDJjNTgxN2UxYjk0Yzk1ZDguLmNhYWVkYjU4NzA0ZThkNGU5MTJhNzA5ZTE2ZDVi
MGQ3ZGNjNDdmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
YXRhYmFzZS5qcwpAQCAtOTQsMjIgKzk0LDM1IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90
b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKLSAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxzdHJpbmc+LCBBcnJheS48Kj4pfSBvblN1Y2Nlc3MK
LSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKERhdGFiYXNlQWdlbnQuRXJyb3IpfSBvbkVycm9yCisg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48c3RyaW5nPj0sIEFycmF5LjwqPj0pfSBvblN1
Y2Nlc3MKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZyl9IG9uRXJyb3IKICAgICAgKi8K
ICAgICBleGVjdXRlU3FsOiBmdW5jdGlvbihxdWVyeSwgb25TdWNjZXNzLCBvbkVycm9yKQogICAg
IHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MsIHRyYW5zYWN0aW9u
SWQpCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJy
b3IKKyAgICAgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPj19IGNvbHVtbk5hbWVzCisgICAg
ICAgICAqIEBwYXJhbSB7QXJyYXkuPCo+PX0gdmFsdWVzCisgICAgICAgICAqIEBwYXJhbSB7RGF0
YWJhc2VBZ2VudC5FcnJvcj19IGVycm9yT2JqCisgICAgICAgICAqLworICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhlcnJvciwgY29sdW1uTmFtZXMsIHZhbHVlcywgZXJyb3JPYmopCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJy
b3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIG9uRXJyb3IoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEYXRhYmFzZSBub3QgZm91bmQuIikpOworICAgICAgICAgICAgaWYgKGVycm9yT2Jq
KSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2U7CisgICAgICAgICAgICAgICAgaWYgKGVy
cm9yT2JqLm1lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvck9iai5t
ZXNzYWdlOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yT2JqLmNvZGUgPT0gMikKKyAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGF0YWJh
c2Ugbm8gbG9uZ2VyIGhhcyBleHBlY3RlZCB2ZXJzaW9uLiIpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QW4gdW5leHBlY3RlZCBlcnJvciAlcyBvY2N1cnJlZC4iLCBlcnJvck9iai5jb2RlKTsKKyAgICAg
ICAgICAgICAgICBvbkVycm9yKG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuX21vZGVsLl9jYWxsYmFja3NbdHJhbnNhY3Rp
b25JZF0gPSB7Im9uU3VjY2VzcyI6IG9uU3VjY2VzcywgIm9uRXJyb3IiOiBvbkVycm9yfTsKKyAg
ICAgICAgICAgIG9uU3VjY2Vzcyhjb2x1bW5OYW1lcywgdmFsdWVzKTsKICAgICAgICAgfQogICAg
ICAgICBEYXRhYmFzZUFnZW50LmV4ZWN1dGVTUUwodGhpcy5faWQsIHF1ZXJ5LCBjYWxsYmFjay5i
aW5kKHRoaXMpKTsKICAgICB9CkBAIC0xMjEsNyArMTM0LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFi
YXNlLnByb3RvdHlwZSA9IHsKICAqLwogV2ViSW5zcGVjdG9yLkRhdGFiYXNlTW9kZWwgPSBmdW5j
dGlvbigpCiB7Ci0gICAgdGhpcy5fY2FsbGJhY2tzID0ge307CiAgICAgdGhpcy5fZGF0YWJhc2Vz
ID0gW107CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRhdGFiYXNlRGlzcGF0Y2hlcihu
ZXcgV2ViSW5zcGVjdG9yLkRhdGFiYXNlRGlzcGF0Y2hlcih0aGlzKSk7CiAgICAgRGF0YWJhc2VB
Z2VudC5lbmFibGUoKTsKQEAgLTE1OSwzNyArMTcxLDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNl
TW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YWJhc2VzLnB1c2go
ZGF0YWJhc2UpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VNb2RlbC5FdmVudHMuRGF0YWJhc2VBZGRlZCwgZGF0YWJhc2UpOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNhY3Rpb25JZAotICAg
ICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGNvbHVtbk5hbWVzCi0gICAgICogQHBhcmFtIHtB
cnJheS48Kj59IHZhbHVlcwotICAgICAqLwotICAgIF9zcWxUcmFuc2FjdGlvblN1Y2NlZWRlZDog
ZnVuY3Rpb24odHJhbnNhY3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcykKLSAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX2NhbGxiYWNrc1t0cmFuc2FjdGlv
bklkXVsib25TdWNjZXNzIl07Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbdHJhbnNh
Y3Rpb25JZF07Ci0gICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrKGNv
bHVtbk5hbWVzLCB2YWx1ZXMpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251
bWJlcn0gdHJhbnNhY3Rpb25JZAotICAgICAqIEBwYXJhbSB7P0RhdGFiYXNlQWdlbnQuRXJyb3J9
IGVycm9yT2JqCi0gICAgICovCi0gICAgX3NxbFRyYW5zYWN0aW9uRmFpbGVkOiBmdW5jdGlvbih0
cmFuc2FjdGlvbklkLCBlcnJvck9iaikKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2FsbGJh
Y2tzW3RyYW5zYWN0aW9uSWRdKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBj
YWxsYmFjayA9IHRoaXMuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXVsib25FcnJvciJdOwotICAg
ICAgICBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdOwotICAgICAgICBpZiAo
Y2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjayhlcnJvck9iaik7CiAgICAgfQogfQogCkBA
IC0yMDUsOCArMTg2LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlRGlzcGF0Y2hlciA9IGZ1bmN0
aW9uKG1vZGVsKQogICAgIHRoaXMuX21vZGVsID0gbW9kZWw7CiB9CiAKLVdlYkluc3BlY3Rvci5E
YXRhYmFzZURpc3BhdGNoZXIuX2NhbGxiYWNrcyA9IHt9OwotCiBXZWJJbnNwZWN0b3IuRGF0YWJh
c2VEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0RhdGFi
YXNlQWdlbnQuRGF0YWJhc2V9IHBheWxvYWQKQEAgLTIxOSwyNSArMTk4LDYgQEAgV2ViSW5zcGVj
dG9yLkRhdGFiYXNlRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBwYXlsb2Fk
LmRvbWFpbiwKICAgICAgICAgICAgIHBheWxvYWQubmFtZSwKICAgICAgICAgICAgIHBheWxvYWQu
dmVyc2lvbikpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gdHJh
bnNhY3Rpb25JZAotICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGNvbHVtbk5hbWVzCi0g
ICAgICogQHBhcmFtIHtBcnJheS48Kj59IHZhbHVlcwotICAgICAqLwotICAgIHNxbFRyYW5zYWN0
aW9uU3VjY2VlZGVkOiBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVz
KQotICAgIHsKLSAgICAgICAgdGhpcy5fbW9kZWwuX3NxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKHRy
YW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpOwotICAgIH0sCi0KLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNhY3Rpb25JZAotICAgICAqIEBwYXJhbSB7P0RhdGFi
YXNlQWdlbnQuRXJyb3J9IGVycm9yT2JqCi0gICAgICovCi0gICAgc3FsVHJhbnNhY3Rpb25GYWls
ZWQ6IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGVycm9yT2JqKQotICAgIHsKLSAgICAgICAgdGhp
cy5fbW9kZWwuX3NxbFRyYW5zYWN0aW9uRmFpbGVkKHRyYW5zYWN0aW9uSWQsIGVycm9yT2JqKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2VRdWVyeVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzCmluZGV4IDM4ZGY0NmEyMjI1MGIzZTFhNGJhNGFhNGZm
NTIzNDVlNWYzN2EyYWUuLmRiMDZjMWNiMjNhOGI1NDc5ZWU0YWNmMDM1MDRiN2Y4MzUyMTRmMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VR
dWVyeVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRh
YmFzZVF1ZXJ5Vmlldy5qcwpAQCAtMTQ4LDE4ICsxNDgsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJh
c2VRdWVyeVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFiYXNlUXVlcnlWaWV3LkV2ZW50cy5TY2hlbWFV
cGRhdGVkLCB0aGlzLmRhdGFiYXNlKTsKICAgICB9LAogCi0gICAgX3F1ZXJ5RXJyb3I6IGZ1bmN0
aW9uKHF1ZXJ5LCBlcnJvcikKKyAgICBfcXVlcnlFcnJvcjogZnVuY3Rpb24ocXVlcnksIGVycm9y
TWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICJzdHJpbmciKQot
ICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlcnJvcjsKLSAgICAgICAgZWxzZSBpZiAoZXJyb3Iu
bWVzc2FnZSkKLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTsKLSAgICAg
ICAgZWxzZSBpZiAoZXJyb3IuY29kZSA9PSAyKQotICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRhdGFiYXNlIG5vIGxvbmdlciBoYXMgZXhwZWN0ZWQgdmVy
c2lvbi4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkFuIHVuZXhwZWN0ZWQgZXJyb3IgJXMgb2NjdXJyZWQuIiwgZXJyb3Iu
Y29kZSk7Ci0KLSAgICAgICAgdGhpcy5fYXBwZW5kRXJyb3JRdWVyeVJlc3VsdChxdWVyeSwgbWVz
c2FnZSk7CisgICAgICAgIHRoaXMuX2FwcGVuZEVycm9yUXVlcnlSZXN1bHQocXVlcnksIGVycm9y
TWVzc2FnZSk7CiAgICAgfSwKIAogICAgIC8qKgo=
</data>
<flag name="review"
          id="173897"
          type_id="1"
          status="+"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>