<?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>105261</bug_id>
          
          <creation_ts>2012-12-18 00:00:08 -0800</creation_ts>
          <short_desc>Web Inspector: show cached images under MemoryCache -&gt; Images section</short_desc>
          <delta_ts>2012-12-18 03:47:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>benjamin</cc>
    
    <cc>japhet</cc>
    
    <cc>junov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793417</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-18 00:00:08 -0800</bug_when>
    <thetext>Native memory profiler should show specific CachedImages with their sizes under Memory cache resources: Image section so that user can figure out which images make up the cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793419</commentid>
    <comment_count>1</comment_count>
      <attachid>179891</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-18 00:03:55 -0800</bug_when>
    <thetext>Created attachment 179891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793444</commentid>
    <comment_count>2</comment_count>
      <attachid>179891</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-12-18 01:10:09 -0800</bug_when>
    <thetext>Comment on attachment 179891
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793481</commentid>
    <comment_count>3</comment_count>
      <attachid>179891</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-12-18 02:08:50 -0800</bug_when>
    <thetext>Comment on attachment 179891
Patch

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

&gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:272
&gt; +    _addChildrenFromGraph: function(memoryBlock)

Missing function annotations here and below.

&gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:294
&gt; +        for (var i = 0; i &lt; edges.length; i++) {
&gt; +            var target = edges[i].target();
&gt; +            if (target.className() === &quot;CachedImage&quot;) {

Perhaps a helper iterator function forAllChildrenOfClass?

&gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:302
&gt; +                if (image.className() === &quot;BitmapImage&quot;) {

What about other classes? Later?

&gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:439
&gt; +        return this.targetsOfAllEdges(edgeName)[0];

Pure functional code doesn&apos;t work well in JS. ;-)
This one doesn&apos;t seem too effective. Add a TODO/FIXME?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793488</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-18 02:26:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 179891 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179891&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:272
&gt; &gt; +    _addChildrenFromGraph: function(memoryBlock)
&gt; 
&gt; Missing function annotations here and below.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:294
&gt; &gt; +        for (var i = 0; i &lt; edges.length; i++) {
&gt; &gt; +            var target = edges[i].target();
&gt; &gt; +            if (target.className() === &quot;CachedImage&quot;) {
&gt; 
&gt; Perhaps a helper iterator function forAllChildrenOfClass?
&gt; 
I&apos;d change that when we have another client for the code to better understand which API we need.

&gt; &gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:302
&gt; &gt; +                if (image.className() === &quot;BitmapImage&quot;) {
&gt; 
&gt; What about other classes? Later?
&gt; 
Yes, it is a first step. Show just referenced pixel buffer which we know may be quite big. If you feel that we should show some other objects please speak up.

&gt; &gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:439
&gt; &gt; +        return this.targetsOfAllEdges(edgeName)[0];
&gt; 
&gt; Pure functional code doesn&apos;t work well in JS. ;-)
&gt; This one doesn&apos;t seem too effective. Add a TODO/FIXME?
We can optimize this code when we find it inefficient for the current use case it seems to be good enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793489</commentid>
    <comment_count>5</comment_count>
      <attachid>179910</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-18 02:26:49 -0800</bug_when>
    <thetext>Created attachment 179910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793520</commentid>
    <comment_count>6</comment_count>
      <attachid>179910</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-18 03:47:11 -0800</bug_when>
    <thetext>Comment on attachment 179910
Patch

Clearing flags on attachment: 179910

Committed r138005: &lt;http://trac.webkit.org/changeset/138005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793521</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-18 03:47:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179891</attachid>
            <date>2012-12-18 00:03:55 -0800</date>
            <delta_ts>2012-12-18 02:26:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105261-20121218120111.patch</filename>
            <type>text/plain</type>
            <size>23081</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiYTQ2NDNiNWQ2OTRkZTcxNTMyZWE1
MDViMmM2YTMxMGFiNjljODAuLjNlYWJkOThhM2NlMDYyNDUxOTZmYzhkMTdhNGYyNzVjNjNmZjdm
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTcgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hvdyBjYWNoZWQg
aW1hZ2VzIHVuZGVyIE1lbW9yeUNhY2hlIC0+IEltYWdlcyBzZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUyNjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZmlyc3QgcHJvdmlkZWQgbmFt
ZSBhbmQgY2xhc3MgbmFtZS4gSWYgb25lIG9mIHRoZSBhbmNlc3RvcnMgdHJpZXMgdG8gb3Zlcndy
aXRlCisgICAgICAgIGl0IGp1c3QgaWdub3JlIHRoZSBjYWxsLgorCisgICAgICAgICogd3RmL01l
bW9yeU9iamVjdEluZm8uaDoKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6c2V0Q2xh
c3NOYW1lKToKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6c2V0TmFtZSk6CisKIDIw
MTItMTItMTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uOiBNZW1vcnlJ
bnN0cnVtZW50YXRpb24gZG9lc24ndCBkZXRlY3QgcmVwb3J0TWVtb3J5VXNhZ2UgbWV0aG9kIGRl
ZmluZWQgaW4gYSBiYXNlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2NmFiNTAyZGU3ZmNiMmM4YjNk
NWUwNzA5YmNiODc1MzdlOTI0ZWYuLjc0Y2RmZGE3MmNmOTMyODA5OWUyODExN2M3Y2QzMGVmZDE0
MGVkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0xMi0xNyAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
aG93IGNhY2hlZCBpbWFnZXMgdW5kZXIgTWVtb3J5Q2FjaGUgLT4gSW1hZ2VzIHNlY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTI2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGVkIGNs
YXNzIG5hbWUgYW5kIG5hbWUgZm9yIHNldmVyYWwgb2JqZWN0cyByZWxhdGVkIHRvIENhY2hlZElt
YWdlLgorICAgICAgICBDaGFuZ2VkIG5hdGl2ZSBtZW1vcnkgc25hcHNobyB2aWV3IHNvIHRoYXQg
TWVtb3J5Q2FjaGUuSW1hZ2Ugc2VjdGlvbiBjYW4KKyAgICAgICAgYmUgZXhwYW5kZWQgaW50byBp
bmRpdmlkdWFsIGltYWdlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZl
TWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9y
eVNuYXBzaG90Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3ROb2Rl
LnByb3RvdHlwZS5fYWRkQ2hpbGRyZW5Gcm9tR3JhcGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdGl2ZUhlYXBHcmFwaEVkZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBH
cmFwaEVkZ2UucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhl
YXBHcmFwaEVkZ2UucHJvdG90eXBlLm5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2
ZUhlYXBHcmFwaEVkZ2UucHJvdG90eXBlLnRhcmdldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmF0aXZlSGVhcEdyYXBoRWRnZS5wcm90b3R5cGUuX2dldFN0cmluZ0ZpZWxkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhFZGdlLnByb3RvdHlwZS50b1N0cmluZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5wcm90b3R5cGUuc2l6ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5wcm90b3R5cGUucmVm
ZXJlbmNlZE5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhOb2Rl
LnByb3RvdHlwZS5vdXRnb2luZ0VkZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVI
ZWFwR3JhcGhOb2RlLnByb3RvdHlwZS50YXJnZXRPZkVkZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5hdGl2ZUhlYXBHcmFwaE5vZGUucHJvdG90eXBlLnRhcmdldHNPZkFsbEVkZ2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhOb2RlLnByb3RvdHlwZS5fZmlyc3RF
ZGdlUG9pc3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaE5vZGUu
cHJvdG90eXBlLl9hZnRlckxhc3RFZGdlUG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdGl2ZUhlYXBHcmFwaE5vZGUucHJvdG90eXBlLl9nZXRTdHJpbmdGaWVsZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5wcm90b3R5cGUudG9TdHJpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF0aXZlSGVhcEdyYXBoLnByb3RvdHlwZS5yb290Tm9kZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaC5wcm90b3R5cGUuX2NhbGN1bGF0ZU5vZGVFZGdlSW5k
ZXhlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoLnByb3RvdHlwZS5f
YWRkRHVtbXlOb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxl
VHlwZS5wcm90b3R5cGUuYnV0dG9uQ2xpY2tlZC5kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLnByb3RvdHlwZS5i
dXR0b25DbGlja2VkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL01l
bW9yeUluc3RydW1lbnRhdGlvblNraWEuY3BwOgorICAgICAgICAocmVwb3J0TWVtb3J5VXNhZ2Up
OgorCiAyMDEyLTEyLTE3ICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQWRkIEFTU0VSVGlvbnMgdG8gZW5zdXJlIHRoYXQgQ1NTUHJvcGVydHlz
IHRoYXQgYXJlIHZhcmlhYmxlcyBvbmx5IGV2ZXIgcmVmZXIgdG8gQ1NTVmFsdWVzIHRoYXQgYXJl
IHZhcmlhYmxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8u
aCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8uaAppbmRleCBiYmMxNDk0ZTYzZWUz
ZmJmMWExNDQ0NDc0NWYxYzEzYTRhNzE0Mjk0Li5jZjI0YjliZGZmMjZlYjFmZGFkYTRjMDk5YWVl
YTM1OTJkODdiNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlPYmplY3RJbmZv
LmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oCkBAIC02MSw5ICs2MSwx
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjdXN0b21BbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jdXN0b21BbGxvY2F0aW9uOyB9CiAgICAgdm9pZCBzZXRDdXN0b21BbGxvY2F0aW9uKGJvb2wg
Y3VzdG9tQWxsb2NhdGlvbikgeyBtX2N1c3RvbUFsbG9jYXRpb24gPSBjdXN0b21BbGxvY2F0aW9u
OyB9CiAKLSAgICB2b2lkIHNldENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkgeyBt
X2NsYXNzTmFtZSA9IGNsYXNzTmFtZTsgfQorICAgIHZvaWQgc2V0Q2xhc3NOYW1lKGNvbnN0IFN0
cmluZyYgY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1fY2xhc3NOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIG1fY2xhc3NOYW1lID0gY2xhc3NOYW1lOworICAgIH0KICAgICBjb25z
dCBTdHJpbmcmIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NOYW1lOyB9Ci0gICAg
dm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CisgICAg
dm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIGlmIChtX25h
bWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9uYW1lID0gbmFtZTsKKyAgICB9CiAgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCmluZGV4IDlkMGI4
NDAxYjFhNWZjMDVjNmQ0YmFiMTc5ZDMxMGE4ZjcwMWFkODQuLmJhMTUwN2U3NWQxOWYwMDY1OTIy
ODEyZmQ5OGYxYmYyMDJlNzk2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCkBAIC0z
OSwxMCArMzksMTAgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVNuYXBzaG90VmlldyA9IGZ1
bmN0aW9uKHByb2ZpbGUpCiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJuYXRpdmVNZW1v
cnlQcm9maWxlci5jc3MiKTsKIAogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJuYXRp
dmUtc25hcHNob3QtdmlldyIpOwotICAgIHRoaXMuX2NvbnRhaW5tZW50RGF0YUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90RGF0YUdyaWQocHJvZmlsZS5fbWVtb3J5QmxvY2sp
OworICAgIHRoaXMuX2NvbnRhaW5tZW50RGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2
ZVNuYXBzaG90RGF0YUdyaWQocHJvZmlsZSk7CiAgICAgdGhpcy5fY29udGFpbm1lbnREYXRhR3Jp
ZC5zaG93KHRoaXMuZWxlbWVudCk7CiAKLSAgICB0aGlzLl9oZWFwR3JhcGhEYXRhR3JpZCA9IG5l
dyBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoRGF0YUdyaWQobmV3IFdlYkluc3BlY3Rvci5O
YXRpdmVIZWFwR3JhcGgocHJvZmlsZS5fZ3JhcGgpKTsKKyAgICB0aGlzLl9oZWFwR3JhcGhEYXRh
R3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoRGF0YUdyaWQocHJvZmlsZS5f
Z3JhcGgpOwogCiAgICAgdGhpcy5fdmlld1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzZWxlY3QiKTsKICAgICB0aGlzLl92aWV3U2VsZWN0RWxlbWVudC5jbGFzc05hbWUg
PSAic3RhdHVzLWJhci1pdGVtIjsKQEAgLTkwLDcgKzkwLDcgQEAgV2ViSW5zcGVjdG9yLk5hdGl2
ZU1lbW9yeVNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3Rvcgog
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5EYXRhR3JpZH0KLSAqIEBwYXJhbSB7TWVtb3J5QWdl
bnQuTWVtb3J5QmxvY2t9IHByb2ZpbGUKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hdGl2ZU1l
bW9yeVByb2ZpbGVIZWFkZXJ9IHByb2ZpbGUKICAqLwogV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBz
aG90RGF0YUdyaWQgPSBmdW5jdGlvbihwcm9maWxlKQogewpAQCAtOTksNyArOTksOCBAQCBXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3REYXRhR3JpZCA9IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAg
ICAgIHNpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpLCBzb3J0YWJs
ZTogdHJ1ZSwgc29ydDogImRlc2NlbmRpbmciIH0sCiAgICAgfTsKICAgICBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKLSAgICB0aGlzLl90b3RhbE5vZGUgPSBuZXcg
V2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90Tm9kZShwcm9maWxlLCBwcm9maWxlKTsKKyAgICB0
aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKKyAgICB0aGlzLl90b3RhbE5vZGUgPSBuZXcgV2ViSW5z
cGVjdG9yLk5hdGl2ZVNuYXBzaG90Tm9kZShwcm9maWxlLl9tZW1vcnlCbG9jaywgcHJvZmlsZS5f
bWVtb3J5QmxvY2spOwogICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd05hdGl2ZVNu
YXBzaG90VW5pbnN0cnVtZW50ZWRTaXplLmdldCgpKSB7CiAgICAgICAgIHRoaXMuc2V0Um9vdE5v
ZGUobmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUobnVsbCwgdHJ1ZSkpOwogICAgICAgICB0
aGlzLnJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fdG90YWxOb2RlKQpAQCAtMjU5LDEzICsy
NjAsNjMgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgX3BvcHVsYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fbm9k
ZURhdGEuY2hpbGRyZW4uc29ydCh0aGlzLmRhdGFHcmlkLl9zb3J0aW5nRnVuY3Rpb24uYmluZCh0
aGlzLmRhdGFHcmlkKSk7CisKICAgICAgICAgZm9yICh2YXIgbm9kZSBpbiB0aGlzLl9ub2RlRGF0
YS5jaGlsZHJlbikgewogICAgICAgICAgICAgdmFyIG5vZGVEYXRhID0gdGhpcy5fbm9kZURhdGEu
Y2hpbGRyZW5bbm9kZV07CisgICAgICAgICAgICB0aGlzLl9hZGRDaGlsZHJlbkZyb21HcmFwaChu
b2RlRGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dOYXRp
dmVTbmFwc2hvdFVuaW5zdHJ1bWVudGVkU2l6ZS5nZXQoKSB8fCBub2RlRGF0YS5uYW1lICE9PSAi
T3RoZXIiKQogICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rv
ci5OYXRpdmVTbmFwc2hvdE5vZGUobm9kZURhdGEsIHRoaXMuX3Byb2ZpbGUpKTsKICAgICAgICAg
fQogICAgIH0sCiAKKyAgICBfYWRkQ2hpbGRyZW5Gcm9tR3JhcGg6IGZ1bmN0aW9uKG1lbW9yeUJs
b2NrKQorICAgIHsKKyAgICAgICAgaWYgKG1lbW9yeUJsb2NrLmNoaWxkcmVuKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAobWVtb3J5QmxvY2submFtZSAhPT0gIkltYWdlIiB8fCB0
aGlzLl9ub2RlRGF0YS5uYW1lICE9PSAiTWVtb3J5Q2FjaGUiKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIC8vIENvbGxlY3Qgb2JqZWN0cyBvbiB0aGUgcGF0aCBNZW1vcnlDYWNoZSAt
PiBDYWNoZWRJbWFnZSAtbV9pbWFnZS0+IEJpdG1hcEltYWdlIC1tX2ZyYW1lcy0+IEZyYW1lRGF0
YSAtbV9mcmFtZS0+IFNrQml0bWFwIC0+IFNrUGl4ZWxSZWYKKyAgICAgICAgdmFyIGdyYXBoID0g
dGhpcy5kYXRhR3JpZC5fcHJvZmlsZS5fZ3JhcGg7CisgICAgICAgIHZhciByb290cyA9IGdyYXBo
LnJvb3ROb2RlcygpOworICAgICAgICB2YXIgbWVtb3J5Q2FjaGU7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcm9vdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciByb290ID0g
cm9vdHNbaV07CisgICAgICAgICAgICBpZiAocm9vdC5jbGFzc05hbWUoKSA9PT0gIk1lbW9yeUNh
Y2hlIikgeworICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlID0gcm9vdDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB2YXIgZWRnZXMg
PSBtZW1vcnlDYWNoZS5vdXRnb2luZ0VkZ2VzKCk7CisgICAgICAgIHZhciBjYWNoZWRJbWFnZXMg
PSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgdmFyIHRhcmdldCA9IGVkZ2VzW2ldLnRhcmdldCgpOworICAgICAgICAgICAg
aWYgKHRhcmdldC5jbGFzc05hbWUoKSA9PT0gIkNhY2hlZEltYWdlIikgeworICAgICAgICAgICAg
ICAgIHZhciBjYWNoZWRJbWFnZSA9IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogdGFyZ2V0
Lm5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZTogdGFyZ2V0LnNpemUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBjYWNoZWRJbWFnZXMucHVzaChjYWNoZWRJbWFnZSk7CisgICAgICAgICAgICAgICAg
dmFyIGltYWdlID0gdGFyZ2V0LnRhcmdldE9mRWRnZSgibV9pbWFnZSIpOworICAgICAgICAgICAg
ICAgIGlmIChpbWFnZS5jbGFzc05hbWUoKSA9PT0gIkJpdG1hcEltYWdlIikgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgZnJhbWVzID0gaW1hZ2UudGFyZ2V0c09mQWxsRWRnZXMoIm1fZnJhbWUi
KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmcmFtZXMubGVuZ3Ro
OyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwaXhlbHMgPSBmcmFtZXNbal0u
dGFyZ2V0T2ZFZGdlKCJwaXhlbHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXhl
bHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRJbWFnZS5zaXplICs9IHBp
eGVscy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkSW1hZ2UuY2hp
bGRyZW4ucHVzaCh7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJCaXRt
YXAgcGl4ZWxzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogcGl4ZWxz
LnNpemUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1lbW9yeUJsb2NrLmNoaWxkcmVuID0gY2Fj
aGVkSW1hZ2VzOworICAgIH0sCisKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlCiB9CiAKQEAgLTI3NSw2ICszMjYsNDkgQEAgV2ViSW5zcGVjdG9yLk5h
dGl2ZVNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5O
YXRpdmVIZWFwR3JhcGh9IGdyYXBoCiAgKiBAcGFyYW0ge251bWJlcn0gcG9zaXRpb24KICAqLwor
V2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaEVkZ2UgPSBmdW5jdGlvbihncmFwaCwgcG9zaXRp
b24pCit7CisgICAgdGhpcy5fZ3JhcGggPSBncmFwaDsKKyAgICB0aGlzLl9wb3NpdGlvbiA9IHBv
c2l0aW9uOworfQorCitXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoRWRnZS5wcm90b3R5cGUg
PSB7CisgICAgdHlwZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dl
dFN0cmluZ0ZpZWxkKHRoaXMuX2dyYXBoLl9lZGdlVHlwZU9mZnNldCk7CisgICAgfSwKKworICAg
IG5hbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRTdHJpbmdG
aWVsZCh0aGlzLl9ncmFwaC5fZWRnZU5hbWVPZmZzZXQpOworICAgIH0sCisKKyAgICB0YXJnZXQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBlZGdlcyA9IHRoaXMuX2dyYXBoLl9lZGdl
czsKKyAgICAgICAgdmFyIHRhcmdldFBvc2l0aW9uID0gZWRnZXNbdGhpcy5fcG9zaXRpb24gKyB0
aGlzLl9ncmFwaC5fZWRnZVRhcmdldE9mZnNldF0gKiB0aGlzLl9ncmFwaC5fbm9kZUZpZWxkQ291
bnQ7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaE5vZGUo
dGhpcy5fZ3JhcGgsIHRhcmdldFBvc2l0aW9uKTsKKyAgICB9LAorCisgICAgX2dldFN0cmluZ0Zp
ZWxkOiBmdW5jdGlvbihvZmZzZXQpCisgICAgeworICAgICAgICB2YXIgdHlwZUluZGV4ID0gdGhp
cy5fZ3JhcGguX2VkZ2VzW3RoaXMuX3Bvc2l0aW9uICsgb2Zmc2V0XTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2dyYXBoLl9yYXdHcmFwaC5zdHJpbmdzW3R5cGVJbmRleF07CisgICAgfSwKKworICAg
IHRvU3RyaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIkVkZ2UjIiArIHRo
aXMuX3Bvc2l0aW9uICsgIiAtIiArIHRoaXMubmFtZSgpICsgIi0+ICIgKyB0aGlzLnRhcmdldCgp
OworICAgIH0KKworfQorCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5OYXRpdmVIZWFwR3JhcGh9IGdyYXBoCisgKiBAcGFyYW0ge251bWJlcn0gcG9zaXRp
b24KKyAqLwogV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaE5vZGUgPSBmdW5jdGlvbihncmFw
aCwgcG9zaXRpb24pCiB7CiAgICAgdGhpcy5fZ3JhcGggPSBncmFwaDsKQEAgLTI5NCw3ICszODgs
NyBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5wcm90b3R5cGUgPSB7CiAKICAg
ICBzaXplOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGguX3Jh
d0dyYXBoLm5vZGVzW3RoaXMuX3Bvc2l0aW9uICsgdGhpcy5fZ3JhcGguX25vZGVTaXplT2Zmc2V0
XTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoLl9ub2Rlc1t0aGlzLl9wb3NpdGlvbiArIHRo
aXMuX2dyYXBoLl9ub2RlU2l6ZU9mZnNldF07CiAgICAgfSwKIAogICAgIGNsYXNzTmFtZTogZnVu
Y3Rpb24oKQpAQCAtMzE0LDggKzQwOCw4IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhO
b2RlLnByb3RvdHlwZSA9IHsKIAogICAgIHJlZmVyZW5jZWROb2RlczogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fZ3JhcGguX3Jhd0dyYXBoLmVkZ2VzOwotICAg
ICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ncmFwaC5fcmF3R3JhcGgubm9kZXM7CisgICAgICAgIHZh
ciBlZGdlcyA9IHRoaXMuX2dyYXBoLl9lZGdlczsKKyAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5f
Z3JhcGguX25vZGVzOwogICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9ncmFwaC5f
ZWRnZUZpZWxkQ291bnQ7CiAgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX2dyYXBo
Ll9ub2RlRmllbGRDb3VudDsKIApAQCAtMzI3LDI3ICs0MjEsNjEgQEAgV2ViSW5zcGVjdG9yLk5h
dGl2ZUhlYXBHcmFwaE5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0sCiAKKyAgICBvdXRnb2luZ0VkZ2VzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgZWRnZXMgPSB0aGlzLl9ncmFwaC5fZWRnZXM7CisgICAgICAgIHZhciBlZGdlRmllbGRDb3Vu
dCA9IHRoaXMuX2dyYXBoLl9lZGdlRmllbGRDb3VudDsKKworICAgICAgICB2YXIgZmlyc3RFZGdl
UG9zaXRpb24gPSB0aGlzLl9maXJzdEVkZ2VQb2lzdGlvbigpOworICAgICAgICB2YXIgYWZ0ZXJM
YXN0RWRnZVBvc2l0aW9uID0gdGhpcy5fYWZ0ZXJMYXN0RWRnZVBvc2l0aW9uKCk7CisgICAgICAg
IHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IGZpcnN0RWRnZVBvc2l0aW9u
OyBpIDwgYWZ0ZXJMYXN0RWRnZVBvc2l0aW9uOyBpICs9IGVkZ2VGaWVsZENvdW50KQorICAgICAg
ICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhFZGdlKHRo
aXMuX2dyYXBoLCBpKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIHRh
cmdldE9mRWRnZTogZnVuY3Rpb24oZWRnZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy50YXJnZXRzT2ZBbGxFZGdlcyhlZGdlTmFtZSlbMF07CisgICAgfSwKKworICAgIHRhcmdldHNP
ZkFsbEVkZ2VzOiBmdW5jdGlvbihlZGdlTmFtZSkKKyAgICB7CisgICAgICAgIHZhciBlZGdlcyA9
IHRoaXMuX2dyYXBoLl9lZGdlczsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gdGhpcy5f
Z3JhcGguX2VkZ2VGaWVsZENvdW50OworCisgICAgICAgIHZhciBmaXJzdEVkZ2VQb3NpdGlvbiA9
IHRoaXMuX2ZpcnN0RWRnZVBvaXN0aW9uKCk7CisgICAgICAgIHZhciBhZnRlckxhc3RFZGdlUG9z
aXRpb24gPSB0aGlzLl9hZnRlckxhc3RFZGdlUG9zaXRpb24oKTsKKworICAgICAgICB2YXIgZWRn
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoRWRnZSh0aGlzLl9ncmFwaCwgZmly
c3RFZGdlUG9zaXRpb24pCisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IGZpcnN0RWRnZVBvc2l0aW9uOyBpIDwgYWZ0ZXJMYXN0RWRnZVBvc2l0aW9uOyBpICs9
IGVkZ2VGaWVsZENvdW50KSB7CisgICAgICAgICAgICBlZGdlLl9wb3NpdGlvbiA9IGk7CisgICAg
ICAgICAgICBpZiAoZWRnZS5uYW1lKCkgPT09IGVkZ2VOYW1lKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5wdXNoKGVkZ2UudGFyZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfSwKKwogICAgIF9maXJzdEVkZ2VQb2lzdGlvbjogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoLl9yYXdHcmFwaC5ub2Rlc1t0aGlzLl9wb3NpdGlv
biArIHRoaXMuX2dyYXBoLl9ub2RlRmlyc3RFZGdlT2Zmc2V0XSAqIHRoaXMuX2dyYXBoLl9lZGdl
RmllbGRDb3VudDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoLl9ub2Rlc1t0aGlzLl9wb3Np
dGlvbiArIHRoaXMuX2dyYXBoLl9ub2RlRmlyc3RFZGdlT2Zmc2V0XSAqIHRoaXMuX2dyYXBoLl9l
ZGdlRmllbGRDb3VudDsKICAgICB9LAogCiAgICAgX2FmdGVyTGFzdEVkZ2VQb3NpdGlvbjogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fZ3JhcGguX3Jhd0dyYXBo
LmVkZ2VzOwotICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ncmFwaC5fcmF3R3JhcGgubm9kZXM7
Ci0gICAgICAgIHZhciBhZnRlckxhc3RFZGdlUG9zaXRpb24gPSBub2Rlc1t0aGlzLl9wb3NpdGlv
biArIHRoaXMuX2dyYXBoLl9ub2RlRmllbGRDb3VudCArIHRoaXMuX2dyYXBoLl9ub2RlRmlyc3RF
ZGdlT2Zmc2V0XTsKLSAgICAgICAgaWYgKGFmdGVyTGFzdEVkZ2VQb3NpdGlvbikKLSAgICAgICAg
ICAgIGFmdGVyTGFzdEVkZ2VQb3NpdGlvbiAqPSB0aGlzLl9ncmFwaC5fZWRnZUZpZWxkQ291bnQ7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFmdGVyTGFzdEVkZ2VQb3NpdGlvbiA9IGVkZ2Vz
Lmxlbmd0aDsKLSAgICAgICAgcmV0dXJuIGFmdGVyTGFzdEVkZ2VQb3NpdGlvbjsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2dyYXBoLl9ub2Rlc1t0aGlzLl9wb3NpdGlvbiArIHRoaXMuX2dyYXBoLl9u
b2RlRmllbGRDb3VudCArIHRoaXMuX2dyYXBoLl9ub2RlRmlyc3RFZGdlT2Zmc2V0XSAqIHRoaXMu
X2dyYXBoLl9lZGdlRmllbGRDb3VudDsKICAgICB9LAogCiAgICAgX2dldFN0cmluZ0ZpZWxkOiBm
dW5jdGlvbihvZmZzZXQpCiAgICAgewotICAgICAgICB2YXIgdHlwZUluZGV4ID0gdGhpcy5fZ3Jh
cGguX3Jhd0dyYXBoLm5vZGVzW3RoaXMuX3Bvc2l0aW9uICsgb2Zmc2V0XTsKKyAgICAgICAgdmFy
IHR5cGVJbmRleCA9IHRoaXMuX2dyYXBoLl9ub2Rlc1t0aGlzLl9wb3NpdGlvbiArIG9mZnNldF07
CiAgICAgICAgIHJldHVybiB0aGlzLl9ncmFwaC5fcmF3R3JhcGguc3RyaW5nc1t0eXBlSW5kZXhd
OworICAgIH0sCisKKyAgICB0b1N0cmluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuICJOb2RlIyIgKyB0aGlzLmlkKCkgKyAiICIgKyB0aGlzLm5hbWUoKSArICIoIiArIHRoaXMu
Y2xhc3NOYW1lKCkgKyAiKSI7CiAgICAgfQogfQogCkBAIC0zNzIsMTQgKzUwMCwxOSBAQCBXZWJJ
bnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoID0gZnVuY3Rpb24ocmF3R3JhcGgpCiAgICAgdGhpcy5f
ZWRnZVRhcmdldE9mZnNldCA9IDE7CiAgICAgdGhpcy5fZWRnZU5hbWVPZmZzZXQgPSAyOwogCisg
ICAgdGhpcy5fbm9kZUNvdW50ID0gcmF3R3JhcGgubm9kZXMubGVuZ3RoIC8gdGhpcy5fbm9kZUZp
ZWxkQ291bnQ7CisgICAgdGhpcy5fbm9kZXMgPSByYXdHcmFwaC5ub2RlczsKKyAgICB0aGlzLl9l
ZGdlcyA9IHJhd0dyYXBoLmVkZ2VzOworICAgIHRoaXMuX3N0cmluZ3MgPSByYXdHcmFwaC5zdHJp
bmdzOworCiAgICAgdGhpcy5fY2FsY3VsYXRlTm9kZUVkZ2VJbmRleGVzKCk7CiB9CiAKIFdlYklu
c3BlY3Rvci5OYXRpdmVIZWFwR3JhcGgucHJvdG90eXBlID0gewogICAgIHJvb3ROb2RlczogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIG5vZGVIYXNJbmNvbWluZ0VkZ2VzID0gbmV3IFVp
bnQ4QXJyYXkodGhpcy5fcmF3R3JhcGgubm9kZXMubGVuZ3RoIC8gdGhpcy5fbm9kZUZpZWxkQ291
bnQpOwotICAgICAgICB2YXIgZWRnZXMgPSB0aGlzLl9yYXdHcmFwaC5lZGdlczsKKyAgICAgICAg
dmFyIG5vZGVIYXNJbmNvbWluZ0VkZ2VzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5fbm9kZUNvdW50
KTsKKyAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fZWRnZXM7CiAgICAgICAgIHZhciBlZGdlc0xl
bmd0aCA9IGVkZ2VzLmxlbmd0aDsKICAgICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gdGhpcy5f
ZWRnZUZpZWxkQ291bnQ7CiAgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVG
aWVsZENvdW50OwpAQCAtMzk4LDcgKzUzMSw3IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3Jh
cGgucHJvdG90eXBlID0gewogCiAgICAgX2NhbGN1bGF0ZU5vZGVFZGdlSW5kZXhlczogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fcmF3R3JhcGgubm9kZXM7Cisg
ICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOwogICAgICAgICB2YXIgbm9kZUZpZWxkQ291
bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKICAgICAgICAgdmFyIG5vZGVMZW5ndGggPSBub2Rl
cy5sZW5ndGg7CiAgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleCA9IDA7CkBAIC00MDcsNiArNTQw
LDE1IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGgucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgbm9kZXNbaV0gPSBmaXJzdEVkZ2VJbmRleDsKICAgICAgICAgICAgIGZpcnN0RWRnZUlu
ZGV4ICs9IGNvdW50OwogICAgICAgICB9CisgICAgICAgIHRoaXMuX2FkZER1bW15Tm9kZSgpOwor
ICAgIH0sCisKKyAgICBfYWRkRHVtbXlOb2RlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgZmlyc3RFZGdlUG9zaXRpb24gPSB0aGlzLl9ub2Rlcy5sZW5ndGggKyB0aGlzLl9ub2RlRmly
c3RFZGdlT2Zmc2V0OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25vZGVGaWVs
ZENvdW50OyBpKyspCisgICAgICAgICAgICB0aGlzLl9ub2Rlcy5wdXNoKDApOworICAgICAgICB0
aGlzLl9ub2Rlc1tmaXJzdEVkZ2VQb3NpdGlvbl0gPSB0aGlzLl9lZGdlcy5sZW5ndGg7CiAgICAg
fQogfQogCkBAIC01NDUsNyArNjg3LDcgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2Zp
bGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBwcm9maWxlSGVhZGVyLl9tZW1vcnlCbG9jayA9IG1lbW9yeUJsb2NrOwotICAg
ICAgICAgICAgcHJvZmlsZUhlYWRlci5fZ3JhcGggPSBncmFwaDsKKyAgICAgICAgICAgIHByb2Zp
bGVIZWFkZXIuX2dyYXBoID0gbmV3IFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGgoZ3JhcGgp
OwogICAgICAgICAgICAgcHJvZmlsZUhlYWRlci5pc1RlbXBvcmFyeSA9IGZhbHNlOwogICAgICAg
ICAgICAgcHJvZmlsZUhlYWRlci5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IE51bWJlci5ieXRl
c1RvU3RyaW5nKC8qKiBAdHlwZXtudW1iZXJ9ICovKG1lbW9yeUJsb2NrLnNpemUpKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXgg
NjRkMzAyMDBlYTcwNjdhNWI0ZjNkYzRjZGFkYTk2ZDIwZjhiYjMyMC4uMTFhYTNlZWE5Mzg4MTEx
NDAxM2VhNzY1MTBhYTA4YmRiYjUzM2NlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlPYmplY3RJbmZvLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDgyLDggKzQ4
Myw5IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqIGltYWdl
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogdm9pZCBDYWNoZWRJbWFnZTo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlw
ZXM6OkNhY2hlZFJlc291cmNlSW1hZ2UpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnNldENsYXNz
TmFtZSgiQ2FjaGVkSW1hZ2UiKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9pbWFnZSk7CisgICAg
aW5mby5hZGRNZW1iZXIobV9pbWFnZSwgIm1faW1hZ2UiKTsKICNpZiBFTkFCTEUoU1ZHKQogICAg
IGluZm8uYWRkTWVtYmVyKG1fc3ZnSW1hZ2VDYWNoZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDUyODIwYTIwZTNiYzNm
NjBiZmNmN2U5NjZiNGZmZGNkOWRmNWQ1YjUuLmRkOTEyN2I3Y2JlYzNiYjNmMmU3NTdlNDY5Y2Vl
YTU4ZTA4OTU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hDb3VudGVkU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvTWVtb3J5T2JqZWN0SW5mby5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgpAQCAtODg4LDYgKzg4OSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhY2hl
ZFJlc291cmNlQ2FsbGJhY2s6OnRpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VDYWxsCiB2
b2lkIENhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVzb3VyY2UpOwor
ICAgIG1lbW9yeU9iamVjdEluZm8tPnNldE5hbWUodXJsKCkuc3RyaW5nKCkpOwogICAgIGluZm8u
YWRkTWVtYmVyKG1fcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2NsaWVu
dHMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fYWNjZXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGFlM2MwMzc1ZTIwZWVkYTllM2Y5NTBkZDg3
ZTVmMWQ0NGUyMzVlYjcuLmY4ZmRmMTg0OTFmNDdmZjU2OTUyNTllMWQ4OGU5NTI0NjY2NDg3ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvblZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlPYmplY3RJbmZvLmg+CiAj
aW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtNzIzLDYgKzcyNCw3IEBAIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIE1lbW9y
eUNhY2hlOjpnZXRTdGF0aXN0aWNzKCkKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnNldENs
YXNzTmFtZSgiTWVtb3J5Q2FjaGUiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc291cmNlcyk7
CiAgICAgaW5mby5hZGRNZW1iZXIobV9hbGxSZXNvdXJjZXMpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fbGl2ZURlY29kZWRSZXNvdXJjZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGRlZjA3MmVlMGQ3YmYyZWZhNjZiNjg4YmNm
NmFiMWFlOTgzMGRlYjcuLmJjY2IyMDAzODNmYWU2N2VkNDFiNDZjNWRmM2QyYzcyMTVlNWI2NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5T2JqZWN0SW5mby5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTc2LDIxICs1Nzcs
MjMgQEAgQ29sb3IgQml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IoKSBjb25zdAogdm9pZCBCaXRtYXBJ
bWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBQbGF0Zm9ybU1lbW9yeVR5cGVzOjpJbWFnZSk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+
c2V0Q2xhc3NOYW1lKCJCaXRtYXBJbWFnZSIpOwogICAgIEltYWdlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3NvdXJjZSk7CisgICAg
aW5mby5hZGRNZW1iZXIobV9zb3VyY2UsICJtX3NvdXJjZSIpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fZnJhbWVUaW1lcik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9mcmFtZXMpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fZnJhbWVzLCAibV9mcmFtZXMiKTsKIH0KIAogdm9pZCBGcmFtZURhdGE6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgUGxh
dGZvcm1NZW1vcnlUeXBlczo6SW1hZ2UpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnNldENsYXNz
TmFtZSgiRnJhbWVEYXRhIik7CiAjaWYgT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkKICAgICBp
bmZvLmFkZFJhd0J1ZmZlcihtX2ZyYW1lLmdldCgpLCBtX2ZyYW1lQnl0ZXMpOwogI2VsaWYgVVNF
KFNLSUEpCi0gICAgaW5mby5hZGRNZW1iZXIobV9mcmFtZSk7CisgICAgaW5mby5hZGRNZW1iZXIo
bV9mcmFtZSwgIm1fZnJhbWUiKTsKICNlbHNlCi0gICAgaW5mby5hZGRSYXdCdWZmZXIobV9mcmFt
ZSwgbV9mcmFtZUJ5dGVzKTsKKyAgICBpbmZvLmFkZFJhd0J1ZmZlcihtX2ZyYW1lLCBtX2ZyYW1l
Qnl0ZXMsICJtX2ZyYW1lIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDg5Y2JiNTRjMmM2Y2Y4MWZkMDZjNDA3ZDFkYTU1ZTcy
MjIxNjQyY2MuLmFlMTcyZjI5Zjk1M2FmNzZmOGRjZjNmYTQ4ZTllYTY1M2M0MGI2NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5T2JqZWN0SW5mby5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIFVTRShDRykKQEAgLTIwMSw3ICsy
MDIsOCBAQCB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGlu
dHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpYwogdm9pZCBJbWFnZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBN
ZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBQbGF0Zm9ybU1lbW9y
eVR5cGVzOjpJbWFnZSk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9kYXRhKTsKKyAgICBtZW1vcnlP
YmplY3RJbmZvLT5zZXRDbGFzc05hbWUoIkltYWdlIik7CisgICAgaW5mby5hZGRNZW1iZXIobV9k
YXRhLCAibV9kYXRhIik7CiAgICAgaW5mby5hZGRXZWFrUG9pbnRlcihtX2ltYWdlT2JzZXJ2ZXIp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L01lbW9yeUluc3RydW1lbnRhdGlvblNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9NZW1vcnlJbnN0cnVtZW50YXRpb25Ta2lhLmNwcAppbmRleCAwNzkzYzM1
NjlkMWFiNWE1MWNkNDdiNGI5ZWQ4ODU0OWUwNjNlNzkyLi45ODgyZjNhZWU0NDE3ZDJjM2ZmYWNi
NDU2YWNkZWViMDYzNjA3MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL01lbW9yeUluc3RydW1lbnRhdGlvblNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU2tpYS5j
cHAKQEAgLTM2LDE0ICszNiwxNyBAQAogI2luY2x1ZGUgIlNrQ2FudmFzLmgiCiAjaW5jbHVkZSAi
U2tEZXZpY2UuaCIKICNpbmNsdWRlICJTa1BpeGVsUmVmLmgiCisjaW5jbHVkZSA8d3RmL01lbW9y
eU9iamVjdEluZm8uaD4KIAogdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTa0JpdG1hcCog
Y29uc3QmIGltYWdlLCBXVEY6Ok1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCiB7
CiAgICAgV1RGOjpNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCBpbWFnZSk7
CisgICAgbWVtb3J5T2JqZWN0SW5mby0+c2V0Q2xhc3NOYW1lKCJTa0JpdG1hcCIpOworCiAgICAg
U2tQaXhlbFJlZiogcGl4ZWxSZWYgPSBpbWFnZS0+cGl4ZWxSZWYoKTsKICAgICBpbmZvLmFkZE1l
bWJlcihwaXhlbFJlZik7CiAgICAgaWYgKHBpeGVsUmVmKQotICAgICAgICBpbmZvLmFkZFJhd0J1
ZmZlcihwaXhlbFJlZi0+cGl4ZWxzKCksIGltYWdlLT5nZXRTaXplKCkpOworICAgICAgICBpbmZv
LmFkZFJhd0J1ZmZlcihwaXhlbFJlZi0+cGl4ZWxzKCksIGltYWdlLT5nZXRTaXplKCksIDAsICJw
aXhlbHMiKTsKIH0KIAogdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTa0RldmljZSogY29u
c3QmIGRldmljZSwgV1RGOjpNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179910</attachid>
            <date>2012-12-18 02:26:49 -0800</date>
            <delta_ts>2012-12-18 03:47:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105261-20121218142406.patch</filename>
            <type>text/plain</type>
            <size>24373</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiYTQ2NDNiNWQ2OTRkZTcxNTMyZWE1
MDViMmM2YTMxMGFiNjljODAuLjNlYWJkOThhM2NlMDYyNDUxOTZmYzhkMTdhNGYyNzVjNjNmZjdm
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTcgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hvdyBjYWNoZWQg
aW1hZ2VzIHVuZGVyIE1lbW9yeUNhY2hlIC0+IEltYWdlcyBzZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUyNjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZmlyc3QgcHJvdmlkZWQgbmFt
ZSBhbmQgY2xhc3MgbmFtZS4gSWYgb25lIG9mIHRoZSBhbmNlc3RvcnMgdHJpZXMgdG8gb3Zlcndy
aXRlCisgICAgICAgIGl0IGp1c3QgaWdub3JlIHRoZSBjYWxsLgorCisgICAgICAgICogd3RmL01l
bW9yeU9iamVjdEluZm8uaDoKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6c2V0Q2xh
c3NOYW1lKToKKyAgICAgICAgKFdURjo6TWVtb3J5T2JqZWN0SW5mbzo6c2V0TmFtZSk6CisKIDIw
MTItMTItMTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uOiBNZW1vcnlJ
bnN0cnVtZW50YXRpb24gZG9lc24ndCBkZXRlY3QgcmVwb3J0TWVtb3J5VXNhZ2UgbWV0aG9kIGRl
ZmluZWQgaW4gYSBiYXNlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2NmFiNTAyZGU3ZmNiMmM4YjNk
NWUwNzA5YmNiODc1MzdlOTI0ZWYuLjc0Y2RmZGE3MmNmOTMyODA5OWUyODExN2M3Y2QzMGVmZDE0
MGVkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0xMi0xNyAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
aG93IGNhY2hlZCBpbWFnZXMgdW5kZXIgTWVtb3J5Q2FjaGUgLT4gSW1hZ2VzIHNlY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTI2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGVkIGNs
YXNzIG5hbWUgYW5kIG5hbWUgZm9yIHNldmVyYWwgb2JqZWN0cyByZWxhdGVkIHRvIENhY2hlZElt
YWdlLgorICAgICAgICBDaGFuZ2VkIG5hdGl2ZSBtZW1vcnkgc25hcHNobyB2aWV3IHNvIHRoYXQg
TWVtb3J5Q2FjaGUuSW1hZ2Ugc2VjdGlvbiBjYW4KKyAgICAgICAgYmUgZXhwYW5kZWQgaW50byBp
bmRpdmlkdWFsIGltYWdlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZl
TWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9y
eVNuYXBzaG90Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3ROb2Rl
LnByb3RvdHlwZS5fYWRkQ2hpbGRyZW5Gcm9tR3JhcGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdGl2ZUhlYXBHcmFwaEVkZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBH
cmFwaEVkZ2UucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhl
YXBHcmFwaEVkZ2UucHJvdG90eXBlLm5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2
ZUhlYXBHcmFwaEVkZ2UucHJvdG90eXBlLnRhcmdldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmF0aXZlSGVhcEdyYXBoRWRnZS5wcm90b3R5cGUuX2dldFN0cmluZ0ZpZWxkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhFZGdlLnByb3RvdHlwZS50b1N0cmluZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5wcm90b3R5cGUuc2l6ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5wcm90b3R5cGUucmVm
ZXJlbmNlZE5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhOb2Rl
LnByb3RvdHlwZS5vdXRnb2luZ0VkZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVI
ZWFwR3JhcGhOb2RlLnByb3RvdHlwZS50YXJnZXRPZkVkZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5hdGl2ZUhlYXBHcmFwaE5vZGUucHJvdG90eXBlLnRhcmdldHNPZkFsbEVkZ2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhOb2RlLnByb3RvdHlwZS5fZmlyc3RF
ZGdlUG9pc3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaE5vZGUu
cHJvdG90eXBlLl9hZnRlckxhc3RFZGdlUG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdGl2ZUhlYXBHcmFwaE5vZGUucHJvdG90eXBlLl9nZXRTdHJpbmdGaWVsZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5wcm90b3R5cGUudG9TdHJpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF0aXZlSGVhcEdyYXBoLnByb3RvdHlwZS5yb290Tm9kZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaC5wcm90b3R5cGUuX2NhbGN1bGF0ZU5vZGVFZGdlSW5k
ZXhlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoLnByb3RvdHlwZS5f
YWRkRHVtbXlOb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxl
VHlwZS5wcm90b3R5cGUuYnV0dG9uQ2xpY2tlZC5kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLnByb3RvdHlwZS5i
dXR0b25DbGlja2VkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL01l
bW9yeUluc3RydW1lbnRhdGlvblNraWEuY3BwOgorICAgICAgICAocmVwb3J0TWVtb3J5VXNhZ2Up
OgorCiAyMDEyLTEyLTE3ICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQWRkIEFTU0VSVGlvbnMgdG8gZW5zdXJlIHRoYXQgQ1NTUHJvcGVydHlz
IHRoYXQgYXJlIHZhcmlhYmxlcyBvbmx5IGV2ZXIgcmVmZXIgdG8gQ1NTVmFsdWVzIHRoYXQgYXJl
IHZhcmlhYmxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8u
aCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeU9iamVjdEluZm8uaAppbmRleCBiYmMxNDk0ZTYzZWUz
ZmJmMWExNDQ0NDc0NWYxYzEzYTRhNzE0Mjk0Li5jZjI0YjliZGZmMjZlYjFmZGFkYTRjMDk5YWVl
YTM1OTJkODdiNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlPYmplY3RJbmZv
LmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5T2JqZWN0SW5mby5oCkBAIC02MSw5ICs2MSwx
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjdXN0b21BbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jdXN0b21BbGxvY2F0aW9uOyB9CiAgICAgdm9pZCBzZXRDdXN0b21BbGxvY2F0aW9uKGJvb2wg
Y3VzdG9tQWxsb2NhdGlvbikgeyBtX2N1c3RvbUFsbG9jYXRpb24gPSBjdXN0b21BbGxvY2F0aW9u
OyB9CiAKLSAgICB2b2lkIHNldENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkgeyBt
X2NsYXNzTmFtZSA9IGNsYXNzTmFtZTsgfQorICAgIHZvaWQgc2V0Q2xhc3NOYW1lKGNvbnN0IFN0
cmluZyYgY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1fY2xhc3NOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIG1fY2xhc3NOYW1lID0gY2xhc3NOYW1lOworICAgIH0KICAgICBjb25z
dCBTdHJpbmcmIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NOYW1lOyB9Ci0gICAg
dm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CisgICAg
dm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIGlmIChtX25h
bWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9uYW1lID0gbmFtZTsKKyAgICB9CiAgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCmluZGV4IDlkMGI4
NDAxYjFhNWZjMDVjNmQ0YmFiMTc5ZDMxMGE4ZjcwMWFkODQuLjdhZmU4ZTJiNWY0MWMxMjgzMDY3
ZGY1ZGY4ZjRiYWY1YjU3ZGE0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCkBAIC0z
OSwxMCArMzksMTAgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVNuYXBzaG90VmlldyA9IGZ1
bmN0aW9uKHByb2ZpbGUpCiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJuYXRpdmVNZW1v
cnlQcm9maWxlci5jc3MiKTsKIAogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJuYXRp
dmUtc25hcHNob3QtdmlldyIpOwotICAgIHRoaXMuX2NvbnRhaW5tZW50RGF0YUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90RGF0YUdyaWQocHJvZmlsZS5fbWVtb3J5QmxvY2sp
OworICAgIHRoaXMuX2NvbnRhaW5tZW50RGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2
ZVNuYXBzaG90RGF0YUdyaWQocHJvZmlsZSk7CiAgICAgdGhpcy5fY29udGFpbm1lbnREYXRhR3Jp
ZC5zaG93KHRoaXMuZWxlbWVudCk7CiAKLSAgICB0aGlzLl9oZWFwR3JhcGhEYXRhR3JpZCA9IG5l
dyBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoRGF0YUdyaWQobmV3IFdlYkluc3BlY3Rvci5O
YXRpdmVIZWFwR3JhcGgocHJvZmlsZS5fZ3JhcGgpKTsKKyAgICB0aGlzLl9oZWFwR3JhcGhEYXRh
R3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoRGF0YUdyaWQocHJvZmlsZS5f
Z3JhcGgpOwogCiAgICAgdGhpcy5fdmlld1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzZWxlY3QiKTsKICAgICB0aGlzLl92aWV3U2VsZWN0RWxlbWVudC5jbGFzc05hbWUg
PSAic3RhdHVzLWJhci1pdGVtIjsKQEAgLTkwLDcgKzkwLDcgQEAgV2ViSW5zcGVjdG9yLk5hdGl2
ZU1lbW9yeVNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3Rvcgog
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5EYXRhR3JpZH0KLSAqIEBwYXJhbSB7TWVtb3J5QWdl
bnQuTWVtb3J5QmxvY2t9IHByb2ZpbGUKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hdGl2ZU1l
bW9yeVByb2ZpbGVIZWFkZXJ9IHByb2ZpbGUKICAqLwogV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBz
aG90RGF0YUdyaWQgPSBmdW5jdGlvbihwcm9maWxlKQogewpAQCAtOTksNyArOTksOCBAQCBXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3REYXRhR3JpZCA9IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAg
ICAgIHNpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpLCBzb3J0YWJs
ZTogdHJ1ZSwgc29ydDogImRlc2NlbmRpbmciIH0sCiAgICAgfTsKICAgICBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKLSAgICB0aGlzLl90b3RhbE5vZGUgPSBuZXcg
V2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90Tm9kZShwcm9maWxlLCBwcm9maWxlKTsKKyAgICB0
aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKKyAgICB0aGlzLl90b3RhbE5vZGUgPSBuZXcgV2ViSW5z
cGVjdG9yLk5hdGl2ZVNuYXBzaG90Tm9kZShwcm9maWxlLl9tZW1vcnlCbG9jaywgcHJvZmlsZS5f
bWVtb3J5QmxvY2spOwogICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd05hdGl2ZVNu
YXBzaG90VW5pbnN0cnVtZW50ZWRTaXplLmdldCgpKSB7CiAgICAgICAgIHRoaXMuc2V0Um9vdE5v
ZGUobmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUobnVsbCwgdHJ1ZSkpOwogICAgICAgICB0
aGlzLnJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fdG90YWxOb2RlKQpAQCAtMTQ1LDEyICsx
NDYsMTIgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90RGF0YUdyaWQucHJvdG90eXBlID0g
ewogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZX0KICAqIEBwYXJhbSB7TWVtb3J5QWdlbnQuTWVtb3J5QmxvY2t9IG5vZGVEYXRhCi0gKiBAcGFy
YW0ge01lbW9yeUFnZW50Lk1lbW9yeUJsb2NrfSBwcm9maWxlCisgKiBAcGFyYW0ge01lbW9yeUFn
ZW50Lk1lbW9yeUJsb2NrfSByb290TWVtb3J5QmxvY2sKICAqLwotV2ViSW5zcGVjdG9yLk5hdGl2
ZVNuYXBzaG90Tm9kZSA9IGZ1bmN0aW9uKG5vZGVEYXRhLCBwcm9maWxlKQorV2ViSW5zcGVjdG9y
Lk5hdGl2ZVNuYXBzaG90Tm9kZSA9IGZ1bmN0aW9uKG5vZGVEYXRhLCByb290TWVtb3J5QmxvY2sp
CiB7CiAgICAgdGhpcy5fbm9kZURhdGEgPSBub2RlRGF0YTsKLSAgICB0aGlzLl9wcm9maWxlID0g
cHJvZmlsZTsKKyAgICB0aGlzLl9yb290TWVtb3J5QmxvY2sgPSByb290TWVtb3J5QmxvY2s7CiAg
ICAgdmFyIHZpZXdQcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3Bl
cnRpZXMuX2Zvck1lbW9yeUJsb2NrKG5vZGVEYXRhKTsKICAgICB2YXIgZGF0YSA9IHsgbmFtZTog
dmlld1Byb3BlcnRpZXMuX2Rlc2NyaXB0aW9uLCBzaXplOiB0aGlzLl9ub2RlRGF0YS5zaXplIH07
CiAgICAgdmFyIGhhc0NoaWxkcmVuID0gISFub2RlRGF0YS5jaGlsZHJlbiAmJiBub2RlRGF0YS5j
aGlsZHJlbi5sZW5ndGggIT09IDA7CkBAIC0yMjMsNyArMjI0LDcgQEAgV2ViSW5zcGVjdG9yLk5h
dGl2ZVNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIg
c2l6ZUtCID0gdGhpcy5fbm9kZURhdGEuc2l6ZSAvIDEwMjQ7Ci0gICAgICAgIHZhciB0b3RhbFNp
emUgPSB0aGlzLl9wcm9maWxlLnNpemU7CisgICAgICAgIHZhciB0b3RhbFNpemUgPSB0aGlzLl9y
b290TWVtb3J5QmxvY2suc2l6ZTsKICAgICAgICAgdmFyIHBlcmNlbnRhZ2UgPSB0aGlzLl9ub2Rl
RGF0YS5zaXplIC8gdG90YWxTaXplICAqIDEwMDsKIAogICAgICAgICB2YXIgY2VsbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CkBAIC0yNTksMTEgKzI2MCw2NCBAQCBXZWJJbnNwZWN0
b3IuTmF0aXZlU25hcHNob3ROb2RlLnByb3RvdHlwZSA9IHsKICAgICBfcG9wdWxhdGU6IGZ1bmN0
aW9uKCkgewogICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhp
cy5fcG9wdWxhdGUsIHRoaXMpOwogICAgICAgICB0aGlzLl9ub2RlRGF0YS5jaGlsZHJlbi5zb3J0
KHRoaXMuZGF0YUdyaWQuX3NvcnRpbmdGdW5jdGlvbi5iaW5kKHRoaXMuZGF0YUdyaWQpKTsKKwog
ICAgICAgICBmb3IgKHZhciBub2RlIGluIHRoaXMuX25vZGVEYXRhLmNoaWxkcmVuKSB7CiAgICAg
ICAgICAgICB2YXIgbm9kZURhdGEgPSB0aGlzLl9ub2RlRGF0YS5jaGlsZHJlbltub2RlXTsKKyAg
ICAgICAgICAgIHRoaXMuX2FkZENoaWxkcmVuRnJvbUdyYXBoKG5vZGVEYXRhKTsKICAgICAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd05hdGl2ZVNuYXBzaG90VW5pbnN0cnVt
ZW50ZWRTaXplLmdldCgpIHx8IG5vZGVEYXRhLm5hbWUgIT09ICJPdGhlciIpCi0gICAgICAgICAg
ICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90Tm9k
ZShub2RlRGF0YSwgdGhpcy5fcHJvZmlsZSkpOworICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5k
Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdE5vZGUobm9kZURhdGEsIHRoaXMu
X3Jvb3RNZW1vcnlCbG9jaykpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7TWVtb3J5QWdlbnQuTWVtb3J5QmxvY2t9IG1lbW9yeUJsb2NrCisgICAgICovCisg
ICAgX2FkZENoaWxkcmVuRnJvbUdyYXBoOiBmdW5jdGlvbihtZW1vcnlCbG9jaykKKyAgICB7Cisg
ICAgICAgIGlmIChtZW1vcnlCbG9jay5jaGlsZHJlbikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKG1lbW9yeUJsb2NrLm5hbWUgIT09ICJJbWFnZSIgfHwgdGhpcy5fbm9kZURhdGEu
bmFtZSAhPT0gIk1lbW9yeUNhY2hlIikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyBDb2xsZWN0IG9iamVjdHMgb24gdGhlIHBhdGggTWVtb3J5Q2FjaGUgLT4gQ2FjaGVkSW1hZ2Ug
LW1faW1hZ2UtPiBCaXRtYXBJbWFnZSAtbV9mcmFtZXMtPiBGcmFtZURhdGEgLW1fZnJhbWUtPiBT
a0JpdG1hcCAtPiBTa1BpeGVsUmVmCisgICAgICAgIHZhciBncmFwaCA9IHRoaXMuZGF0YUdyaWQu
X3Byb2ZpbGUuX2dyYXBoOworICAgICAgICB2YXIgcm9vdHMgPSBncmFwaC5yb290Tm9kZXMoKTsK
KyAgICAgICAgdmFyIG1lbW9yeUNhY2hlOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJv
b3RzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgcm9vdCA9IHJvb3RzW2ldOworICAg
ICAgICAgICAgaWYgKHJvb3QuY2xhc3NOYW1lKCkgPT09ICJNZW1vcnlDYWNoZSIpIHsKKyAgICAg
ICAgICAgICAgICBtZW1vcnlDYWNoZSA9IHJvb3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdmFyIGVkZ2VzID0gbWVtb3J5Q2FjaGUu
b3V0Z29pbmdFZGdlcygpOworICAgICAgICB2YXIgY2FjaGVkSW1hZ2VzID0gW107CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZh
ciB0YXJnZXQgPSBlZGdlc1tpXS50YXJnZXQoKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuY2xh
c3NOYW1lKCkgPT09ICJDYWNoZWRJbWFnZSIpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2FjaGVk
SW1hZ2UgPSB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRhcmdldC5uYW1lKCksCisgICAg
ICAgICAgICAgICAgICAgIHNpemU6IHRhcmdldC5zaXplKCksCisgICAgICAgICAgICAgICAgICAg
IGNoaWxkcmVuOiBbXQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgY2FjaGVk
SW1hZ2VzLnB1c2goY2FjaGVkSW1hZ2UpOworICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHRh
cmdldC50YXJnZXRPZkVkZ2UoIm1faW1hZ2UiKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1hZ2Uu
Y2xhc3NOYW1lKCkgPT09ICJCaXRtYXBJbWFnZSIpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGZyYW1lcyA9IGltYWdlLnRhcmdldHNPZkFsbEVkZ2VzKCJtX2ZyYW1lIik7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZnJhbWVzLmxlbmd0aDsgaisrKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgcGl4ZWxzID0gZnJhbWVzW2pdLnRhcmdldE9mRWRnZSgi
cGl4ZWxzIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGl4ZWxzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FjaGVkSW1hZ2Uuc2l6ZSArPSBwaXhlbHMuc2l6ZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZEltYWdlLmNoaWxkcmVuLnB1c2goewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiQml0bWFwIHBpeGVscyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHBpeGVscy5zaXplKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgICAgICBtZW1vcnlCbG9jay5jaGlsZHJlbiA9IGNhY2hlZEltYWdlczsKICAg
ICB9LAogCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZQpAQCAtMjc1LDYgKzMyOSw0OSBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3ROb2RlLnBy
b3RvdHlwZSA9IHsKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaH0gZ3Jh
cGgKICAqIEBwYXJhbSB7bnVtYmVyfSBwb3NpdGlvbgogICovCitXZWJJbnNwZWN0b3IuTmF0aXZl
SGVhcEdyYXBoRWRnZSA9IGZ1bmN0aW9uKGdyYXBoLCBwb3NpdGlvbikKK3sKKyAgICB0aGlzLl9n
cmFwaCA9IGdyYXBoOworICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247Cit9CisKK1dlYklu
c3BlY3Rvci5OYXRpdmVIZWFwR3JhcGhFZGdlLnByb3RvdHlwZSA9IHsKKyAgICB0eXBlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U3RyaW5nRmllbGQodGhpcy5f
Z3JhcGguX2VkZ2VUeXBlT2Zmc2V0KTsKKyAgICB9LAorCisgICAgbmFtZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dldFN0cmluZ0ZpZWxkKHRoaXMuX2dyYXBoLl9l
ZGdlTmFtZU9mZnNldCk7CisgICAgfSwKKworICAgIHRhcmdldDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fZ3JhcGguX2VkZ2VzOworICAgICAgICB2YXIgdGFy
Z2V0UG9zaXRpb24gPSBlZGdlc1t0aGlzLl9wb3NpdGlvbiArIHRoaXMuX2dyYXBoLl9lZGdlVGFy
Z2V0T2Zmc2V0XSAqIHRoaXMuX2dyYXBoLl9ub2RlRmllbGRDb3VudDsKKyAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZSh0aGlzLl9ncmFwaCwgdGFyZ2V0
UG9zaXRpb24pOworICAgIH0sCisKKyAgICBfZ2V0U3RyaW5nRmllbGQ6IGZ1bmN0aW9uKG9mZnNl
dCkKKyAgICB7CisgICAgICAgIHZhciB0eXBlSW5kZXggPSB0aGlzLl9ncmFwaC5fZWRnZXNbdGhp
cy5fcG9zaXRpb24gKyBvZmZzZXRdOworICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGguX3Jhd0dy
YXBoLnN0cmluZ3NbdHlwZUluZGV4XTsKKyAgICB9LAorCisgICAgdG9TdHJpbmc6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiAiRWRnZSMiICsgdGhpcy5fcG9zaXRpb24gKyAiIC0i
ICsgdGhpcy5uYW1lKCkgKyAiLT4gIiArIHRoaXMudGFyZ2V0KCk7CisgICAgfQorCit9CisKKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBH
cmFwaH0gZ3JhcGgKKyAqIEBwYXJhbSB7bnVtYmVyfSBwb3NpdGlvbgorICovCiBXZWJJbnNwZWN0
b3IuTmF0aXZlSGVhcEdyYXBoTm9kZSA9IGZ1bmN0aW9uKGdyYXBoLCBwb3NpdGlvbikKIHsKICAg
ICB0aGlzLl9ncmFwaCA9IGdyYXBoOwpAQCAtMjk0LDcgKzM5MSw3IEBAIFdlYkluc3BlY3Rvci5O
YXRpdmVIZWFwR3JhcGhOb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIHNpemU6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ncmFwaC5fcmF3R3JhcGgubm9kZXNbdGhpcy5f
cG9zaXRpb24gKyB0aGlzLl9ncmFwaC5fbm9kZVNpemVPZmZzZXRdOworICAgICAgICByZXR1cm4g
dGhpcy5fZ3JhcGguX25vZGVzW3RoaXMuX3Bvc2l0aW9uICsgdGhpcy5fZ3JhcGguX25vZGVTaXpl
T2Zmc2V0XTsKICAgICB9LAogCiAgICAgY2xhc3NOYW1lOiBmdW5jdGlvbigpCkBAIC0zMTQsOCAr
NDExLDggQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaE5vZGUucHJvdG90eXBlID0gewog
CiAgICAgcmVmZXJlbmNlZE5vZGVzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgZWRn
ZXMgPSB0aGlzLl9ncmFwaC5fcmF3R3JhcGguZWRnZXM7Ci0gICAgICAgIHZhciBub2RlcyA9IHRo
aXMuX2dyYXBoLl9yYXdHcmFwaC5ub2RlczsKKyAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fZ3Jh
cGguX2VkZ2VzOworICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ncmFwaC5fbm9kZXM7CiAgICAg
ICAgIHZhciBlZGdlRmllbGRDb3VudCA9IHRoaXMuX2dyYXBoLl9lZGdlRmllbGRDb3VudDsKICAg
ICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fZ3JhcGguX25vZGVGaWVsZENvdW50Owog
CkBAIC0zMjcsMjcgKzQyNCw2MSBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcEdyYXBoTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSwKIAorICAgIG91dGdv
aW5nRWRnZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBlZGdlcyA9IHRoaXMuX2dy
YXBoLl9lZGdlczsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gdGhpcy5fZ3JhcGguX2Vk
Z2VGaWVsZENvdW50OworCisgICAgICAgIHZhciBmaXJzdEVkZ2VQb3NpdGlvbiA9IHRoaXMuX2Zp
cnN0RWRnZVBvaXN0aW9uKCk7CisgICAgICAgIHZhciBhZnRlckxhc3RFZGdlUG9zaXRpb24gPSB0
aGlzLl9hZnRlckxhc3RFZGdlUG9zaXRpb24oKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBpID0gZmlyc3RFZGdlUG9zaXRpb247IGkgPCBhZnRlckxhc3RFZGdl
UG9zaXRpb247IGkgKz0gZWRnZUZpZWxkQ291bnQpCisgICAgICAgICAgICByZXN1bHQucHVzaChu
ZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaEVkZ2UodGhpcy5fZ3JhcGgsIGkpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgdGFyZ2V0T2ZFZGdlOiBmdW5jdGlv
bihlZGdlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnRhcmdldHNPZkFsbEVkZ2Vz
KGVkZ2VOYW1lKVswXTsKKyAgICB9LAorCisgICAgdGFyZ2V0c09mQWxsRWRnZXM6IGZ1bmN0aW9u
KGVkZ2VOYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fZ3JhcGguX2VkZ2Vz
OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9ncmFwaC5fZWRnZUZpZWxkQ291
bnQ7CisKKyAgICAgICAgdmFyIGZpcnN0RWRnZVBvc2l0aW9uID0gdGhpcy5fZmlyc3RFZGdlUG9p
c3Rpb24oKTsKKyAgICAgICAgdmFyIGFmdGVyTGFzdEVkZ2VQb3NpdGlvbiA9IHRoaXMuX2FmdGVy
TGFzdEVkZ2VQb3NpdGlvbigpOworCisgICAgICAgIHZhciBlZGdlID0gbmV3IFdlYkluc3BlY3Rv
ci5OYXRpdmVIZWFwR3JhcGhFZGdlKHRoaXMuX2dyYXBoLCBmaXJzdEVkZ2VQb3NpdGlvbikKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gZmlyc3RFZGdlUG9z
aXRpb247IGkgPCBhZnRlckxhc3RFZGdlUG9zaXRpb247IGkgKz0gZWRnZUZpZWxkQ291bnQpIHsK
KyAgICAgICAgICAgIGVkZ2UuX3Bvc2l0aW9uID0gaTsKKyAgICAgICAgICAgIGlmIChlZGdlLm5h
bWUoKSA9PT0gZWRnZU5hbWUpCisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZWRnZS50YXJn
ZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCiAgICAg
X2ZpcnN0RWRnZVBvaXN0aW9uOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZ3JhcGguX3Jhd0dyYXBoLm5vZGVzW3RoaXMuX3Bvc2l0aW9uICsgdGhpcy5fZ3JhcGguX25v
ZGVGaXJzdEVkZ2VPZmZzZXRdICogdGhpcy5fZ3JhcGguX2VkZ2VGaWVsZENvdW50OworICAgICAg
ICByZXR1cm4gdGhpcy5fZ3JhcGguX25vZGVzW3RoaXMuX3Bvc2l0aW9uICsgdGhpcy5fZ3JhcGgu
X25vZGVGaXJzdEVkZ2VPZmZzZXRdICogdGhpcy5fZ3JhcGguX2VkZ2VGaWVsZENvdW50OwogICAg
IH0sCiAKICAgICBfYWZ0ZXJMYXN0RWRnZVBvc2l0aW9uOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICB2YXIgZWRnZXMgPSB0aGlzLl9ncmFwaC5fcmF3R3JhcGguZWRnZXM7Ci0gICAgICAgIHZh
ciBub2RlcyA9IHRoaXMuX2dyYXBoLl9yYXdHcmFwaC5ub2RlczsKLSAgICAgICAgdmFyIGFmdGVy
TGFzdEVkZ2VQb3NpdGlvbiA9IG5vZGVzW3RoaXMuX3Bvc2l0aW9uICsgdGhpcy5fZ3JhcGguX25v
ZGVGaWVsZENvdW50ICsgdGhpcy5fZ3JhcGguX25vZGVGaXJzdEVkZ2VPZmZzZXRdOwotICAgICAg
ICBpZiAoYWZ0ZXJMYXN0RWRnZVBvc2l0aW9uKQotICAgICAgICAgICAgYWZ0ZXJMYXN0RWRnZVBv
c2l0aW9uICo9IHRoaXMuX2dyYXBoLl9lZGdlRmllbGRDb3VudDsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYWZ0ZXJMYXN0RWRnZVBvc2l0aW9uID0gZWRnZXMubGVuZ3RoOwotICAgICAgICBy
ZXR1cm4gYWZ0ZXJMYXN0RWRnZVBvc2l0aW9uOworICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGgu
X25vZGVzW3RoaXMuX3Bvc2l0aW9uICsgdGhpcy5fZ3JhcGguX25vZGVGaWVsZENvdW50ICsgdGhp
cy5fZ3JhcGguX25vZGVGaXJzdEVkZ2VPZmZzZXRdICogdGhpcy5fZ3JhcGguX2VkZ2VGaWVsZENv
dW50OwogICAgIH0sCiAKICAgICBfZ2V0U3RyaW5nRmllbGQ6IGZ1bmN0aW9uKG9mZnNldCkKICAg
ICB7Ci0gICAgICAgIHZhciB0eXBlSW5kZXggPSB0aGlzLl9ncmFwaC5fcmF3R3JhcGgubm9kZXNb
dGhpcy5fcG9zaXRpb24gKyBvZmZzZXRdOworICAgICAgICB2YXIgdHlwZUluZGV4ID0gdGhpcy5f
Z3JhcGguX25vZGVzW3RoaXMuX3Bvc2l0aW9uICsgb2Zmc2V0XTsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2dyYXBoLl9yYXdHcmFwaC5zdHJpbmdzW3R5cGVJbmRleF07CisgICAgfSwKKworICAgIHRv
U3RyaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIk5vZGUjIiArIHRoaXMu
aWQoKSArICIgIiArIHRoaXMubmFtZSgpICsgIigiICsgdGhpcy5jbGFzc05hbWUoKSArICIpIjsK
ICAgICB9CiB9CiAKQEAgLTM3MiwxNCArNTAzLDE5IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVIZWFw
R3JhcGggPSBmdW5jdGlvbihyYXdHcmFwaCkKICAgICB0aGlzLl9lZGdlVGFyZ2V0T2Zmc2V0ID0g
MTsKICAgICB0aGlzLl9lZGdlTmFtZU9mZnNldCA9IDI7CiAKKyAgICB0aGlzLl9ub2RlQ291bnQg
PSByYXdHcmFwaC5ub2Rlcy5sZW5ndGggLyB0aGlzLl9ub2RlRmllbGRDb3VudDsKKyAgICB0aGlz
Ll9ub2RlcyA9IHJhd0dyYXBoLm5vZGVzOworICAgIHRoaXMuX2VkZ2VzID0gcmF3R3JhcGguZWRn
ZXM7CisgICAgdGhpcy5fc3RyaW5ncyA9IHJhd0dyYXBoLnN0cmluZ3M7CisKICAgICB0aGlzLl9j
YWxjdWxhdGVOb2RlRWRnZUluZGV4ZXMoKTsKIH0KIAogV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBH
cmFwaC5wcm90b3R5cGUgPSB7CiAgICAgcm9vdE5vZGVzOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICB2YXIgbm9kZUhhc0luY29taW5nRWRnZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLl9yYXdH
cmFwaC5ub2Rlcy5sZW5ndGggLyB0aGlzLl9ub2RlRmllbGRDb3VudCk7Ci0gICAgICAgIHZhciBl
ZGdlcyA9IHRoaXMuX3Jhd0dyYXBoLmVkZ2VzOworICAgICAgICB2YXIgbm9kZUhhc0luY29taW5n
RWRnZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLl9ub2RlQ291bnQpOworICAgICAgICB2YXIgZWRn
ZXMgPSB0aGlzLl9lZGdlczsKICAgICAgICAgdmFyIGVkZ2VzTGVuZ3RoID0gZWRnZXMubGVuZ3Ro
OwogICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9lZGdlRmllbGRDb3VudDsKICAg
ICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CkBAIC0zOTgs
NyArNTM0LDcgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaC5wcm90b3R5cGUgPSB7CiAK
ICAgICBfY2FsY3VsYXRlTm9kZUVkZ2VJbmRleGVzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB2YXIgbm9kZXMgPSB0aGlzLl9yYXdHcmFwaC5ub2RlczsKKyAgICAgICAgdmFyIG5vZGVzID0g
dGhpcy5fbm9kZXM7CiAgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVs
ZENvdW50OwogICAgICAgICB2YXIgbm9kZUxlbmd0aCA9IG5vZGVzLmxlbmd0aDsKICAgICAgICAg
dmFyIGZpcnN0RWRnZUluZGV4ID0gMDsKQEAgLTQwNyw2ICs1NDMsMTUgQEAgV2ViSW5zcGVjdG9y
Lk5hdGl2ZUhlYXBHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBub2Rlc1tpXSA9IGZp
cnN0RWRnZUluZGV4OwogICAgICAgICAgICAgZmlyc3RFZGdlSW5kZXggKz0gY291bnQ7CiAgICAg
ICAgIH0KKyAgICAgICAgdGhpcy5fYWRkRHVtbXlOb2RlKCk7CisgICAgfSwKKworICAgIF9hZGRE
dW1teU5vZGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBmaXJzdEVkZ2VQb3NpdGlv
biA9IHRoaXMuX25vZGVzLmxlbmd0aCArIHRoaXMuX25vZGVGaXJzdEVkZ2VPZmZzZXQ7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbm9kZUZpZWxkQ291bnQ7IGkrKykKKyAgICAg
ICAgICAgIHRoaXMuX25vZGVzLnB1c2goMCk7CisgICAgICAgIHRoaXMuX25vZGVzW2ZpcnN0RWRn
ZVBvc2l0aW9uXSA9IHRoaXMuX2VkZ2VzLmxlbmd0aDsKICAgICB9CiB9CiAKQEAgLTU0NSw3ICs2
OTAsNyBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByb2ZpbGVI
ZWFkZXIuX21lbW9yeUJsb2NrID0gbWVtb3J5QmxvY2s7Ci0gICAgICAgICAgICBwcm9maWxlSGVh
ZGVyLl9ncmFwaCA9IGdyYXBoOworICAgICAgICAgICAgcHJvZmlsZUhlYWRlci5fZ3JhcGggPSBu
ZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBHcmFwaChncmFwaCk7CiAgICAgICAgICAgICBwcm9m
aWxlSGVhZGVyLmlzVGVtcG9yYXJ5ID0gZmFsc2U7CiAgICAgICAgICAgICBwcm9maWxlSGVhZGVy
LnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoLyoqIEB0eXBl
e251bWJlcn0gKi8obWVtb3J5QmxvY2suc2l6ZSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA2NGQzMDIwMGVhNzA2N2E1YjRm
M2RjNGNkYWRhOTZkMjBmOGJiMzIwLi4xMWFhM2VlYTkzODgxMTE0MDEzZWE3NjUxMGFhMDhiZGJi
NTMzY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8
d3RmL01lbW9yeU9iamVjdEluZm8uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00ODIsOCArNDgzLDkgQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVzb3VyY2VJ
bWFnZSk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+c2V0Q2xhc3NOYW1lKCJDYWNoZWRJbWFnZSIp
OwogICAgIENhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZv
KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2ltYWdlKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2lt
YWdlLCAibV9pbWFnZSIpOwogI2lmIEVOQUJMRShTVkcpCiAgICAgaW5mby5hZGRNZW1iZXIobV9z
dmdJbWFnZUNhY2hlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNTI4MjBhMjBlM2JjM2Y2MGJmY2Y3ZTk2NmI0ZmZkY2Q5
ZGY1ZDViNS4uZGQ5MTI3YjdjYmVjM2JiM2YyZTc1N2U0NjljZWVhNThlMDg5NTRiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01MSw2
ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlPYmplY3RJbmZv
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC04ODgs
NiArODg5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2VDYWxsYmFjazo6
dGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUNhbGwKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
V2ViQ29yZU1lbW9yeVR5cGVzOjpDYWNoZWRSZXNvdXJjZSk7CisgICAgbWVtb3J5T2JqZWN0SW5m
by0+c2V0TmFtZSh1cmwoKS5zdHJpbmcoKSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZXNvdXJj
ZVJlcXVlc3QpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY2xpZW50cyk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9hY2NlcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAKaW5kZXggYWUzYzAzNzVlMjBlZWRhOWUzZjk1MGRkODdlNWYxZDQ0ZTIzNWViNy4uZjhm
ZGYxODQ5MWY0N2ZmNTY5NTI1OWUxZDg4ZTk1MjQ2NjY0ODdkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlv
bkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL01lbW9yeU9iamVjdEluZm8uaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9y
YXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC03MjMsNiAr
NzI0LDcgQEAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6OmdldFN0YXRpc3Rp
Y3MoKQogdm9pZCBNZW1vcnlDYWNoZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6Ok1lbW9yeUNhY2hlU3Ry
dWN0dXJlcyk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+c2V0Q2xhc3NOYW1lKCJNZW1vcnlDYWNo
ZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2VzKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX2FsbFJlc291cmNlcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9saXZlRGVjb2RlZFJlc291
cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKaW5kZXggZGVmMDcyZWUwZDdiZjJlZmE2NmI2ODhiY2Y2YWIxYWU5ODMwZGViNy4uYmNj
YjIwMDM4M2ZhZTY3ZWQ0MWI0NmM1ZGYzZDJjNzIxNWU1YjY0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlPYmplY3RJbmZvLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01NzYsMjEgKzU3NywyMyBAQCBDb2xvciBCaXRtYXBJ
bWFnZTo6c29saWRDb2xvcigpIGNvbnN0CiB2b2lkIEJpdG1hcEltYWdlOjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFBsYXRmb3JtTWVtb3J5
VHlwZXM6OkltYWdlKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5zZXRDbGFzc05hbWUoIkJpdG1h
cEltYWdlIik7CiAgICAgSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8p
OwotICAgIGluZm8uYWRkTWVtYmVyKG1fc291cmNlKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Nv
dXJjZSwgIm1fc291cmNlIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9mcmFtZVRpbWVyKTsKLSAg
ICBpbmZvLmFkZE1lbWJlcihtX2ZyYW1lcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9mcmFtZXMs
ICJtX2ZyYW1lcyIpOwogfQogCiB2b2lkIEZyYW1lRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBQbGF0Zm9ybU1lbW9yeVR5cGVzOjpJ
bWFnZSk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+c2V0Q2xhc3NOYW1lKCJGcmFtZURhdGEiKTsK
ICNpZiBPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKQogICAgIGluZm8uYWRkUmF3QnVmZmVyKG1f
ZnJhbWUuZ2V0KCksIG1fZnJhbWVCeXRlcyk7CiAjZWxpZiBVU0UoU0tJQSkKLSAgICBpbmZvLmFk
ZE1lbWJlcihtX2ZyYW1lKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ZyYW1lLCAibV9mcmFtZSIp
OwogI2Vsc2UKLSAgICBpbmZvLmFkZFJhd0J1ZmZlcihtX2ZyYW1lLCBtX2ZyYW1lQnl0ZXMpOwor
ICAgIGluZm8uYWRkUmF3QnVmZmVyKG1fZnJhbWUsIG1fZnJhbWVCeXRlcywgIm1fZnJhbWUiKTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
aW5kZXggODljYmI1NGMyYzZjZjgxZmQwNmM0MDdkMWRhNTVlNzIyMjE2NDJjYy4uYWUxNzJmMjlm
OTUzYWY3NmY4ZGNmM2ZhNDhlOWVhNjUzYzQwYjY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlPYmplY3RJbmZvLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiAjaWYgVVNFKENHKQpAQCAtMjAxLDcgKzIwMiw4IEBAIHZvaWQgSW1hZ2U6
OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0
aCYgaW50cmluc2ljCiB2b2lkIEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFBsYXRmb3JtTWVtb3J5VHlwZXM6OkltYWdlKTsKLSAg
ICBpbmZvLmFkZE1lbWJlcihtX2RhdGEpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnNldENsYXNz
TmFtZSgiSW1hZ2UiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RhdGEsICJtX2RhdGEiKTsKICAg
ICBpbmZvLmFkZFdlYWtQb2ludGVyKG1faW1hZ2VPYnNlcnZlcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL01lbW9y
eUluc3RydW1lbnRhdGlvblNraWEuY3BwCmluZGV4IDA3OTNjMzU2OWQxYWI1YTUxY2Q0N2I0Yjll
ZDg4NTQ5ZTA2M2U3OTIuLjk4ODJmM2FlZTQ0MTdkMmMzZmZhY2I0NTZhY2RlZWIwNjM2MDcxMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9NZW1vcnlJbnN0cnVtZW50YXRpb25Ta2lhLmNwcApAQCAtMzYsMTQgKzM2LDE3
IEBACiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgogI2luY2x1
ZGUgIlNrUGl4ZWxSZWYuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5T2JqZWN0SW5mby5oPgogCiB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFNrQml0bWFwKiBjb25zdCYgaW1hZ2UsIFdURjo6
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKIHsKICAgICBXVEY6Ok1lbW9yeUNs
YXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIGltYWdlKTsKKyAgICBtZW1vcnlPYmplY3RJ
bmZvLT5zZXRDbGFzc05hbWUoIlNrQml0bWFwIik7CisKICAgICBTa1BpeGVsUmVmKiBwaXhlbFJl
ZiA9IGltYWdlLT5waXhlbFJlZigpOwogICAgIGluZm8uYWRkTWVtYmVyKHBpeGVsUmVmKTsKICAg
ICBpZiAocGl4ZWxSZWYpCi0gICAgICAgIGluZm8uYWRkUmF3QnVmZmVyKHBpeGVsUmVmLT5waXhl
bHMoKSwgaW1hZ2UtPmdldFNpemUoKSk7CisgICAgICAgIGluZm8uYWRkUmF3QnVmZmVyKHBpeGVs
UmVmLT5waXhlbHMoKSwgaW1hZ2UtPmdldFNpemUoKSwgMCwgInBpeGVscyIpOwogfQogCiB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFNrRGV2aWNlKiBjb25zdCYgZGV2aWNlLCBXVEY6Ok1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>