<?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>97214</bug_id>
          
          <creation_ts>2012-09-20 07:51:56 -0700</creation_ts>
          <short_desc>[Qt] Abstract as much devicePixelRatio logic as possible behind PageViewportController</short_desc>
          <delta_ts>2012-09-25 08:05:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>724518</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-20 07:51:56 -0700</bug_when>
    <thetext>[Qt] Abstract as much devicePixelRatio logic as possible behind PageViewportController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724520</commentid>
    <comment_count>1</comment_count>
      <attachid>164918</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-20 07:59:05 -0700</bug_when>
    <thetext>Created attachment 164918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724559</commentid>
    <comment_count>2</comment_count>
      <attachid>164918</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-09-20 09:16:07 -0700</bug_when>
    <thetext>Comment on attachment 164918
Patch

Nice improvement, LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725195</commentid>
    <comment_count>3</comment_count>
      <attachid>164918</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-20 23:38:39 -0700</bug_when>
    <thetext>Comment on attachment 164918
Patch

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

&gt; Source/WebKit2/ChangeLog:21
&gt; +        Other related changes:
&gt; +        - Make sure that the controller and it&apos;s client are only exchanging effective scales
&gt; +        (cssScale * devicePixelRatio)
&gt; +        - Remove members duplicating m_rawAttributes values
&gt; +        - Use a separate member for the minimum scale to fit the page, separate from the viewport arguments
&gt; +        - Make sure that the minimum scale to fit is adjusted if the contents size isn&apos;t
&gt; +          updated after the viewport attributes changed
&gt; +        - Make the scale conversion functions private to discourage this logic from spreading in the client
&gt; +

nice!

&gt; Source/WebKit2/UIProcess/PageViewportController.h:87
&gt; +    float devicePixelRatio() const { return m_rawAttributes.devicePixelRatio; }

FYI devicePixelRatio should be removed from ViewportAttributes and gotten from elsewhere, it just havent been done yet

&gt; Source/WebKit2/UIProcess/PageViewportController.h:115
&gt; +    float m_minimumScaleToFit;

so this is viewort scale? m_minimumViewportScaleToFit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725362</commentid>
    <comment_count>4</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-21 03:11:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.h:87
&gt; &gt; +    float devicePixelRatio() const { return m_rawAttributes.devicePixelRatio; }
&gt; 
&gt; FYI devicePixelRatio should be removed from ViewportAttributes and gotten from elsewhere, it just havent been done yet
Ok I&apos;ll have PageViewportController::devicePixelRatio fetch m_webPageProxy-&gt;pageScaleFactor() instead then.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.h:115
&gt; &gt; +    float m_minimumScaleToFit;
&gt; 
&gt; so this is viewort scale? m_minimumViewportScaleToFit?
No this is the same as m_rawAttributes, &quot;css/document&quot; scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727602</commentid>
    <comment_count>5</comment_count>
      <attachid>165606</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-25 07:05:21 -0700</bug_when>
    <thetext>Created attachment 165606
Patch

Patch to commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727649</commentid>
    <comment_count>6</comment_count>
      <attachid>165606</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 08:05:40 -0700</bug_when>
    <thetext>Comment on attachment 165606
Patch

Clearing flags on attachment: 165606

Committed r129508: &lt;http://trac.webkit.org/changeset/129508&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727650</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 08:05:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164918</attachid>
            <date>2012-09-20 07:59:05 -0700</date>
            <delta_ts>2012-09-25 07:05:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97214-20120920165830.patch</filename>
            <type>text/plain</type>
            <size>23127</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjc4NGU2MDAzMzM1MWMz
NTcwZjkxYWNmNmQ2NzQxZTE4N2U0MTgwNC4uYTcwM2EyYzY1MzQyNWZmNWZiZDgzNGFjYzQ0ZWQ3
OWU4MGUzNmFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEyLTA5LTIwICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKKyAgICAgICAgW1F0
XSBBYnN0cmFjdCBhcyBtdWNoIGRldmljZVBpeGVsUmF0aW8gbG9naWMgYXMgcG9zc2libGUgYmVo
aW5kIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBjbGllbnQgaXMgcmVxdWlyZWQgdG8gbXVs
dGlwbHkgdGhlIHNjYWxlcyBpdCByZWNlaXZlcyBlYWNoIGJpbWUgYnkgdGhlCisgICAgICAgIGRl
dmljZVBpeGVsUmF0aW8uIFRoaXMgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHNpbmNlIGVzc2VudGlh
bGx5LCB0aGUgb25seSBwbGFjZXMgdGhhdCB0aGUKKyAgICAgICAgZGV2aWNlUGl4ZWxSYXRpbyBz
aG91bGQgYmUgaW4gdXNlLCBpcyB0byBhZGp1c3QgdGhlIGxheW91dCBzaXplLCBtdWx0aXBseSB0
aGUgYmFzZSBzY2FsZQorICAgICAgICBhbmQgZm9yIHNjYWxlIGNvbnN0YW50cy4KKworICAgICAg
ICBPdGhlciByZWxhdGVkIGNoYW5nZXM6CisgICAgICAgIC0gTWFrZSBzdXJlIHRoYXQgdGhlIGNv
bnRyb2xsZXIgYW5kIGl0J3MgY2xpZW50IGFyZSBvbmx5IGV4Y2hhbmdpbmcgZWZmZWN0aXZlIHNj
YWxlcworICAgICAgICAoY3NzU2NhbGUgKiBkZXZpY2VQaXhlbFJhdGlvKQorICAgICAgICAtIFJl
bW92ZSBtZW1iZXJzIGR1cGxpY2F0aW5nIG1fcmF3QXR0cmlidXRlcyB2YWx1ZXMKKyAgICAgICAg
LSBVc2UgYSBzZXBhcmF0ZSBtZW1iZXIgZm9yIHRoZSBtaW5pbXVtIHNjYWxlIHRvIGZpdCB0aGUg
cGFnZSwgc2VwYXJhdGUgZnJvbSB0aGUgdmlld3BvcnQgYXJndW1lbnRzCisgICAgICAgIC0gTWFr
ZSBzdXJlIHRoYXQgdGhlIG1pbmltdW0gc2NhbGUgdG8gZml0IGlzIGFkanVzdGVkIGlmIHRoZSBj
b250ZW50cyBzaXplIGlzbid0CisgICAgICAgICAgdXBkYXRlZCBhZnRlciB0aGUgdmlld3BvcnQg
YXR0cmlidXRlcyBjaGFuZ2VkCisgICAgICAgIC0gTWFrZSB0aGUgc2NhbGUgY29udmVyc2lvbiBm
dW5jdGlvbnMgcHJpdmF0ZSB0byBkaXNjb3VyYWdlIHRoaXMgbG9naWMgZnJvbSBzcHJlYWRpbmcg
aW4gdGhlIGNsaWVudAorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpQYWdlVmll
d3BvcnRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6aW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXI6Om91dGVyQm91bmRlZFZpZXdwb3J0U2NhbGUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3cG9ydEF0
dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpyZXN1
bWVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dXBk
YXRlTWluaW11bVNjYWxlVG9GaXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRldmlj
ZVBpeGVsUmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpt
aW5pbXVtQ29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXI6Om1heGltdW1Db250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlcjo6Y3VycmVudENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjpmcm9tVmlld3BvcnRTY2FsZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnRvVmlld3BvcnRTY2FsZSk6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6Zm9jdXNFZGl0YWJsZUFy
ZWEpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6Onpv
b21Ub0FyZWFHZXN0dXJlRW5kZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50UXQ6Om5lYXJlc3RWYWxpZFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNldENvbnRlbnRzUmVj
dFRvTmVhcmVzdFZhbGlkQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKToKKworMjAxMi0wOS0y
MCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgorCiAgICAg
ICAgIFtRdF0gRG9uJ3QgcmVuZGVyIGF0IHNjYWxlIDEuMCB3aGVuIGRvaW5nIGEgcGluY2ggdW56
b29tCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzIx
MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJv
bGxlci5jcHAKaW5kZXggZTlhNTEzYWYxNGQxOGZkNDM2ZTNiM2ZiZmI2NzEwYjI0ZjdkN2E3Ny4u
NjVjNjVhYTI5ZTc0ZDVlNGJjOTE0MTk2MjMzZmJkM2U5YjQwYTg0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcApAQCAtNzMs
OSArNzMsNyBAQCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpQYWdlVmlld3BvcnRDb250cm9sbGVy
KFdlYktpdDo6V2ViUGFnZVByb3h5KiBwcm94eSwgUGFnZQogICAgIDogbV93ZWJQYWdlUHJveHko
cHJveHkpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2FsbG93c1VzZXJTY2FsaW5n
KGZhbHNlKQotICAgICwgbV9taW5pbXVtU2NhbGUoMSkKLSAgICAsIG1fbWF4aW11bVNjYWxlKDEp
Ci0gICAgLCBtX2RldmljZVBpeGVsUmF0aW8oMSkKKyAgICAsIG1fbWluaW11bVNjYWxlVG9GaXQo
MSkKICAgICAsIG1fYWN0aXZlRGVmZXJyZXJDb3VudCgwKQogICAgICwgbV9oYXNTdXNwZW5kZWRD
b250ZW50KGZhbHNlKQogICAgICwgbV9oYWRVc2VySW50ZXJhY3Rpb24oZmFsc2UpCkBAIC04Mywz
OSArODEsMzAgQEAgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlBhZ2VQcm94eSogcHJveHksIFBhZ2UKIHsKICAgICAvLyBJbml0aWFsaXpp
bmcgVmlld3BvcnQgUmF3IEF0dHJpYnV0ZXMgdG8gYXZvaWQgcmFuZG9tIG5lZ2F0aXZlIHNjYWxl
IGZhY3RvcnMKICAgICAvLyBpZiB0aGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdGhl
IGZpcnN0IGxheW91dCBhbmQgc2V0dGluZyB0aGUgdmlld3BvcnQgYXR0cmlidXRlcyBmb3IgdGhl
IGZpcnN0IHRpbWUuCisgICAgbV9yYXdBdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSAxOwog
ICAgIG1fcmF3QXR0cmlidXRlcy5pbml0aWFsU2NhbGUgPSAxOwotICAgIG1fcmF3QXR0cmlidXRl
cy5taW5pbXVtU2NhbGUgPSBtX21pbmltdW1TY2FsZTsKLSAgICBtX3Jhd0F0dHJpYnV0ZXMubWF4
aW11bVNjYWxlID0gbV9tYXhpbXVtU2NhbGU7CisgICAgbV9yYXdBdHRyaWJ1dGVzLm1pbmltdW1T
Y2FsZSA9IDE7CisgICAgbV9yYXdBdHRyaWJ1dGVzLm1heGltdW1TY2FsZSA9IDE7CiAgICAgbV9y
YXdBdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZSA9IG1fYWxsb3dzVXNlclNjYWxpbmc7CiAKICAgICBB
U1NFUlQobV9jbGllbnQpOwogICAgIG1fY2xpZW50LT5zZXRDb250cm9sbGVyKHRoaXMpOwogfQog
Ci1GbG9hdFJlY3QgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Y29udmVydFRvVmlld3BvcnQoY29u
c3QgRmxvYXRSZWN0JiBjc3NSZWN0KSBjb25zdAorZmxvYXQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6aW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZShmbG9hdCB2aWV3cG9ydFNjYWxlKSBjb25zdAog
ewotICAgIHJldHVybiBGbG9hdFJlY3QoCi0gICAgICAgIGNvbnZlcnRUb1ZpZXdwb3J0KGNzc1Jl
Y3QueCgpKSwKLSAgICAgICAgY29udmVydFRvVmlld3BvcnQoY3NzUmVjdC55KCkpLAotICAgICAg
ICBjb252ZXJ0VG9WaWV3cG9ydChjc3NSZWN0LndpZHRoKCkpLAotICAgICAgICBjb252ZXJ0VG9W
aWV3cG9ydChjc3NSZWN0LmhlaWdodCgpKQotICAgICk7CisgICAgcmV0dXJuIGJvdW5kKHRvVmll
d3BvcnRTY2FsZShtX21pbmltdW1TY2FsZVRvRml0KSwgdmlld3BvcnRTY2FsZSwgdG9WaWV3cG9y
dFNjYWxlKG1fcmF3QXR0cmlidXRlcy5tYXhpbXVtU2NhbGUpKTsKIH0KIAotZmxvYXQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlcjo6aW5uZXJCb3VuZGVkQ29udGVudHNTY2FsZShmbG9hdCBjc3NTY2Fs
ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gYm91bmQobV9taW5pbXVtU2NhbGUsIGNzc1NjYWxlLCBt
X21heGltdW1TY2FsZSk7Ci19Ci0KLWZsb2F0IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6Om91dGVy
Qm91bmRlZENvbnRlbnRzU2NhbGUoZmxvYXQgY3NzU2NhbGUpIGNvbnN0CitmbG9hdCBQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpvdXRlckJvdW5kZWRWaWV3cG9ydFNjYWxlKGZsb2F0IHZpZXdwb3J0
U2NhbGUpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWxsb3dzVXNlclNjYWxpbmcpIHsKICAgICAgICAg
Ly8gQm91bmRlZCBieSBbMC4xLCAxMC4wXSBsaWtlIHRoZSB2aWV3cG9ydCBtZXRhIGNvZGUgaW4g
V2ViQ29yZS4KLSAgICAgICAgZmxvYXQgaGFyZE1pbiA9IHN0ZDo6bWF4PGZsb2F0PigwLjEsIDAu
NSAqIG1fbWluaW11bVNjYWxlKTsKLSAgICAgICAgZmxvYXQgaGFyZE1heCA9IHN0ZDo6bWluPGZs
b2F0PigxMCwgMiAqIG1fbWF4aW11bVNjYWxlKTsKLSAgICAgICAgcmV0dXJuIGJvdW5kKGhhcmRN
aW4sIGNzc1NjYWxlLCBoYXJkTWF4KTsKKyAgICAgICAgZmxvYXQgaGFyZE1pbiA9IHRvVmlld3Bv
cnRTY2FsZShzdGQ6Om1heDxmbG9hdD4oMC4xLCAwLjUgKiBtX21pbmltdW1TY2FsZVRvRml0KSk7
CisgICAgICAgIGZsb2F0IGhhcmRNYXggPSB0b1ZpZXdwb3J0U2NhbGUoc3RkOjptaW48ZmxvYXQ+
KDEwLCAyICogbV9yYXdBdHRyaWJ1dGVzLm1heGltdW1TY2FsZSkpOworICAgICAgICByZXR1cm4g
Ym91bmQoaGFyZE1pbiwgdmlld3BvcnRTY2FsZSwgaGFyZE1heCk7CiAgICAgfQotICAgIHJldHVy
biBpbm5lckJvdW5kZWRDb250ZW50c1NjYWxlKGNzc1NjYWxlKTsKKyAgICByZXR1cm4gaW5uZXJC
b3VuZGVkVmlld3BvcnRTY2FsZSh2aWV3cG9ydFNjYWxlKTsKIH0KIAogdm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6
ZSkKQEAgLTEyNCwxNyArMTEzLDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRD
aGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9jb250ZW50c1NpemUgPSBuZXdTaXplOwotCi0gICAgZmxvYXQgbWluaW11bVNj
YWxlID0gV2ViQ29yZTo6Y29tcHV0ZU1pbmltdW1TY2FsZUZhY3RvckZvckNvbnRlbnRDb250YWlu
ZWQobV9yYXdBdHRyaWJ1dGVzLCBXZWJDb3JlOjpyb3VuZGVkSW50U2l6ZShtX3ZpZXdwb3J0U2l6
ZSksIG5ld1NpemUpOwotCi0gICAgaWYgKCFmdXp6eUNvbXBhcmUobWluaW11bVNjYWxlLCBtX3Jh
d0F0dHJpYnV0ZXMubWluaW11bVNjYWxlLCAwLjAwMSkpIHsKLSAgICAgICAgbV9taW5pbXVtU2Nh
bGUgPSBtaW5pbXVtU2NhbGU7Ci0KLSAgICAgICAgaWYgKCFtX2hhZFVzZXJJbnRlcmFjdGlvbiAm
JiAhaGFzU3VzcGVuZGVkQ29udGVudCgpKQotICAgICAgICAgICAgbV9jbGllbnQtPnNldENvbnRl
bnRzU2NhbGUoY29udmVydFRvVmlld3BvcnQobWluaW11bVNjYWxlKSwgdHJ1ZSAvKiBpc0luaXRp
YWxTY2FsZSAqLyk7Ci0KLSAgICAgICAgbV9jbGllbnQtPmRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlcygpOwotICAgIH0KKyAgICB1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdCgpOwogCiAgICAgbV9j
bGllbnQtPmRpZENoYW5nZUNvbnRlbnRzU2l6ZSgpOwogfQpAQCAtMTkzLDEwICsxNzIsOCBAQCB2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydAogICAgIG1fcmF3QXR0cmlidXRlcyA9IG5ld0F0dHJpYnV0
ZXM7CiAgICAgV2ViQ29yZTo6cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RV
c2VyU2NhbGFibGUobV9yYXdBdHRyaWJ1dGVzKTsKIAotICAgIG1fZGV2aWNlUGl4ZWxSYXRpbyA9
IG1fd2ViUGFnZVByb3h5LT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIG1fYWxsb3dzVXNlclNj
YWxpbmcgPSAhIW1fcmF3QXR0cmlidXRlcy51c2VyU2NhbGFibGU7Ci0gICAgbV9taW5pbXVtU2Nh
bGUgPSBtX3Jhd0F0dHJpYnV0ZXMubWluaW11bVNjYWxlOwotICAgIG1fbWF4aW11bVNjYWxlID0g
bV9yYXdBdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKKyAgICB1cGRhdGVNaW5pbXVtU2NhbGVUb0Zp
dCgpOwogCiAgICAgbV9jbGllbnQtPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcygpOwogfQpA
QCAtMjE0LDcgKzE5MSw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cmVzdW1lQ29u
dGVudCgpCiB7CiAgICAgaWYgKCFtX3Jhd0F0dHJpYnV0ZXMubGF5b3V0U2l6ZS5pc0VtcHR5KCkg
JiYgbV9yYXdBdHRyaWJ1dGVzLmluaXRpYWxTY2FsZSA+IDApIHsKICAgICAgICAgbV9oYWRVc2Vy
SW50ZXJhY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgbV9jbGllbnQtPnNldENvbnRlbnRzU2NhbGUo
Y29udmVydFRvVmlld3BvcnQoaW5uZXJCb3VuZGVkQ29udGVudHNTY2FsZShtX3Jhd0F0dHJpYnV0
ZXMuaW5pdGlhbFNjYWxlKSksIC8qIGlzSW5pdGlhbFNjYWxlICovIHRydWUpOworICAgICAgICBt
X2NsaWVudC0+c2V0Q29udGVudHNTY2FsZShpbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKHRvVmll
d3BvcnRTY2FsZShtX3Jhd0F0dHJpYnV0ZXMuaW5pdGlhbFNjYWxlKSksIC8qIGlzSW5pdGlhbFNj
YWxlICovIHRydWUpOwogICAgICAgICBtX3Jhd0F0dHJpYnV0ZXMuaW5pdGlhbFNjYWxlID0gLTE7
IC8vIE1hcmsgdXNlZC4KICAgICB9CiAKQEAgLTIyNyw2ICsyMDQsMjAgQEAgdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpyZXN1bWVDb250ZW50KCkKICAgICBtX3dlYlBhZ2VQcm94eS0+cmVz
dW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyOjp1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdCgpCit7CisgICAgZmxvYXQgbWlu
aW11bVNjYWxlID0gV2ViQ29yZTo6Y29tcHV0ZU1pbmltdW1TY2FsZUZhY3RvckZvckNvbnRlbnRD
b250YWluZWQobV9yYXdBdHRyaWJ1dGVzLCBXZWJDb3JlOjpyb3VuZGVkSW50U2l6ZShtX3ZpZXdw
b3J0U2l6ZSksIFdlYkNvcmU6OnJvdW5kZWRJbnRTaXplKG1fY29udGVudHNTaXplKSk7CisKKyAg
ICBpZiAoIWZ1enp5Q29tcGFyZShtaW5pbXVtU2NhbGUsIG1fbWluaW11bVNjYWxlVG9GaXQsIDAu
MDAxKSkgeworICAgICAgICBtX21pbmltdW1TY2FsZVRvRml0ID0gbWluaW11bVNjYWxlOworCisg
ICAgICAgIGlmICghbV9oYWRVc2VySW50ZXJhY3Rpb24gJiYgIWhhc1N1c3BlbmRlZENvbnRlbnQo
KSkKKyAgICAgICAgICAgIG1fY2xpZW50LT5zZXRDb250ZW50c1NjYWxlKHRvVmlld3BvcnRTY2Fs
ZShtaW5pbXVtU2NhbGUpLCB0cnVlIC8qIGlzSW5pdGlhbFNjYWxlICovKTsKKworICAgICAgICBt
X2NsaWVudC0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCk7CisgICAgfQorfQorCiBGbG9h
dFJlY3QgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cG9zaXRpb25SYW5nZUZvckNvbnRlbnRBdFNj
YWxlKGZsb2F0IHZpZXdwb3J0U2NhbGUpIGNvbnN0CiB7CiAgICAgY29uc3QgRmxvYXRTaXplIGNv
bnRlbnRTaXplID0gbV9jb250ZW50c1NpemUgKiB2aWV3cG9ydFNjYWxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKaW5kZXggMTgyMGQ4
ZDY5OWJkNGVhYjUyNzJhYTJjNjlkNDBhYjQ4MjhlMTQ0NC4uYWYxMjQwNDE5NzQxMTViMWEyM2M0
NTU3NTYwM2IyZmFmMDZiODAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCkBAIC03NiwyMiArNzYsMTggQEAgcHVibGljOgogCiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IHBvc2l0aW9uUmFuZ2VGb3JDb250ZW50QXRTY2FsZShmbG9h
dCB2aWV3cG9ydFNjYWxlKSBjb25zdDsKIAotICAgIGZsb2F0IGNvbnZlcnRGcm9tVmlld3BvcnQo
ZmxvYXQgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIHZhbHVlIC8gbV9kZXZpY2VQaXhlbFJhdGlvOyB9
Ci0gICAgZmxvYXQgY29udmVydFRvVmlld3BvcnQoZmxvYXQgdmFsdWUpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlICogbV9kZXZpY2VQaXhlbFJhdGlvOyB9Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNv
bnZlcnRUb1ZpZXdwb3J0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGNvbnN0OwotCi0gICAg
ZmxvYXQgaW5uZXJCb3VuZGVkQ29udGVudHNTY2FsZShmbG9hdCkgY29uc3Q7Ci0gICAgZmxvYXQg
b3V0ZXJCb3VuZGVkQ29udGVudHNTY2FsZShmbG9hdCkgY29uc3Q7CisgICAgZmxvYXQgaW5uZXJC
b3VuZGVkVmlld3BvcnRTY2FsZShmbG9hdCkgY29uc3Q7CisgICAgZmxvYXQgb3V0ZXJCb3VuZGVk
Vmlld3BvcnRTY2FsZShmbG9hdCkgY29uc3Q7CiAKICAgICBib29sIGhhc1N1c3BlbmRlZENvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1N1c3BlbmRlZENvbnRlbnQ7IH0KICAgICBib29sIGhh
ZFVzZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFkVXNlckludGVyYWN0aW9uOyB9
CiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVXNl
clNjYWxpbmc7IH0KIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb250ZW50c0xheW91dFNpemUo
KSBjb25zdCB7IHJldHVybiBtX3Jhd0F0dHJpYnV0ZXMubGF5b3V0U2l6ZTsgfQotICAgIGZsb2F0
IGRldmljZVBpeGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2RldmljZVBpeGVsUmF0aW87IH0K
LSAgICBmbG9hdCBtaW5pbXVtQ29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11
bVNjYWxlOyB9Ci0gICAgZmxvYXQgbWF4aW11bUNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVy
biBtX21heGltdW1TY2FsZTsgfQotICAgIGZsb2F0IGN1cnJlbnRDb250ZW50c1NjYWxlKCkgY29u
c3QgeyByZXR1cm4gY29udmVydEZyb21WaWV3cG9ydChtX2VmZmVjdGl2ZVNjYWxlKTsgfQorICAg
IGZsb2F0IGRldmljZVBpeGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3Jhd0F0dHJpYnV0ZXMu
ZGV2aWNlUGl4ZWxSYXRpbzsgfQorICAgIGZsb2F0IG1pbmltdW1Db250ZW50c1NjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV9taW5pbXVtU2NhbGVUb0ZpdDsgfQorICAgIGZsb2F0IG1heGltdW1Db250
ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9yYXdBdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsg
fQorICAgIGZsb2F0IGN1cnJlbnRDb250ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gZnJvbVZp
ZXdwb3J0U2NhbGUobV9lZmZlY3RpdmVTY2FsZSk7IH0KIAogICAgIHZvaWQgc2V0SGFkVXNlcklu
dGVyYWN0aW9uKGJvb2wgZGlkVXNlckludGVyYWN0KSB7IG1faGFkVXNlckludGVyYWN0aW9uID0g
ZGlkVXNlckludGVyYWN0OyB9CiAKQEAgLTEwNSw3ICsxMDEsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNzc1Bvc2l0
aW9uKTsKIAogcHJpdmF0ZToKKyAgICBmbG9hdCBmcm9tVmlld3BvcnRTY2FsZShmbG9hdCBzY2Fs
ZSkgY29uc3QgeyByZXR1cm4gc2NhbGUgLyBtX3Jhd0F0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRp
bzsgfQorICAgIGZsb2F0IHRvVmlld3BvcnRTY2FsZShmbG9hdCBzY2FsZSkgY29uc3QgeyByZXR1
cm4gc2NhbGUgKiBtX3Jhd0F0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsgfQogICAgIHZvaWQg
c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50ICZ0cmFqZWN0b3J5
VmVjdG9yID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpKTsKKyAgICB2b2lkIHVwZGF0ZU1p
bmltdW1TY2FsZVRvRml0KCk7CiAKICAgICBXZWJQYWdlUHJveHkqIGNvbnN0IG1fd2ViUGFnZVBy
b3h5OwogICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwpAQCAtMTEz
LDkgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIG1f
cmF3QXR0cmlidXRlczsKIAogICAgIGJvb2wgbV9hbGxvd3NVc2VyU2NhbGluZzsKLSAgICBmbG9h
dCBtX21pbmltdW1TY2FsZTsKLSAgICBmbG9hdCBtX21heGltdW1TY2FsZTsKLSAgICBmbG9hdCBt
X2RldmljZVBpeGVsUmF0aW87CisgICAgZmxvYXQgbV9taW5pbXVtU2NhbGVUb0ZpdDsKIAogICAg
IGludCBtX2FjdGl2ZURlZmVycmVyQ291bnQ7CiAgICAgYm9vbCBtX2hhc1N1c3BlbmRlZENvbnRl
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCmluZGV4IGM5MzUwOGI1NThmZWVjYjc3Y2Qw
NDllMTYxMmJmZjdjYTFiNTIzMzAuLmY1M2Y2MTBjN2E5MzkzZTgxZTQ2OTIwZGFjOWUzZTNhMGJk
NDczNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCkBAIC0xODUsMzQgKzE4NSwzMyBA
QCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6Zm9jdXNFZGl0YWJsZUFyZWEo
Y29uc3QgUVJlY3RGJiBjYXJldEFyZWEsCiAgICAgLy8gVGhpcyBjYW4gb25seSBoYXBwZW4gYXMg
YSByZXN1bHQgb2YgYSB1c2VyIGludGVyYWN0aW9uLgogICAgIEFTU0VSVChtX2NvbnRyb2xsZXIt
PmhhZFVzZXJJbnRlcmFjdGlvbigpKTsKIAotICAgIFFSZWN0RiBlbmRBcmVhID0gbV9jb250cm9s
bGVyLT5jb252ZXJ0VG9WaWV3cG9ydCh0YXJnZXRBcmVhKTsKLQotICAgIHFyZWFsIGVuZEl0ZW1T
Y2FsZSA9IG1fY29udHJvbGxlci0+Y29udmVydFRvVmlld3BvcnQobV9jb250cm9sbGVyLT5pbm5l
ckJvdW5kZWRDb250ZW50c1NjYWxlKDIuMCkpOworICAgIGNvbnN0IGZsb2F0IGVkaXRpbmdGaXhl
ZFNjYWxlID0gMiAqIG1fY29udHJvbGxlci0+ZGV2aWNlUGl4ZWxSYXRpbygpOworICAgIGZsb2F0
IHRhcmdldFNjYWxlID0gbV9jb250cm9sbGVyLT5pbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKGVk
aXRpbmdGaXhlZFNjYWxlKTsKICAgICBjb25zdCBRUmVjdEYgdmlld3BvcnRSZWN0ID0gbV92aWV3
cG9ydEl0ZW0tPmJvdW5kaW5nUmVjdCgpOwogCiAgICAgcXJlYWwgeDsKLSAgICBjb25zdCBxcmVh
bCBib3JkZXJPZmZzZXQgPSAxMDsKLSAgICBpZiAoKGVuZEFyZWEud2lkdGgoKSArIGJvcmRlck9m
ZnNldCkgKiBlbmRJdGVtU2NhbGUgPD0gdmlld3BvcnRSZWN0LndpZHRoKCkpIHsKKyAgICBjb25z
dCBxcmVhbCBib3JkZXJPZmZzZXQgPSAxMCAqIG1fY29udHJvbGxlci0+ZGV2aWNlUGl4ZWxSYXRp
bygpOworICAgIGlmICgodGFyZ2V0QXJlYS53aWR0aCgpICsgYm9yZGVyT2Zmc2V0KSAqIHRhcmdl
dFNjYWxlIDw9IHZpZXdwb3J0UmVjdC53aWR0aCgpKSB7CiAgICAgICAgIC8vIENlbnRlciB0aGUg
aW5wdXQgZmllbGQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgdmlldywgaWYgaXQgaXMgc21hbGxlciB0
aGFuCiAgICAgICAgIC8vIHRoZSB2aWV3IGF0IHRoZSBzY2FsZSB0YXJnZXQuCi0gICAgICAgIHgg
PSB2aWV3cG9ydFJlY3QuY2VudGVyKCkueCgpIC0gZW5kQXJlYS53aWR0aCgpICogZW5kSXRlbVNj
YWxlIC8gMi4wOworICAgICAgICB4ID0gdmlld3BvcnRSZWN0LmNlbnRlcigpLngoKSAtIHRhcmdl
dEFyZWEud2lkdGgoKSAqIHRhcmdldFNjYWxlIC8gMi4wOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEVuc3VyZSB0aGF0IHRoZSBjYXJldCBhbHdheXMgaGFzIGJvcmRlck9mZnNldCBjb250ZW50
cyBwaXhlbHMgdG8gdGhlIHJpZ2h0CiAgICAgICAgIC8vIG9mIGl0LCBhbmQgc2Vjb25kYXJpbHkg
KGlmIHBvc3NpYmxlKSwgdGhhdCB0aGUgYXJlYSBoYXMgYm9yZGVyT2Zmc2V0CiAgICAgICAgIC8v
IGNvbnRlbnRzIHBpeGVscyB0byB0aGUgbGVmdCBvZiBpdC4KLSAgICAgICAgcXJlYWwgY2FyZXRP
ZmZzZXQgPSBtX2NvbnRyb2xsZXItPmNvbnZlcnRUb1ZpZXdwb3J0KGNhcmV0QXJlYS54KCkpIC0g
ZW5kQXJlYS54KCk7Ci0gICAgICAgIHggPSBxTWluKHZpZXdwb3J0UmVjdC53aWR0aCgpIC0gKGNh
cmV0T2Zmc2V0ICsgYm9yZGVyT2Zmc2V0KSAqIGVuZEl0ZW1TY2FsZSwgYm9yZGVyT2Zmc2V0ICog
ZW5kSXRlbVNjYWxlKTsKKyAgICAgICAgcXJlYWwgY2FyZXRPZmZzZXQgPSBjYXJldEFyZWEueCgp
IC0gdGFyZ2V0QXJlYS54KCk7CisgICAgICAgIHggPSBxTWluKHZpZXdwb3J0UmVjdC53aWR0aCgp
IC0gKGNhcmV0T2Zmc2V0ICsgYm9yZGVyT2Zmc2V0KSAqIHRhcmdldFNjYWxlLCBib3JkZXJPZmZz
ZXQgKiB0YXJnZXRTY2FsZSk7CiAgICAgfQogCi0gICAgY29uc3QgUVBvaW50RiBob3RzcG90ID0g
UVBvaW50RihlbmRBcmVhLngoKSwgZW5kQXJlYS5jZW50ZXIoKS55KCkpOworICAgIGNvbnN0IFFQ
b2ludEYgaG90c3BvdCA9IFFQb2ludEYodGFyZ2V0QXJlYS54KCksIHRhcmdldEFyZWEuY2VudGVy
KCkueSgpKTsKICAgICBjb25zdCBRUG9pbnRGIHZpZXdwb3J0SG90c3BvdCA9IFFQb2ludEYoeCwg
LyogRklYTUU6IHZpc2libGVDZW50ZXIgKi8gdmlld3BvcnRSZWN0LmNlbnRlcigpLnkoKSk7CiAK
LSAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0gaG90c3BvdCAqIGVuZEl0ZW1TY2FsZSAtIHZpZXdw
b3J0SG90c3BvdDsKLSAgICBRUmVjdEYgZW5kUG9zUmFuZ2UgPSBtX2NvbnRyb2xsZXItPnBvc2l0
aW9uUmFuZ2VGb3JDb250ZW50QXRTY2FsZShlbmRJdGVtU2NhbGUpOworICAgIFFQb2ludEYgZW5k
UG9zaXRpb24gPSBob3RzcG90ICogdGFyZ2V0U2NhbGUgLSB2aWV3cG9ydEhvdHNwb3Q7CisgICAg
UVJlY3RGIGVuZFBvc1JhbmdlID0gbV9jb250cm9sbGVyLT5wb3NpdGlvblJhbmdlRm9yQ29udGVu
dEF0U2NhbGUodGFyZ2V0U2NhbGUpOwogCiAgICAgZW5kUG9zaXRpb24gPSBib3VuZFBvc2l0aW9u
KGVuZFBvc1JhbmdlLnRvcExlZnQoKSwgZW5kUG9zaXRpb24sIGVuZFBvc1JhbmdlLmJvdHRvbVJp
Z2h0KCkpOwogCi0gICAgUVJlY3RGIGVuZFZpc2libGVDb250ZW50UmVjdChlbmRQb3NpdGlvbiAv
IGVuZEl0ZW1TY2FsZSwgdmlld3BvcnRSZWN0LnNpemUoKSAvIGVuZEl0ZW1TY2FsZSk7CisgICAg
UVJlY3RGIGVuZFZpc2libGVDb250ZW50UmVjdChlbmRQb3NpdGlvbiAvIHRhcmdldFNjYWxlLCB2
aWV3cG9ydFJlY3Quc2l6ZSgpIC8gdGFyZ2V0U2NhbGUpOwogCiAgICAgYW5pbWF0ZUNvbnRlbnRS
ZWN0VmlzaWJsZShlbmRWaXNpYmxlQ29udGVudFJlY3QpOwogfQpAQCAtMjI4LDI4ICsyMjcsMjgg
QEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6Onpvb21Ub0FyZWFHZXN0dXJl
RW5kZWQoY29uc3QgUVBvaW50RiYgdG91Y2gKICAgICBpZiAobV9jb250cm9sbGVyLT5oYXNTdXNw
ZW5kZWRDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IGludCBtYXJnaW4g
PSAxMDsgLy8gV2Ugd2FudCBhdCBsZWFzdCBhIGxpdHRsZSBiaXQgb2YgbWFyZ2luLgotICAgIFFS
ZWN0RiBlbmRBcmVhID0gbV9jb250cm9sbGVyLT5jb252ZXJ0VG9WaWV3cG9ydCh0YXJnZXRBcmVh
LmFkanVzdGVkKC1tYXJnaW4sIC1tYXJnaW4sIG1hcmdpbiwgbWFyZ2luKSk7CisgICAgY29uc3Qg
ZmxvYXQgbWFyZ2luID0gMTAgKiBtX2NvbnRyb2xsZXItPmRldmljZVBpeGVsUmF0aW8oKTsgLy8g
V2Ugd2FudCBhdCBsZWFzdCBhIGxpdHRsZSBiaXQgb2YgbWFyZ2luLgorICAgIFFSZWN0RiBlbmRB
cmVhID0gdGFyZ2V0QXJlYS5hZGp1c3RlZCgtbWFyZ2luLCAtbWFyZ2luLCBtYXJnaW4sIG1hcmdp
bik7CiAKICAgICBjb25zdCBRUmVjdEYgdmlld3BvcnRSZWN0ID0gbV92aWV3cG9ydEl0ZW0tPmJv
dW5kaW5nUmVjdCgpOwogCi0gICAgcXJlYWwgdGFyZ2V0Q1NTU2NhbGUgPSB2aWV3cG9ydFJlY3Qu
c2l6ZSgpLndpZHRoKCkgLyBlbmRBcmVhLnNpemUoKS53aWR0aCgpOwotICAgIHFyZWFsIGVuZENT
U1NjYWxlID0gbV9jb250cm9sbGVyLT5pbm5lckJvdW5kZWRDb250ZW50c1NjYWxlKHFNaW4odGFy
Z2V0Q1NTU2NhbGUsIHFyZWFsKDIuNSkpKTsKLSAgICBxcmVhbCBlbmRJdGVtU2NhbGUgPSBtX2Nv
bnRyb2xsZXItPmNvbnZlcnRUb1ZpZXdwb3J0KGVuZENTU1NjYWxlKTsKKyAgICBxcmVhbCBtaW5W
aWV3cG9ydFNjYWxlID0gcXJlYWwoMi41KSAqIG1fY29udHJvbGxlci0+ZGV2aWNlUGl4ZWxSYXRp
bygpOworICAgIHFyZWFsIHRhcmdldFNjYWxlID0gdmlld3BvcnRSZWN0LnNpemUoKS53aWR0aCgp
IC8gZW5kQXJlYS5zaXplKCkud2lkdGgoKTsKKyAgICB0YXJnZXRTY2FsZSA9IG1fY29udHJvbGxl
ci0+aW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZShxTWluKG1pblZpZXdwb3J0U2NhbGUsIHRhcmdl
dFNjYWxlKSk7CiAgICAgcXJlYWwgY3VycmVudFNjYWxlID0gbV9wYWdlSXRlbS0+Y29udGVudHNT
Y2FsZSgpOwogCiAgICAgLy8gV2Ugd2FudCB0byBlbmQgdXAgd2l0aCB0aGUgdGFyZ2V0IGFyZWEg
ZmlsbGluZyB0aGUgd2hvbGUgd2lkdGggb2YgdGhlIHZpZXdwb3J0IChpZiBwb3NzaWJsZSksCiAg
ICAgLy8gYW5kIGNlbnRyYWxpemVkIHZlcnRpY2FsbHkgd2hlcmUgdGhlIHVzZXIgcmVxdWVzdGVk
IHpvb20uIFRodXMgb3VyIGhvdHNwb3QgaXMgdGhlIGNlbnRlciBvZgogICAgIC8vIHRoZSB0YXJn
ZXRBcmVhIHgtd2lzZSBhbmQgdGhlIHJlcXVlc3RlZCB6b29tIHBvc2l0aW9uLCB5LXdpc2UuCi0g
ICAgY29uc3QgUVBvaW50RiBob3RzcG90ID0gUVBvaW50RihlbmRBcmVhLmNlbnRlcigpLngoKSwg
bV9jb250cm9sbGVyLT5jb252ZXJ0VG9WaWV3cG9ydCh0b3VjaFBvaW50LnkoKSkpOworICAgIGNv
bnN0IFFQb2ludEYgaG90c3BvdCA9IFFQb2ludEYoZW5kQXJlYS5jZW50ZXIoKS54KCksIHRvdWNo
UG9pbnQueSgpKTsKICAgICBjb25zdCBRUG9pbnRGIHZpZXdwb3J0SG90c3BvdCA9IHZpZXdwb3J0
UmVjdC5jZW50ZXIoKTsKIAotICAgIFFQb2ludEYgZW5kUG9zaXRpb24gPSBob3RzcG90ICogZW5k
Q1NTU2NhbGUgLSB2aWV3cG9ydEhvdHNwb3Q7CisgICAgUVBvaW50RiBlbmRQb3NpdGlvbiA9IGhv
dHNwb3QgKiB0YXJnZXRTY2FsZSAtIHZpZXdwb3J0SG90c3BvdDsKIAotICAgIFFSZWN0RiBlbmRQ
b3NSYW5nZSA9IG1fY29udHJvbGxlci0+cG9zaXRpb25SYW5nZUZvckNvbnRlbnRBdFNjYWxlKGVu
ZEl0ZW1TY2FsZSk7CisgICAgUVJlY3RGIGVuZFBvc1JhbmdlID0gbV9jb250cm9sbGVyLT5wb3Np
dGlvblJhbmdlRm9yQ29udGVudEF0U2NhbGUodGFyZ2V0U2NhbGUpOwogICAgIGVuZFBvc2l0aW9u
ID0gYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIGVuZFBvc2l0aW9uLCBlbmRQ
b3NSYW5nZS5ib3R0b21SaWdodCgpKTsKIAotICAgIFFSZWN0RiBlbmRWaXNpYmxlQ29udGVudFJl
Y3QoZW5kUG9zaXRpb24gLyBlbmRJdGVtU2NhbGUsIHZpZXdwb3J0UmVjdC5zaXplKCkgLyBlbmRJ
dGVtU2NhbGUpOworICAgIFFSZWN0RiBlbmRWaXNpYmxlQ29udGVudFJlY3QoZW5kUG9zaXRpb24g
LyB0YXJnZXRTY2FsZSwgdmlld3BvcnRSZWN0LnNpemUoKSAvIHRhcmdldFNjYWxlKTsKIAogICAg
IGVudW0geyBab29tSW4sIFpvb21CYWNrLCBab29tT3V0LCBOb1pvb20gfSB6b29tQWN0aW9uID0g
Wm9vbUluOwogCkBAIC0yNTcsNyArMjU2LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50UXQ6Onpvb21Ub0FyZWFHZXN0dXJlRW5kZWQoY29uc3QgUVBvaW50RiYgdG91Y2gKICAg
ICAgICAgLy8gWm9vbSBiYWNrIG91dCBpZiBhdHRlbXB0aW5nIHRvIHNjYWxlIHRvIHRoZSBzYW1l
IGN1cnJlbnQgc2NhbGUsIG9yCiAgICAgICAgIC8vIGF0dGVtcHRpbmcgdG8gY29udGludWUgc2Nh
bGluZyBvdXQgZnJvbSB0aGUgaW5uZXIgbW9zdCBsZXZlbC4KICAgICAgICAgLy8gVXNlIGZ1enp5
IGNvbXBhcmUgd2l0aCBhIGZpeGVkIGVycm9yIHRvIGJlIGFibGUgdG8gZGVhbCB3aXRoIGxhcmdp
c2ggZGlmZmVyZW5jZXMgZHVlIHRvIHBpeGVsIHJvdW5kaW5nLgotICAgICAgICBpZiAoZnV6enlD
b21wYXJlKGVuZEl0ZW1TY2FsZSwgY3VycmVudFNjYWxlLCAwLjAxKSkgeworICAgICAgICBpZiAo
ZnV6enlDb21wYXJlKHRhcmdldFNjYWxlLCBjdXJyZW50U2NhbGUsIDAuMDEpKSB7CiAgICAgICAg
ICAgICAvLyBJZiBtb3ZpbmcgdGhlIHZpZXdwb3J0IHdvdWxkIGV4cG9zZSBtb3JlIG9mIHRoZSB0
YXJnZXRSZWN0IGFuZCBtb3ZlIGF0IGxlYXN0IDQwIHBpeGVscywgdXBkYXRlIHBvc2l0aW9uIGJ1
dCBkbyBub3Qgc2NhbGUgb3V0LgogICAgICAgICAgICAgUVJlY3RGIGN1cnJlbnRDb250ZW50UmVj
dCh2aXNpYmxlQ29udGVudHNSZWN0KCkpOwogICAgICAgICAgICAgUVJlY3RGIHRhcmdldEludGVy
c2VjdGlvbiA9IGVuZFZpc2libGVDb250ZW50UmVjdC5pbnRlcnNlY3RlZCh0YXJnZXRBcmVhKTsK
QEAgLTI2NywzNCArMjY2LDMzIEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0
Ojp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoCiAgICAgICAgICAg
ICAgICAgem9vbUFjdGlvbiA9IE5vWm9vbTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICB6b29tQWN0aW9uID0gWm9vbUJhY2s7Ci0gICAgICAgIH0gZWxzZSBpZiAoZnV6enlDb21w
YXJlKGVuZEl0ZW1TY2FsZSwgbV96b29tT3V0U2NhbGUsIDAuMDEpKQorICAgICAgICB9IGVsc2Ug
aWYgKGZ1enp5Q29tcGFyZSh0YXJnZXRTY2FsZSwgbV96b29tT3V0U2NhbGUsIDAuMDEpKQogICAg
ICAgICAgICAgem9vbUFjdGlvbiA9IFpvb21CYWNrOwotICAgICAgICBlbHNlIGlmIChlbmRJdGVt
U2NhbGUgPCBjdXJyZW50U2NhbGUpCisgICAgICAgIGVsc2UgaWYgKHRhcmdldFNjYWxlIDwgY3Vy
cmVudFNjYWxlKQogICAgICAgICAgICAgem9vbUFjdGlvbiA9IFpvb21PdXQ7CiAgICAgfQogCiAg
ICAgc3dpdGNoICh6b29tQWN0aW9uKSB7CiAgICAgY2FzZSBab29tSW46CiAgICAgICAgIG1fc2Nh
bGVTdGFjay5hcHBlbmQoU2NhbGVTdGFja0l0ZW0oY3VycmVudFNjYWxlLCBtX3ZpZXdwb3J0SXRl
bS0+Y29udGVudFBvcygpLngoKSkpOwotICAgICAgICBtX3pvb21PdXRTY2FsZSA9IGVuZEl0ZW1T
Y2FsZTsKKyAgICAgICAgbV96b29tT3V0U2NhbGUgPSB0YXJnZXRTY2FsZTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBab29tQmFjazogewogICAgICAgICBTY2FsZVN0YWNrSXRlbSBsYXN0U2Nh
bGUgPSBtX3NjYWxlU3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgZW5kSXRlbVNjYWxlID0gbGFz
dFNjYWxlLnNjYWxlOwotICAgICAgICBlbmRDU1NTY2FsZSA9IG1fY29udHJvbGxlci0+Y29udmVy
dEZyb21WaWV3cG9ydChsYXN0U2NhbGUuc2NhbGUpOworICAgICAgICB0YXJnZXRTY2FsZSA9IGxh
c3RTY2FsZS5zY2FsZTsKICAgICAgICAgLy8gUmVjYWxjdWxhdGUgZW5kUG9zaXRpb24gYW5kIGJv
dW5kIGl0IGFjY29yZGluZyB0byBuZXcgc2NhbGUuCi0gICAgICAgIGVuZFBvc2l0aW9uLnNldFko
aG90c3BvdC55KCkgKiBlbmRDU1NTY2FsZSAtIHZpZXdwb3J0SG90c3BvdC55KCkpOworICAgICAg
ICBlbmRQb3NpdGlvbi5zZXRZKGhvdHNwb3QueSgpICogdGFyZ2V0U2NhbGUgLSB2aWV3cG9ydEhv
dHNwb3QueSgpKTsKICAgICAgICAgZW5kUG9zaXRpb24uc2V0WChsYXN0U2NhbGUueFBvc2l0aW9u
KTsKLSAgICAgICAgZW5kUG9zUmFuZ2UgPSBtX2NvbnRyb2xsZXItPnBvc2l0aW9uUmFuZ2VGb3JD
b250ZW50QXRTY2FsZShlbmRJdGVtU2NhbGUpOworICAgICAgICBlbmRQb3NSYW5nZSA9IG1fY29u
dHJvbGxlci0+cG9zaXRpb25SYW5nZUZvckNvbnRlbnRBdFNjYWxlKHRhcmdldFNjYWxlKTsKICAg
ICAgICAgZW5kUG9zaXRpb24gPSBib3VuZFBvc2l0aW9uKGVuZFBvc1JhbmdlLnRvcExlZnQoKSwg
ZW5kUG9zaXRpb24sIGVuZFBvc1JhbmdlLmJvdHRvbVJpZ2h0KCkpOwotICAgICAgICBlbmRWaXNp
YmxlQ29udGVudFJlY3QgPSBRUmVjdEYoZW5kUG9zaXRpb24gLyBlbmRJdGVtU2NhbGUsIHZpZXdw
b3J0UmVjdC5zaXplKCkgLyBlbmRJdGVtU2NhbGUpOworICAgICAgICBlbmRWaXNpYmxlQ29udGVu
dFJlY3QgPSBRUmVjdEYoZW5kUG9zaXRpb24gLyB0YXJnZXRTY2FsZSwgdmlld3BvcnRSZWN0LnNp
emUoKSAvIHRhcmdldFNjYWxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgWm9v
bU91dDoKICAgICAgICAgLy8gVW5zdGFjayBhbGwgc2NhbGUtbGV2ZWxzIGRlZXBlciB0aGFuIHRo
ZSBuZXcgbGV2ZWwsIHNvIGEgem9vbS1iYWNrIHdvbid0IGVuZCB1cCB6b29taW5nIGluLgotICAg
ICAgICB3aGlsZSAoIW1fc2NhbGVTdGFjay5pc0VtcHR5KCkgJiYgbV9zY2FsZVN0YWNrLmxhc3Qo
KS5zY2FsZSA+PSBlbmRJdGVtU2NhbGUpCisgICAgICAgIHdoaWxlICghbV9zY2FsZVN0YWNrLmlz
RW1wdHkoKSAmJiBtX3NjYWxlU3RhY2subGFzdCgpLnNjYWxlID49IHRhcmdldFNjYWxlKQogICAg
ICAgICAgICAgbV9zY2FsZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgbV96b29tT3V0U2Nh
bGUgPSBlbmRJdGVtU2NhbGU7CisgICAgICAgIG1fem9vbU91dFNjYWxlID0gdGFyZ2V0U2NhbGU7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9ab29tOgogICAgICAgICBicmVhazsKQEAgLTMw
NSwxNyArMzAzLDE2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojp6b29t
VG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoCiAKIFFSZWN0RiBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6Om5lYXJlc3RWYWxpZFZpc2libGVDb250ZW50c1JlY3Qo
KSBjb25zdAogewotICAgIGZsb2F0IGNzc1NjYWxlID0gbV9jb250cm9sbGVyLT5jb252ZXJ0RnJv
bVZpZXdwb3J0KG1fcGFnZUl0ZW0tPmNvbnRlbnRzU2NhbGUoKSk7Ci0gICAgZmxvYXQgZW5kSXRl
bVNjYWxlID0gbV9jb250cm9sbGVyLT5jb252ZXJ0VG9WaWV3cG9ydChtX2NvbnRyb2xsZXItPmlu
bmVyQm91bmRlZENvbnRlbnRzU2NhbGUoY3NzU2NhbGUpKTsKKyAgICBmbG9hdCB0YXJnZXRTY2Fs
ZSA9IG1fY29udHJvbGxlci0+aW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZShtX3BhZ2VJdGVtLT5j
b250ZW50c1NjYWxlKCkpOwogCiAgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0UmVjdCA9IG1fdmll
d3BvcnRJdGVtLT5ib3VuZGluZ1JlY3QoKTsKICAgICBRUG9pbnRGIHZpZXdwb3J0SG90c3BvdCA9
IHZpZXdwb3J0UmVjdC5jZW50ZXIoKTsKLSAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0gbV92aWV3
cG9ydEl0ZW0tPm1hcFRvV2ViQ29udGVudCh2aWV3cG9ydEhvdHNwb3QpICogZW5kSXRlbVNjYWxl
IC0gdmlld3BvcnRIb3RzcG90OworICAgIFFQb2ludEYgZW5kUG9zaXRpb24gPSBtX3ZpZXdwb3J0
SXRlbS0+bWFwVG9XZWJDb250ZW50KHZpZXdwb3J0SG90c3BvdCkgKiB0YXJnZXRTY2FsZSAtIHZp
ZXdwb3J0SG90c3BvdDsKIAotICAgIEZsb2F0UmVjdCBlbmRQb3NSYW5nZSA9IG1fY29udHJvbGxl
ci0+cG9zaXRpb25SYW5nZUZvckNvbnRlbnRBdFNjYWxlKGVuZEl0ZW1TY2FsZSk7CisgICAgRmxv
YXRSZWN0IGVuZFBvc1JhbmdlID0gbV9jb250cm9sbGVyLT5wb3NpdGlvblJhbmdlRm9yQ29udGVu
dEF0U2NhbGUodGFyZ2V0U2NhbGUpOwogICAgIGVuZFBvc2l0aW9uID0gYm91bmRQb3NpdGlvbihl
bmRQb3NSYW5nZS5taW5YTWluWUNvcm5lcigpLCBlbmRQb3NpdGlvbiwgZW5kUG9zUmFuZ2UubWF4
WE1heFlDb3JuZXIoKSk7CiAKLSAgICBRUmVjdEYgZW5kVmlzaWJsZUNvbnRlbnRSZWN0KGVuZFBv
c2l0aW9uIC8gZW5kSXRlbVNjYWxlLCB2aWV3cG9ydFJlY3Quc2l6ZSgpIC8gZW5kSXRlbVNjYWxl
KTsKKyAgICBRUmVjdEYgZW5kVmlzaWJsZUNvbnRlbnRSZWN0KGVuZFBvc2l0aW9uIC8gdGFyZ2V0
U2NhbGUsIHZpZXdwb3J0UmVjdC5zaXplKCkgLyB0YXJnZXRTY2FsZSk7CiAKICAgICByZXR1cm4g
ZW5kVmlzaWJsZUNvbnRlbnRSZWN0OwogfQpAQCAtMzQyLDggKzMzOSw4IEBAIHZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IGxvY2FsU2Nh
bGUsIGJvb2wgdHJlCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6c2V0Q29u
dGVudHNSZWN0VG9OZWFyZXN0VmFsaWRCb3VuZHMoKQogewogICAgIFZpZXdwb3J0VXBkYXRlRGVm
ZXJyZXIgZ3VhcmQobV9jb250cm9sbGVyKTsKLSAgICBmbG9hdCB2YWxpZENTU1NjYWxlID0gbV9j
b250cm9sbGVyLT5pbm5lckJvdW5kZWRDb250ZW50c1NjYWxlKG1fY29udHJvbGxlci0+Y29udmVy
dEZyb21WaWV3cG9ydChtX3BhZ2VJdGVtLT5jb250ZW50c1NjYWxlKCkpKTsKLSAgICBzZXRDb250
ZW50UmVjdFZpc2libGVQb3NpdGlvbkF0U2NhbGUobmVhcmVzdFZhbGlkVmlzaWJsZUNvbnRlbnRz
UmVjdCgpLnRvcExlZnQoKSwgbV9jb250cm9sbGVyLT5jb252ZXJ0VG9WaWV3cG9ydCh2YWxpZENT
U1NjYWxlKSk7CisgICAgZmxvYXQgdGFyZ2V0U2NhbGUgPSBtX2NvbnRyb2xsZXItPmlubmVyQm91
bmRlZFZpZXdwb3J0U2NhbGUobV9wYWdlSXRlbS0+Y29udGVudHNTY2FsZSgpKTsKKyAgICBzZXRD
b250ZW50UmVjdFZpc2libGVQb3NpdGlvbkF0U2NhbGUobmVhcmVzdFZhbGlkVmlzaWJsZUNvbnRl
bnRzUmVjdCgpLnRvcExlZnQoKSwgdGFyZ2V0U2NhbGUpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRRdDo6ZGlkUmVzdW1lQ29udGVudCgpCkBAIC00NDksMTIgKzQ0Niwx
MiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6cGluY2hHZXN0dXJlUmVx
dWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiBwaQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAg
Q2hhbmdlcyBvZiB0aGUgY2VudGVyIHBvc2l0aW9uIHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4g
aWYgdGhlIHpvb20gZmFjdG9yIGRvZXMgbm90IGNoYW5nZS4KLSAgICBjb25zdCBxcmVhbCBjc3NT
Y2FsZSA9IG1fY29udHJvbGxlci0+Y29udmVydEZyb21WaWV3cG9ydChtX3BpbmNoU3RhcnRTY2Fs
ZSAqIHRvdGFsU2NhbGVGYWN0b3IpOworICAgIGNvbnN0IHFyZWFsIHBpbmNoU2NhbGUgPSBtX3Bp
bmNoU3RhcnRTY2FsZSAqIHRvdGFsU2NhbGVGYWN0b3I7CiAKICAgICAvLyBBbGxvdyB6b29taW5n
IG91dCBiZXlvbmQgbWltaW11bSBzY2FsZSBvbiBwYWdlcyB0aGF0IGRvIG5vdCBleHBsaWNpdGx5
IGRpc2FsbG93IGl0LgotICAgIGNvbnN0IHFyZWFsIHRhcmdldEl0ZW1TY2FsZSA9IG1fY29udHJv
bGxlci0+Y29udmVydFRvVmlld3BvcnQobV9jb250cm9sbGVyLT5vdXRlckJvdW5kZWRDb250ZW50
c1NjYWxlKGNzc1NjYWxlKSk7CisgICAgY29uc3QgcXJlYWwgdGFyZ2V0U2NhbGUgPSBtX2NvbnRy
b2xsZXItPm91dGVyQm91bmRlZFZpZXdwb3J0U2NhbGUocGluY2hTY2FsZSk7CiAKLSAgICBzY2Fs
ZUNvbnRlbnQodGFyZ2V0SXRlbVNjYWxlLCBtX3ZpZXdwb3J0SXRlbS0+bWFwVG9XZWJDb250ZW50
KHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzKSk7CisgICAgc2NhbGVDb250ZW50KHRh
cmdldFNjYWxlLCBtX3ZpZXdwb3J0SXRlbS0+bWFwVG9XZWJDb250ZW50KHBpbmNoQ2VudGVySW5W
aWV3cG9ydENvb3JkaW5hdGVzKSk7CiAKICAgICBjb25zdCBRUG9pbnRGIHBvc2l0aW9uRGlmZiA9
IHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzIC0gbV9sYXN0UGluY2hDZW50ZXJJblZp
ZXdwb3J0Q29vcmRpbmF0ZXM7CiAgICAgbV9sYXN0UGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRp
bmF0ZXMgPSBwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165606</attachid>
            <date>2012-09-25 07:05:21 -0700</date>
            <delta_ts>2012-09-25 08:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97214-20120925160440.patch</filename>
            <type>text/plain</type>
            <size>23137</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2M4MzA5ZTg5N2JhMDI1
OWUxOTVlZGFhMjVjNGFhM2Y5NjUxMzUzMC4uN2VjZWU5NTEyYjQyOGJlYTA1MDU0Yjk3OWE2NDY3
MmIyZTZiYjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEyLTA5LTIwICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKKyAgICAgICAgW1F0
XSBBYnN0cmFjdCBhcyBtdWNoIGRldmljZVBpeGVsUmF0aW8gbG9naWMgYXMgcG9zc2libGUgYmVo
aW5kIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBjbGllbnQgaXMgcmVx
dWlyZWQgdG8gbXVsdGlwbHkgdGhlIHNjYWxlcyBpdCByZWNlaXZlcyBlYWNoIGJpbWUgYnkgdGhl
CisgICAgICAgIGRldmljZVBpeGVsUmF0aW8uIFRoaXMgc2hvdWxkbid0IGJlIHJlcXVpcmVkIHNp
bmNlIGVzc2VudGlhbGx5LCB0aGUgb25seSBwbGFjZXMgdGhhdCB0aGUKKyAgICAgICAgZGV2aWNl
UGl4ZWxSYXRpbyBzaG91bGQgYmUgaW4gdXNlLCBpcyB0byBhZGp1c3QgdGhlIGxheW91dCBzaXpl
LCBtdWx0aXBseSB0aGUgYmFzZSBzY2FsZQorICAgICAgICBhbmQgZm9yIHNjYWxlIGNvbnN0YW50
cy4KKworICAgICAgICBPdGhlciByZWxhdGVkIGNoYW5nZXM6CisgICAgICAgIC0gTWFrZSBzdXJl
IHRoYXQgdGhlIGNvbnRyb2xsZXIgYW5kIGl0J3MgY2xpZW50IGFyZSBvbmx5IGV4Y2hhbmdpbmcg
ZWZmZWN0aXZlIHNjYWxlcworICAgICAgICAgKGNzc1NjYWxlICogZGV2aWNlUGl4ZWxSYXRpbykK
KyAgICAgICAgLSBSZW1vdmUgbWVtYmVycyBkdXBsaWNhdGluZyBtX3Jhd0F0dHJpYnV0ZXMgdmFs
dWVzCisgICAgICAgIC0gVXNlIGEgc2VwYXJhdGUgbWVtYmVyIGZvciB0aGUgbWluaW11bSBzY2Fs
ZSB0byBmaXQgdGhlIHBhZ2UsIHNlcGFyYXRlIGZyb20gdGhlIHZpZXdwb3J0IGFyZ3VtZW50cwor
ICAgICAgICAtIE1ha2Ugc3VyZSB0aGF0IHRoZSBtaW5pbXVtIHNjYWxlIHRvIGZpdCBpcyBhZGp1
c3RlZCBpZiB0aGUgY29udGVudHMgc2l6ZSBpc24ndAorICAgICAgICAgIHVwZGF0ZWQgYWZ0ZXIg
dGhlIHZpZXdwb3J0IGF0dHJpYnV0ZXMgY2hhbmdlZAorICAgICAgICAtIE1ha2UgdGhlIHNjYWxl
IGNvbnZlcnNpb24gZnVuY3Rpb25zIHByaXZhdGUgdG8gZGlzY291cmFnZSB0aGlzIGxvZ2ljIGZy
b20gc3ByZWFkaW5nIGluIHRoZSBjbGllbnQKKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXI6OmlubmVyQm91bmRlZFZpZXdwb3J0U2NhbGUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpvdXRlckJvdW5kZWRWaWV3cG9ydFNjYWxlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OmRldmljZVBpeGVsUmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpyZXN1bWVDb250ZW50KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dXBkYXRlTWluaW11bVNjYWxlVG9GaXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmg6CisgICAgICAg
IChQYWdlVmlld3BvcnRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6bWluaW11bUNvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjptYXhpbXVtQ29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmN1cnJlbnRDb250ZW50c1NjYWxlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZnJvbVZpZXdwb3J0U2NhbGUpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjp0b1ZpZXdwb3J0U2NhbGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZv
Y3VzRWRpdGFibGVBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0Ojp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpuZWFyZXN0VmFsaWRWaXNpYmxlQ29udGVudHNS
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojpz
ZXRDb250ZW50c1JlY3RUb05lYXJlc3RWYWxpZEJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZSk6
CisKKzIwMTItMDktMjAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQGRpZ2lh
LmNvbT4KKwogICAgICAgICBbUXRdIERvbid0IHJlbmRlciBhdCBzY2FsZSAxLjAgd2hlbiBkb2lu
ZyBhIHBpbmNoLXpvb20gb3V0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NzIxMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKaW5kZXggZTlhNTEzYWYxNGQxOGZkNDM2ZTNiM2ZiZmI2
NzEwYjI0ZjdkN2E3Ny4uZWU2MTVhNmUxOTNlNzBlNjQ2ZjBkMjVhNGE0NDY5ZjgwYWIxY2ZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9s
bGVyLmNwcApAQCAtNzMsOSArNzMsNyBAQCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpQYWdlVmll
d3BvcnRDb250cm9sbGVyKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwcm94eSwgUGFnZQogICAgIDog
bV93ZWJQYWdlUHJveHkocHJveHkpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Fs
bG93c1VzZXJTY2FsaW5nKGZhbHNlKQotICAgICwgbV9taW5pbXVtU2NhbGUoMSkKLSAgICAsIG1f
bWF4aW11bVNjYWxlKDEpCi0gICAgLCBtX2RldmljZVBpeGVsUmF0aW8oMSkKKyAgICAsIG1fbWlu
aW11bVNjYWxlVG9GaXQoMSkKICAgICAsIG1fYWN0aXZlRGVmZXJyZXJDb3VudCgwKQogICAgICwg
bV9oYXNTdXNwZW5kZWRDb250ZW50KGZhbHNlKQogICAgICwgbV9oYWRVc2VySW50ZXJhY3Rpb24o
ZmFsc2UpCkBAIC04NCwzOCArODIsMzMgQEAgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZp
ZXdwb3J0Q29udHJvbGxlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSogcHJveHksIFBhZ2UKICAgICAv
LyBJbml0aWFsaXppbmcgVmlld3BvcnQgUmF3IEF0dHJpYnV0ZXMgdG8gYXZvaWQgcmFuZG9tIG5l
Z2F0aXZlIHNjYWxlIGZhY3RvcnMKICAgICAvLyBpZiB0aGVyZSBpcyBhIHJhY2UgY29uZGl0aW9u
IGJldHdlZW4gdGhlIGZpcnN0IGxheW91dCBhbmQgc2V0dGluZyB0aGUgdmlld3BvcnQgYXR0cmli
dXRlcyBmb3IgdGhlIGZpcnN0IHRpbWUuCiAgICAgbV9yYXdBdHRyaWJ1dGVzLmluaXRpYWxTY2Fs
ZSA9IDE7Ci0gICAgbV9yYXdBdHRyaWJ1dGVzLm1pbmltdW1TY2FsZSA9IG1fbWluaW11bVNjYWxl
OwotICAgIG1fcmF3QXR0cmlidXRlcy5tYXhpbXVtU2NhbGUgPSBtX21heGltdW1TY2FsZTsKKyAg
ICBtX3Jhd0F0dHJpYnV0ZXMubWluaW11bVNjYWxlID0gMTsKKyAgICBtX3Jhd0F0dHJpYnV0ZXMu
bWF4aW11bVNjYWxlID0gMTsKICAgICBtX3Jhd0F0dHJpYnV0ZXMudXNlclNjYWxhYmxlID0gbV9h
bGxvd3NVc2VyU2NhbGluZzsKIAogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgbV9jbGllbnQt
PnNldENvbnRyb2xsZXIodGhpcyk7CiB9CiAKLUZsb2F0UmVjdCBQYWdlVmlld3BvcnRDb250cm9s
bGVyOjpjb252ZXJ0VG9WaWV3cG9ydChjb25zdCBGbG9hdFJlY3QmIGNzc1JlY3QpIGNvbnN0Citm
bG9hdCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjppbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKGZs
b2F0IHZpZXdwb3J0U2NhbGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdCgKLSAgICAg
ICAgY29udmVydFRvVmlld3BvcnQoY3NzUmVjdC54KCkpLAotICAgICAgICBjb252ZXJ0VG9WaWV3
cG9ydChjc3NSZWN0LnkoKSksCi0gICAgICAgIGNvbnZlcnRUb1ZpZXdwb3J0KGNzc1JlY3Qud2lk
dGgoKSksCi0gICAgICAgIGNvbnZlcnRUb1ZpZXdwb3J0KGNzc1JlY3QuaGVpZ2h0KCkpCi0gICAg
KTsKKyAgICByZXR1cm4gYm91bmQodG9WaWV3cG9ydFNjYWxlKG1fbWluaW11bVNjYWxlVG9GaXQp
LCB2aWV3cG9ydFNjYWxlLCB0b1ZpZXdwb3J0U2NhbGUobV9yYXdBdHRyaWJ1dGVzLm1heGltdW1T
Y2FsZSkpOwogfQogCi1mbG9hdCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjppbm5lckJvdW5kZWRD
b250ZW50c1NjYWxlKGZsb2F0IGNzc1NjYWxlKSBjb25zdAotewotICAgIHJldHVybiBib3VuZCht
X21pbmltdW1TY2FsZSwgY3NzU2NhbGUsIG1fbWF4aW11bVNjYWxlKTsKLX0KLQotZmxvYXQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjo6b3V0ZXJCb3VuZGVkQ29udGVudHNTY2FsZShmbG9hdCBjc3NT
Y2FsZSkgY29uc3QKK2Zsb2F0IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6Om91dGVyQm91bmRlZFZp
ZXdwb3J0U2NhbGUoZmxvYXQgdmlld3BvcnRTY2FsZSkgY29uc3QKIHsKICAgICBpZiAobV9hbGxv
d3NVc2VyU2NhbGluZykgewogICAgICAgICAvLyBCb3VuZGVkIGJ5IFswLjEsIDEwLjBdIGxpa2Ug
dGhlIHZpZXdwb3J0IG1ldGEgY29kZSBpbiBXZWJDb3JlLgotICAgICAgICBmbG9hdCBoYXJkTWlu
ID0gc3RkOjptYXg8ZmxvYXQ+KDAuMSwgMC41ICogbV9taW5pbXVtU2NhbGUpOwotICAgICAgICBm
bG9hdCBoYXJkTWF4ID0gc3RkOjptaW48ZmxvYXQ+KDEwLCAyICogbV9tYXhpbXVtU2NhbGUpOwot
ICAgICAgICByZXR1cm4gYm91bmQoaGFyZE1pbiwgY3NzU2NhbGUsIGhhcmRNYXgpOworICAgICAg
ICBmbG9hdCBoYXJkTWluID0gdG9WaWV3cG9ydFNjYWxlKHN0ZDo6bWF4PGZsb2F0PigwLjEsIDAu
NSAqIG1fbWluaW11bVNjYWxlVG9GaXQpKTsKKyAgICAgICAgZmxvYXQgaGFyZE1heCA9IHRvVmll
d3BvcnRTY2FsZShzdGQ6Om1pbjxmbG9hdD4oMTAsIDIgKiBtX3Jhd0F0dHJpYnV0ZXMubWF4aW11
bVNjYWxlKSk7CisgICAgICAgIHJldHVybiBib3VuZChoYXJkTWluLCB2aWV3cG9ydFNjYWxlLCBo
YXJkTWF4KTsKICAgICB9Ci0gICAgcmV0dXJuIGlubmVyQm91bmRlZENvbnRlbnRzU2NhbGUoY3Nz
U2NhbGUpOworICAgIHJldHVybiBpbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKHZpZXdwb3J0U2Nh
bGUpOworfQorCitmbG9hdCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkZXZpY2VQaXhlbFJhdGlv
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9y
KCk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNT
aXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCkBAIC0xMjQsMTcgKzExNyw3IEBAIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IEludFNpemUm
IG5ld1NpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGVudHNTaXplID0gbmV3U2l6
ZTsKLQotICAgIGZsb2F0IG1pbmltdW1TY2FsZSA9IFdlYkNvcmU6OmNvbXB1dGVNaW5pbXVtU2Nh
bGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKG1fcmF3QXR0cmlidXRlcywgV2ViQ29yZTo6cm91
bmRlZEludFNpemUobV92aWV3cG9ydFNpemUpLCBuZXdTaXplKTsKLQotICAgIGlmICghZnV6enlD
b21wYXJlKG1pbmltdW1TY2FsZSwgbV9yYXdBdHRyaWJ1dGVzLm1pbmltdW1TY2FsZSwgMC4wMDEp
KSB7Ci0gICAgICAgIG1fbWluaW11bVNjYWxlID0gbWluaW11bVNjYWxlOwotCi0gICAgICAgIGlm
ICghbV9oYWRVc2VySW50ZXJhY3Rpb24gJiYgIWhhc1N1c3BlbmRlZENvbnRlbnQoKSkKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5zZXRDb250ZW50c1NjYWxlKGNvbnZlcnRUb1ZpZXdwb3J0KG1pbmlt
dW1TY2FsZSksIHRydWUgLyogaXNJbml0aWFsU2NhbGUgKi8pOwotCi0gICAgICAgIG1fY2xpZW50
LT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoKTsKLSAgICB9CisgICAgdXBkYXRlTWluaW11
bVNjYWxlVG9GaXQoKTsKIAogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoKTsK
IH0KQEAgLTE5MywxMCArMTc2LDggQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRD
aGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnQKICAgICBtX3Jh
d0F0dHJpYnV0ZXMgPSBuZXdBdHRyaWJ1dGVzOwogICAgIFdlYkNvcmU6OnJlc3RyaWN0U2NhbGVG
YWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKG1fcmF3QXR0cmlidXRlcyk7CiAK
LSAgICBtX2RldmljZVBpeGVsUmF0aW8gPSBtX3dlYlBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKICAgICBtX2FsbG93c1VzZXJTY2FsaW5nID0gISFtX3Jhd0F0dHJpYnV0ZXMudXNlclNj
YWxhYmxlOwotICAgIG1fbWluaW11bVNjYWxlID0gbV9yYXdBdHRyaWJ1dGVzLm1pbmltdW1TY2Fs
ZTsKLSAgICBtX21heGltdW1TY2FsZSA9IG1fcmF3QXR0cmlidXRlcy5tYXhpbXVtU2NhbGU7Cisg
ICAgdXBkYXRlTWluaW11bVNjYWxlVG9GaXQoKTsKIAogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VW
aWV3cG9ydEF0dHJpYnV0ZXMoKTsKIH0KQEAgLTIxNCw3ICsxOTUsNyBAQCB2b2lkIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRlbnQoKQogewogICAgIGlmICghbV9yYXdBdHRyaWJ1
dGVzLmxheW91dFNpemUuaXNFbXB0eSgpICYmIG1fcmF3QXR0cmlidXRlcy5pbml0aWFsU2NhbGUg
PiAwKSB7CiAgICAgICAgIG1faGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7Ci0gICAgICAgIG1f
Y2xpZW50LT5zZXRDb250ZW50c1NjYWxlKGNvbnZlcnRUb1ZpZXdwb3J0KGlubmVyQm91bmRlZENv
bnRlbnRzU2NhbGUobV9yYXdBdHRyaWJ1dGVzLmluaXRpYWxTY2FsZSkpLCAvKiBpc0luaXRpYWxT
Y2FsZSAqLyB0cnVlKTsKKyAgICAgICAgbV9jbGllbnQtPnNldENvbnRlbnRzU2NhbGUoaW5uZXJC
b3VuZGVkVmlld3BvcnRTY2FsZSh0b1ZpZXdwb3J0U2NhbGUobV9yYXdBdHRyaWJ1dGVzLmluaXRp
YWxTY2FsZSkpLCAvKiBpc0luaXRpYWxTY2FsZSAqLyB0cnVlKTsKICAgICAgICAgbV9yYXdBdHRy
aWJ1dGVzLmluaXRpYWxTY2FsZSA9IC0xOyAvLyBNYXJrIHVzZWQuCiAgICAgfQogCkBAIC0yMjcs
NiArMjA4LDIwIEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cmVzdW1lQ29udGVudCgp
CiAgICAgbV93ZWJQYWdlUHJveHktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KCk7CiB9CiAKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dXBkYXRlTWluaW11bVNjYWxl
VG9GaXQoKQoreworICAgIGZsb2F0IG1pbmltdW1TY2FsZSA9IFdlYkNvcmU6OmNvbXB1dGVNaW5p
bXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKG1fcmF3QXR0cmlidXRlcywgV2ViQ29y
ZTo6cm91bmRlZEludFNpemUobV92aWV3cG9ydFNpemUpLCBXZWJDb3JlOjpyb3VuZGVkSW50U2l6
ZShtX2NvbnRlbnRzU2l6ZSkpOworCisgICAgaWYgKCFmdXp6eUNvbXBhcmUobWluaW11bVNjYWxl
LCBtX21pbmltdW1TY2FsZVRvRml0LCAwLjAwMSkpIHsKKyAgICAgICAgbV9taW5pbXVtU2NhbGVU
b0ZpdCA9IG1pbmltdW1TY2FsZTsKKworICAgICAgICBpZiAoIW1faGFkVXNlckludGVyYWN0aW9u
ICYmICFoYXNTdXNwZW5kZWRDb250ZW50KCkpCisgICAgICAgICAgICBtX2NsaWVudC0+c2V0Q29u
dGVudHNTY2FsZSh0b1ZpZXdwb3J0U2NhbGUobWluaW11bVNjYWxlKSwgdHJ1ZSAvKiBpc0luaXRp
YWxTY2FsZSAqLyk7CisKKyAgICAgICAgbV9jbGllbnQtPmRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlcygpOworICAgIH0KK30KKwogRmxvYXRSZWN0IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBv
c2l0aW9uUmFuZ2VGb3JDb250ZW50QXRTY2FsZShmbG9hdCB2aWV3cG9ydFNjYWxlKSBjb25zdAog
ewogICAgIGNvbnN0IEZsb2F0U2l6ZSBjb250ZW50U2l6ZSA9IG1fY29udGVudHNTaXplICogdmll
d3BvcnRTY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5oCmluZGV4IDE4MjBkOGQ2OTliZDRlYWI1MjcyYWEyYzY5ZDQwYWI0ODI4ZTE0
NDQuLjFkNzM3ODRmMzA5N2I4NTM4YTQ4MGYyZGY1YzI0NGI2ZDA3OGFiNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNzYs
MjIgKzc2LDE4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBwb3NpdGlvblJh
bmdlRm9yQ29udGVudEF0U2NhbGUoZmxvYXQgdmlld3BvcnRTY2FsZSkgY29uc3Q7CiAKLSAgICBm
bG9hdCBjb252ZXJ0RnJvbVZpZXdwb3J0KGZsb2F0IHZhbHVlKSBjb25zdCB7IHJldHVybiB2YWx1
ZSAvIG1fZGV2aWNlUGl4ZWxSYXRpbzsgfQotICAgIGZsb2F0IGNvbnZlcnRUb1ZpZXdwb3J0KGZs
b2F0IHZhbHVlKSBjb25zdCB7IHJldHVybiB2YWx1ZSAqIG1fZGV2aWNlUGl4ZWxSYXRpbzsgfQot
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9WaWV3cG9ydChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKSBjb25zdDsKLQotICAgIGZsb2F0IGlubmVyQm91bmRlZENvbnRlbnRzU2NhbGUo
ZmxvYXQpIGNvbnN0OwotICAgIGZsb2F0IG91dGVyQm91bmRlZENvbnRlbnRzU2NhbGUoZmxvYXQp
IGNvbnN0OworICAgIGZsb2F0IGlubmVyQm91bmRlZFZpZXdwb3J0U2NhbGUoZmxvYXQpIGNvbnN0
OworICAgIGZsb2F0IG91dGVyQm91bmRlZFZpZXdwb3J0U2NhbGUoZmxvYXQpIGNvbnN0OwogCiAg
ICAgYm9vbCBoYXNTdXNwZW5kZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNTdXNwZW5k
ZWRDb250ZW50OyB9CiAgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2hhZFVzZXJJbnRlcmFjdGlvbjsgfQogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxpbmcoKSBj
b25zdCB7IHJldHVybiBtX2FsbG93c1VzZXJTY2FsaW5nOyB9CiAKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgY29udGVudHNMYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXdBdHRyaWJ1dGVz
LmxheW91dFNpemU7IH0KLSAgICBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QgeyByZXR1
cm4gbV9kZXZpY2VQaXhlbFJhdGlvOyB9Ci0gICAgZmxvYXQgbWluaW11bUNvbnRlbnRzU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX21pbmltdW1TY2FsZTsgfQotICAgIGZsb2F0IG1heGltdW1Db250
ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtU2NhbGU7IH0KLSAgICBmbG9hdCBj
dXJyZW50Q29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRGcm9tVmlld3BvcnQo
bV9lZmZlY3RpdmVTY2FsZSk7IH0KKyAgICBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7
CisgICAgZmxvYXQgbWluaW11bUNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX21pbmlt
dW1TY2FsZVRvRml0OyB9CisgICAgZmxvYXQgbWF4aW11bUNvbnRlbnRzU2NhbGUoKSBjb25zdCB7
IHJldHVybiBtX3Jhd0F0dHJpYnV0ZXMubWF4aW11bVNjYWxlOyB9CisgICAgZmxvYXQgY3VycmVu
dENvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVybiBmcm9tVmlld3BvcnRTY2FsZShtX2VmZmVj
dGl2ZVNjYWxlKTsgfQogCiAgICAgdm9pZCBzZXRIYWRVc2VySW50ZXJhY3Rpb24oYm9vbCBkaWRV
c2VySW50ZXJhY3QpIHsgbV9oYWRVc2VySW50ZXJhY3Rpb24gPSBkaWRVc2VySW50ZXJhY3Q7IH0K
IApAQCAtMTA1LDcgKzEwMSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY3NzUG9zaXRpb24pOwogCiBwcml2YXRlOgor
ICAgIGZsb2F0IGZyb21WaWV3cG9ydFNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdCB7IHJldHVybiBz
Y2FsZSAvIGRldmljZVBpeGVsUmF0aW8oKTsgfQorICAgIGZsb2F0IHRvVmlld3BvcnRTY2FsZShm
bG9hdCBzY2FsZSkgY29uc3QgeyByZXR1cm4gc2NhbGUgKiBkZXZpY2VQaXhlbFJhdGlvKCk7IH0K
ICAgICB2b2lkIHN5bmNWaXNpYmxlQ29udGVudHMoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCAm
dHJhamVjdG9yeVZlY3RvciA9IFdlYkNvcmU6OkZsb2F0UG9pbnQ6Onplcm8oKSk7CisgICAgdm9p
ZCB1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdCgpOwogCiAgICAgV2ViUGFnZVByb3h5KiBjb25zdCBt
X3dlYlBhZ2VQcm94eTsKICAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KiBtX2NsaWVu
dDsKQEAgLTExMyw5ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyBtX3Jhd0F0dHJpYnV0ZXM7CiAKICAgICBib29sIG1fYWxsb3dzVXNlclNjYWxpbmc7
Ci0gICAgZmxvYXQgbV9taW5pbXVtU2NhbGU7Ci0gICAgZmxvYXQgbV9tYXhpbXVtU2NhbGU7Ci0g
ICAgZmxvYXQgbV9kZXZpY2VQaXhlbFJhdGlvOworICAgIGZsb2F0IG1fbWluaW11bVNjYWxlVG9G
aXQ7CiAKICAgICBpbnQgbV9hY3RpdmVEZWZlcnJlckNvdW50OwogICAgIGJvb2wgbV9oYXNTdXNw
ZW5kZWRDb250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcAppbmRleCAxMGZjZjAyMWMz
MjhjN2Y5MWY0YzQ4ZDEyNTlkZjg3ZWIxNmQyODdjLi42MmYxZWQ1YWY0YTk5NDY0NzRhNzg5NjAx
NDFlMTMwMTJhNmY1MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcApAQCAtMTg1LDM0
ICsxODUsMzMgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZvY3VzRWRp
dGFibGVBcmVhKGNvbnN0IFFSZWN0RiYgY2FyZXRBcmVhLAogICAgIC8vIFRoaXMgY2FuIG9ubHkg
aGFwcGVuIGFzIGEgcmVzdWx0IG9mIGEgdXNlciBpbnRlcmFjdGlvbi4KICAgICBBU1NFUlQobV9j
b250cm9sbGVyLT5oYWRVc2VySW50ZXJhY3Rpb24oKSk7CiAKLSAgICBRUmVjdEYgZW5kQXJlYSA9
IG1fY29udHJvbGxlci0+Y29udmVydFRvVmlld3BvcnQodGFyZ2V0QXJlYSk7Ci0KLSAgICBxcmVh
bCBlbmRJdGVtU2NhbGUgPSBtX2NvbnRyb2xsZXItPmNvbnZlcnRUb1ZpZXdwb3J0KG1fY29udHJv
bGxlci0+aW5uZXJCb3VuZGVkQ29udGVudHNTY2FsZSgyLjApKTsKKyAgICBjb25zdCBmbG9hdCBl
ZGl0aW5nRml4ZWRTY2FsZSA9IDIgKiBtX2NvbnRyb2xsZXItPmRldmljZVBpeGVsUmF0aW8oKTsK
KyAgICBmbG9hdCB0YXJnZXRTY2FsZSA9IG1fY29udHJvbGxlci0+aW5uZXJCb3VuZGVkVmlld3Bv
cnRTY2FsZShlZGl0aW5nRml4ZWRTY2FsZSk7CiAgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0UmVj
dCA9IG1fdmlld3BvcnRJdGVtLT5ib3VuZGluZ1JlY3QoKTsKIAogICAgIHFyZWFsIHg7Ci0gICAg
Y29uc3QgcXJlYWwgYm9yZGVyT2Zmc2V0ID0gMTA7Ci0gICAgaWYgKChlbmRBcmVhLndpZHRoKCkg
KyBib3JkZXJPZmZzZXQpICogZW5kSXRlbVNjYWxlIDw9IHZpZXdwb3J0UmVjdC53aWR0aCgpKSB7
CisgICAgY29uc3QgcXJlYWwgYm9yZGVyT2Zmc2V0ID0gMTAgKiBtX2NvbnRyb2xsZXItPmRldmlj
ZVBpeGVsUmF0aW8oKTsKKyAgICBpZiAoKHRhcmdldEFyZWEud2lkdGgoKSArIGJvcmRlck9mZnNl
dCkgKiB0YXJnZXRTY2FsZSA8PSB2aWV3cG9ydFJlY3Qud2lkdGgoKSkgewogICAgICAgICAvLyBD
ZW50ZXIgdGhlIGlucHV0IGZpZWxkIGluIHRoZSBtaWRkbGUgb2YgdGhlIHZpZXcsIGlmIGl0IGlz
IHNtYWxsZXIgdGhhbgogICAgICAgICAvLyB0aGUgdmlldyBhdCB0aGUgc2NhbGUgdGFyZ2V0Lgot
ICAgICAgICB4ID0gdmlld3BvcnRSZWN0LmNlbnRlcigpLngoKSAtIGVuZEFyZWEud2lkdGgoKSAq
IGVuZEl0ZW1TY2FsZSAvIDIuMDsKKyAgICAgICAgeCA9IHZpZXdwb3J0UmVjdC5jZW50ZXIoKS54
KCkgLSB0YXJnZXRBcmVhLndpZHRoKCkgKiB0YXJnZXRTY2FsZSAvIDIuMDsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgY2FyZXQgYWx3YXlzIGhhcyBib3JkZXJPZmZz
ZXQgY29udGVudHMgcGl4ZWxzIHRvIHRoZSByaWdodAogICAgICAgICAvLyBvZiBpdCwgYW5kIHNl
Y29uZGFyaWx5IChpZiBwb3NzaWJsZSksIHRoYXQgdGhlIGFyZWEgaGFzIGJvcmRlck9mZnNldAog
ICAgICAgICAvLyBjb250ZW50cyBwaXhlbHMgdG8gdGhlIGxlZnQgb2YgaXQuCi0gICAgICAgIHFy
ZWFsIGNhcmV0T2Zmc2V0ID0gbV9jb250cm9sbGVyLT5jb252ZXJ0VG9WaWV3cG9ydChjYXJldEFy
ZWEueCgpKSAtIGVuZEFyZWEueCgpOwotICAgICAgICB4ID0gcU1pbih2aWV3cG9ydFJlY3Qud2lk
dGgoKSAtIChjYXJldE9mZnNldCArIGJvcmRlck9mZnNldCkgKiBlbmRJdGVtU2NhbGUsIGJvcmRl
ck9mZnNldCAqIGVuZEl0ZW1TY2FsZSk7CisgICAgICAgIHFyZWFsIGNhcmV0T2Zmc2V0ID0gY2Fy
ZXRBcmVhLngoKSAtIHRhcmdldEFyZWEueCgpOworICAgICAgICB4ID0gcU1pbih2aWV3cG9ydFJl
Y3Qud2lkdGgoKSAtIChjYXJldE9mZnNldCArIGJvcmRlck9mZnNldCkgKiB0YXJnZXRTY2FsZSwg
Ym9yZGVyT2Zmc2V0ICogdGFyZ2V0U2NhbGUpOwogICAgIH0KIAotICAgIGNvbnN0IFFQb2ludEYg
aG90c3BvdCA9IFFQb2ludEYoZW5kQXJlYS54KCksIGVuZEFyZWEuY2VudGVyKCkueSgpKTsKKyAg
ICBjb25zdCBRUG9pbnRGIGhvdHNwb3QgPSBRUG9pbnRGKHRhcmdldEFyZWEueCgpLCB0YXJnZXRB
cmVhLmNlbnRlcigpLnkoKSk7CiAgICAgY29uc3QgUVBvaW50RiB2aWV3cG9ydEhvdHNwb3QgPSBR
UG9pbnRGKHgsIC8qIEZJWE1FOiB2aXNpYmxlQ2VudGVyICovIHZpZXdwb3J0UmVjdC5jZW50ZXIo
KS55KCkpOwogCi0gICAgUVBvaW50RiBlbmRQb3NpdGlvbiA9IGhvdHNwb3QgKiBlbmRJdGVtU2Nh
bGUgLSB2aWV3cG9ydEhvdHNwb3Q7Ci0gICAgUVJlY3RGIGVuZFBvc1JhbmdlID0gbV9jb250cm9s
bGVyLT5wb3NpdGlvblJhbmdlRm9yQ29udGVudEF0U2NhbGUoZW5kSXRlbVNjYWxlKTsKKyAgICBR
UG9pbnRGIGVuZFBvc2l0aW9uID0gaG90c3BvdCAqIHRhcmdldFNjYWxlIC0gdmlld3BvcnRIb3Rz
cG90OworICAgIFFSZWN0RiBlbmRQb3NSYW5nZSA9IG1fY29udHJvbGxlci0+cG9zaXRpb25SYW5n
ZUZvckNvbnRlbnRBdFNjYWxlKHRhcmdldFNjYWxlKTsKIAogICAgIGVuZFBvc2l0aW9uID0gYm91
bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIGVuZFBvc2l0aW9uLCBlbmRQb3NSYW5n
ZS5ib3R0b21SaWdodCgpKTsKIAotICAgIFFSZWN0RiBlbmRWaXNpYmxlQ29udGVudFJlY3QoZW5k
UG9zaXRpb24gLyBlbmRJdGVtU2NhbGUsIHZpZXdwb3J0UmVjdC5zaXplKCkgLyBlbmRJdGVtU2Nh
bGUpOworICAgIFFSZWN0RiBlbmRWaXNpYmxlQ29udGVudFJlY3QoZW5kUG9zaXRpb24gLyB0YXJn
ZXRTY2FsZSwgdmlld3BvcnRSZWN0LnNpemUoKSAvIHRhcmdldFNjYWxlKTsKIAogICAgIGFuaW1h
dGVDb250ZW50UmVjdFZpc2libGUoZW5kVmlzaWJsZUNvbnRlbnRSZWN0KTsKIH0KQEAgLTIyOCwy
OCArMjI3LDI4IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojp6b29tVG9B
cmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoCiAgICAgaWYgKG1fY29udHJvbGxl
ci0+aGFzU3VzcGVuZGVkQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBp
bnQgbWFyZ2luID0gMTA7IC8vIFdlIHdhbnQgYXQgbGVhc3QgYSBsaXR0bGUgYml0IG9mIG1hcmdp
bi4KLSAgICBRUmVjdEYgZW5kQXJlYSA9IG1fY29udHJvbGxlci0+Y29udmVydFRvVmlld3BvcnQo
dGFyZ2V0QXJlYS5hZGp1c3RlZCgtbWFyZ2luLCAtbWFyZ2luLCBtYXJnaW4sIG1hcmdpbikpOwor
ICAgIGNvbnN0IGZsb2F0IG1hcmdpbiA9IDEwICogbV9jb250cm9sbGVyLT5kZXZpY2VQaXhlbFJh
dGlvKCk7IC8vIFdlIHdhbnQgYXQgbGVhc3QgYSBsaXR0bGUgYml0IG9mIG1hcmdpbi4KKyAgICBR
UmVjdEYgZW5kQXJlYSA9IHRhcmdldEFyZWEuYWRqdXN0ZWQoLW1hcmdpbiwgLW1hcmdpbiwgbWFy
Z2luLCBtYXJnaW4pOwogCiAgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0UmVjdCA9IG1fdmlld3Bv
cnRJdGVtLT5ib3VuZGluZ1JlY3QoKTsKIAotICAgIHFyZWFsIHRhcmdldENTU1NjYWxlID0gdmll
d3BvcnRSZWN0LnNpemUoKS53aWR0aCgpIC8gZW5kQXJlYS5zaXplKCkud2lkdGgoKTsKLSAgICBx
cmVhbCBlbmRDU1NTY2FsZSA9IG1fY29udHJvbGxlci0+aW5uZXJCb3VuZGVkQ29udGVudHNTY2Fs
ZShxTWluKHRhcmdldENTU1NjYWxlLCBxcmVhbCgyLjUpKSk7Ci0gICAgcXJlYWwgZW5kSXRlbVNj
YWxlID0gbV9jb250cm9sbGVyLT5jb252ZXJ0VG9WaWV3cG9ydChlbmRDU1NTY2FsZSk7CisgICAg
cXJlYWwgbWluVmlld3BvcnRTY2FsZSA9IHFyZWFsKDIuNSkgKiBtX2NvbnRyb2xsZXItPmRldmlj
ZVBpeGVsUmF0aW8oKTsKKyAgICBxcmVhbCB0YXJnZXRTY2FsZSA9IHZpZXdwb3J0UmVjdC5zaXpl
KCkud2lkdGgoKSAvIGVuZEFyZWEuc2l6ZSgpLndpZHRoKCk7CisgICAgdGFyZ2V0U2NhbGUgPSBt
X2NvbnRyb2xsZXItPmlubmVyQm91bmRlZFZpZXdwb3J0U2NhbGUocU1pbihtaW5WaWV3cG9ydFNj
YWxlLCB0YXJnZXRTY2FsZSkpOwogICAgIHFyZWFsIGN1cnJlbnRTY2FsZSA9IG1fcGFnZUl0ZW0t
PmNvbnRlbnRzU2NhbGUoKTsKIAogICAgIC8vIFdlIHdhbnQgdG8gZW5kIHVwIHdpdGggdGhlIHRh
cmdldCBhcmVhIGZpbGxpbmcgdGhlIHdob2xlIHdpZHRoIG9mIHRoZSB2aWV3cG9ydCAoaWYgcG9z
c2libGUpLAogICAgIC8vIGFuZCBjZW50cmFsaXplZCB2ZXJ0aWNhbGx5IHdoZXJlIHRoZSB1c2Vy
IHJlcXVlc3RlZCB6b29tLiBUaHVzIG91ciBob3RzcG90IGlzIHRoZSBjZW50ZXIgb2YKICAgICAv
LyB0aGUgdGFyZ2V0QXJlYSB4LXdpc2UgYW5kIHRoZSByZXF1ZXN0ZWQgem9vbSBwb3NpdGlvbiwg
eS13aXNlLgotICAgIGNvbnN0IFFQb2ludEYgaG90c3BvdCA9IFFQb2ludEYoZW5kQXJlYS5jZW50
ZXIoKS54KCksIG1fY29udHJvbGxlci0+Y29udmVydFRvVmlld3BvcnQodG91Y2hQb2ludC55KCkp
KTsKKyAgICBjb25zdCBRUG9pbnRGIGhvdHNwb3QgPSBRUG9pbnRGKGVuZEFyZWEuY2VudGVyKCku
eCgpLCB0b3VjaFBvaW50LnkoKSk7CiAgICAgY29uc3QgUVBvaW50RiB2aWV3cG9ydEhvdHNwb3Qg
PSB2aWV3cG9ydFJlY3QuY2VudGVyKCk7CiAKLSAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0gaG90
c3BvdCAqIGVuZENTU1NjYWxlIC0gdmlld3BvcnRIb3RzcG90OworICAgIFFQb2ludEYgZW5kUG9z
aXRpb24gPSBob3RzcG90ICogdGFyZ2V0U2NhbGUgLSB2aWV3cG9ydEhvdHNwb3Q7CiAKLSAgICBR
UmVjdEYgZW5kUG9zUmFuZ2UgPSBtX2NvbnRyb2xsZXItPnBvc2l0aW9uUmFuZ2VGb3JDb250ZW50
QXRTY2FsZShlbmRJdGVtU2NhbGUpOworICAgIFFSZWN0RiBlbmRQb3NSYW5nZSA9IG1fY29udHJv
bGxlci0+cG9zaXRpb25SYW5nZUZvckNvbnRlbnRBdFNjYWxlKHRhcmdldFNjYWxlKTsKICAgICBl
bmRQb3NpdGlvbiA9IGJvdW5kUG9zaXRpb24oZW5kUG9zUmFuZ2UudG9wTGVmdCgpLCBlbmRQb3Np
dGlvbiwgZW5kUG9zUmFuZ2UuYm90dG9tUmlnaHQoKSk7CiAKLSAgICBRUmVjdEYgZW5kVmlzaWJs
ZUNvbnRlbnRSZWN0KGVuZFBvc2l0aW9uIC8gZW5kSXRlbVNjYWxlLCB2aWV3cG9ydFJlY3Quc2l6
ZSgpIC8gZW5kSXRlbVNjYWxlKTsKKyAgICBRUmVjdEYgZW5kVmlzaWJsZUNvbnRlbnRSZWN0KGVu
ZFBvc2l0aW9uIC8gdGFyZ2V0U2NhbGUsIHZpZXdwb3J0UmVjdC5zaXplKCkgLyB0YXJnZXRTY2Fs
ZSk7CiAKICAgICBlbnVtIHsgWm9vbUluLCBab29tQmFjaywgWm9vbU91dCwgTm9ab29tIH0gem9v
bUFjdGlvbiA9IFpvb21JbjsKIApAQCAtMjU3LDcgKzI1Niw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0Ojp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYm
IHRvdWNoCiAgICAgICAgIC8vIFpvb20gYmFjayBvdXQgaWYgYXR0ZW1wdGluZyB0byBzY2FsZSB0
byB0aGUgc2FtZSBjdXJyZW50IHNjYWxlLCBvcgogICAgICAgICAvLyBhdHRlbXB0aW5nIHRvIGNv
bnRpbnVlIHNjYWxpbmcgb3V0IGZyb20gdGhlIGlubmVyIG1vc3QgbGV2ZWwuCiAgICAgICAgIC8v
IFVzZSBmdXp6eSBjb21wYXJlIHdpdGggYSBmaXhlZCBlcnJvciB0byBiZSBhYmxlIHRvIGRlYWwg
d2l0aCBsYXJnaXNoIGRpZmZlcmVuY2VzIGR1ZSB0byBwaXhlbCByb3VuZGluZy4KLSAgICAgICAg
aWYgKGZ1enp5Q29tcGFyZShlbmRJdGVtU2NhbGUsIGN1cnJlbnRTY2FsZSwgMC4wMSkpIHsKKyAg
ICAgICAgaWYgKGZ1enp5Q29tcGFyZSh0YXJnZXRTY2FsZSwgY3VycmVudFNjYWxlLCAwLjAxKSkg
ewogICAgICAgICAgICAgLy8gSWYgbW92aW5nIHRoZSB2aWV3cG9ydCB3b3VsZCBleHBvc2UgbW9y
ZSBvZiB0aGUgdGFyZ2V0UmVjdCBhbmQgbW92ZSBhdCBsZWFzdCA0MCBwaXhlbHMsIHVwZGF0ZSBw
b3NpdGlvbiBidXQgZG8gbm90IHNjYWxlIG91dC4KICAgICAgICAgICAgIFFSZWN0RiBjdXJyZW50
Q29udGVudFJlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKICAgICAgICAgICAgIFFSZWN0RiB0
YXJnZXRJbnRlcnNlY3Rpb24gPSBlbmRWaXNpYmxlQ29udGVudFJlY3QuaW50ZXJzZWN0ZWQodGFy
Z2V0QXJlYSk7CkBAIC0yNjcsMzQgKzI2NiwzMyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRRdDo6em9vbVRvQXJlYUdlc3R1cmVFbmRlZChjb25zdCBRUG9pbnRGJiB0b3VjaAog
ICAgICAgICAgICAgICAgIHpvb21BY3Rpb24gPSBOb1pvb207CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgem9vbUFjdGlvbiA9IFpvb21CYWNrOwotICAgICAgICB9IGVsc2UgaWYg
KGZ1enp5Q29tcGFyZShlbmRJdGVtU2NhbGUsIG1fem9vbU91dFNjYWxlLCAwLjAxKSkKKyAgICAg
ICAgfSBlbHNlIGlmIChmdXp6eUNvbXBhcmUodGFyZ2V0U2NhbGUsIG1fem9vbU91dFNjYWxlLCAw
LjAxKSkKICAgICAgICAgICAgIHpvb21BY3Rpb24gPSBab29tQmFjazsKLSAgICAgICAgZWxzZSBp
ZiAoZW5kSXRlbVNjYWxlIDwgY3VycmVudFNjYWxlKQorICAgICAgICBlbHNlIGlmICh0YXJnZXRT
Y2FsZSA8IGN1cnJlbnRTY2FsZSkKICAgICAgICAgICAgIHpvb21BY3Rpb24gPSBab29tT3V0Owog
ICAgIH0KIAogICAgIHN3aXRjaCAoem9vbUFjdGlvbikgewogICAgIGNhc2UgWm9vbUluOgogICAg
ICAgICBtX3NjYWxlU3RhY2suYXBwZW5kKFNjYWxlU3RhY2tJdGVtKGN1cnJlbnRTY2FsZSwgbV92
aWV3cG9ydEl0ZW0tPmNvbnRlbnRQb3MoKS54KCkpKTsKLSAgICAgICAgbV96b29tT3V0U2NhbGUg
PSBlbmRJdGVtU2NhbGU7CisgICAgICAgIG1fem9vbU91dFNjYWxlID0gdGFyZ2V0U2NhbGU7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgWm9vbUJhY2s6IHsKICAgICAgICAgU2NhbGVTdGFja0l0
ZW0gbGFzdFNjYWxlID0gbV9zY2FsZVN0YWNrLnRha2VMYXN0KCk7Ci0gICAgICAgIGVuZEl0ZW1T
Y2FsZSA9IGxhc3RTY2FsZS5zY2FsZTsKLSAgICAgICAgZW5kQ1NTU2NhbGUgPSBtX2NvbnRyb2xs
ZXItPmNvbnZlcnRGcm9tVmlld3BvcnQobGFzdFNjYWxlLnNjYWxlKTsKKyAgICAgICAgdGFyZ2V0
U2NhbGUgPSBsYXN0U2NhbGUuc2NhbGU7CiAgICAgICAgIC8vIFJlY2FsY3VsYXRlIGVuZFBvc2l0
aW9uIGFuZCBib3VuZCBpdCBhY2NvcmRpbmcgdG8gbmV3IHNjYWxlLgotICAgICAgICBlbmRQb3Np
dGlvbi5zZXRZKGhvdHNwb3QueSgpICogZW5kQ1NTU2NhbGUgLSB2aWV3cG9ydEhvdHNwb3QueSgp
KTsKKyAgICAgICAgZW5kUG9zaXRpb24uc2V0WShob3RzcG90LnkoKSAqIHRhcmdldFNjYWxlIC0g
dmlld3BvcnRIb3RzcG90LnkoKSk7CiAgICAgICAgIGVuZFBvc2l0aW9uLnNldFgobGFzdFNjYWxl
LnhQb3NpdGlvbik7Ci0gICAgICAgIGVuZFBvc1JhbmdlID0gbV9jb250cm9sbGVyLT5wb3NpdGlv
blJhbmdlRm9yQ29udGVudEF0U2NhbGUoZW5kSXRlbVNjYWxlKTsKKyAgICAgICAgZW5kUG9zUmFu
Z2UgPSBtX2NvbnRyb2xsZXItPnBvc2l0aW9uUmFuZ2VGb3JDb250ZW50QXRTY2FsZSh0YXJnZXRT
Y2FsZSk7CiAgICAgICAgIGVuZFBvc2l0aW9uID0gYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50
b3BMZWZ0KCksIGVuZFBvc2l0aW9uLCBlbmRQb3NSYW5nZS5ib3R0b21SaWdodCgpKTsKLSAgICAg
ICAgZW5kVmlzaWJsZUNvbnRlbnRSZWN0ID0gUVJlY3RGKGVuZFBvc2l0aW9uIC8gZW5kSXRlbVNj
YWxlLCB2aWV3cG9ydFJlY3Quc2l6ZSgpIC8gZW5kSXRlbVNjYWxlKTsKKyAgICAgICAgZW5kVmlz
aWJsZUNvbnRlbnRSZWN0ID0gUVJlY3RGKGVuZFBvc2l0aW9uIC8gdGFyZ2V0U2NhbGUsIHZpZXdw
b3J0UmVjdC5zaXplKCkgLyB0YXJnZXRTY2FsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIFpvb21PdXQ6CiAgICAgICAgIC8vIFVuc3RhY2sgYWxsIHNjYWxlLWxldmVscyBkZWVw
ZXIgdGhhbiB0aGUgbmV3IGxldmVsLCBzbyBhIHpvb20tYmFjayB3b24ndCBlbmQgdXAgem9vbWlu
ZyBpbi4KLSAgICAgICAgd2hpbGUgKCFtX3NjYWxlU3RhY2suaXNFbXB0eSgpICYmIG1fc2NhbGVT
dGFjay5sYXN0KCkuc2NhbGUgPj0gZW5kSXRlbVNjYWxlKQorICAgICAgICB3aGlsZSAoIW1fc2Nh
bGVTdGFjay5pc0VtcHR5KCkgJiYgbV9zY2FsZVN0YWNrLmxhc3QoKS5zY2FsZSA+PSB0YXJnZXRT
Y2FsZSkKICAgICAgICAgICAgIG1fc2NhbGVTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIG1f
em9vbU91dFNjYWxlID0gZW5kSXRlbVNjYWxlOworICAgICAgICBtX3pvb21PdXRTY2FsZSA9IHRh
cmdldFNjYWxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vWm9vbToKICAgICAgICAgYnJl
YWs7CkBAIC0zMDUsMTcgKzMwMywxNiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRRdDo6em9vbVRvQXJlYUdlc3R1cmVFbmRlZChjb25zdCBRUG9pbnRGJiB0b3VjaAogCiBRUmVj
dEYgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpuZWFyZXN0VmFsaWRWaXNpYmxlQ29u
dGVudHNSZWN0KCkgY29uc3QKIHsKLSAgICBmbG9hdCBjc3NTY2FsZSA9IG1fY29udHJvbGxlci0+
Y29udmVydEZyb21WaWV3cG9ydChtX3BhZ2VJdGVtLT5jb250ZW50c1NjYWxlKCkpOwotICAgIGZs
b2F0IGVuZEl0ZW1TY2FsZSA9IG1fY29udHJvbGxlci0+Y29udmVydFRvVmlld3BvcnQobV9jb250
cm9sbGVyLT5pbm5lckJvdW5kZWRDb250ZW50c1NjYWxlKGNzc1NjYWxlKSk7CisgICAgZmxvYXQg
dGFyZ2V0U2NhbGUgPSBtX2NvbnRyb2xsZXItPmlubmVyQm91bmRlZFZpZXdwb3J0U2NhbGUobV9w
YWdlSXRlbS0+Y29udGVudHNTY2FsZSgpKTsKIAogICAgIGNvbnN0IFFSZWN0RiB2aWV3cG9ydFJl
Y3QgPSBtX3ZpZXdwb3J0SXRlbS0+Ym91bmRpbmdSZWN0KCk7CiAgICAgUVBvaW50RiB2aWV3cG9y
dEhvdHNwb3QgPSB2aWV3cG9ydFJlY3QuY2VudGVyKCk7Ci0gICAgUVBvaW50RiBlbmRQb3NpdGlv
biA9IG1fdmlld3BvcnRJdGVtLT5tYXBUb1dlYkNvbnRlbnQodmlld3BvcnRIb3RzcG90KSAqIGVu
ZEl0ZW1TY2FsZSAtIHZpZXdwb3J0SG90c3BvdDsKKyAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0g
bV92aWV3cG9ydEl0ZW0tPm1hcFRvV2ViQ29udGVudCh2aWV3cG9ydEhvdHNwb3QpICogdGFyZ2V0
U2NhbGUgLSB2aWV3cG9ydEhvdHNwb3Q7CiAKLSAgICBGbG9hdFJlY3QgZW5kUG9zUmFuZ2UgPSBt
X2NvbnRyb2xsZXItPnBvc2l0aW9uUmFuZ2VGb3JDb250ZW50QXRTY2FsZShlbmRJdGVtU2NhbGUp
OworICAgIEZsb2F0UmVjdCBlbmRQb3NSYW5nZSA9IG1fY29udHJvbGxlci0+cG9zaXRpb25SYW5n
ZUZvckNvbnRlbnRBdFNjYWxlKHRhcmdldFNjYWxlKTsKICAgICBlbmRQb3NpdGlvbiA9IGJvdW5k
UG9zaXRpb24oZW5kUG9zUmFuZ2UubWluWE1pbllDb3JuZXIoKSwgZW5kUG9zaXRpb24sIGVuZFBv
c1JhbmdlLm1heFhNYXhZQ29ybmVyKCkpOwogCi0gICAgUVJlY3RGIGVuZFZpc2libGVDb250ZW50
UmVjdChlbmRQb3NpdGlvbiAvIGVuZEl0ZW1TY2FsZSwgdmlld3BvcnRSZWN0LnNpemUoKSAvIGVu
ZEl0ZW1TY2FsZSk7CisgICAgUVJlY3RGIGVuZFZpc2libGVDb250ZW50UmVjdChlbmRQb3NpdGlv
biAvIHRhcmdldFNjYWxlLCB2aWV3cG9ydFJlY3Quc2l6ZSgpIC8gdGFyZ2V0U2NhbGUpOwogCiAg
ICAgcmV0dXJuIGVuZFZpc2libGVDb250ZW50UmVjdDsKIH0KQEAgLTM0Miw4ICszMzksOCBAQCB2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6c2V0Q29udGVudHNTY2FsZShmbG9h
dCBsb2NhbFNjYWxlLCBib29sIHRyZQogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
UXQ6OnNldENvbnRlbnRzUmVjdFRvTmVhcmVzdFZhbGlkQm91bmRzKCkKIHsKICAgICBWaWV3cG9y
dFVwZGF0ZURlZmVycmVyIGd1YXJkKG1fY29udHJvbGxlcik7Ci0gICAgZmxvYXQgdmFsaWRDU1NT
Y2FsZSA9IG1fY29udHJvbGxlci0+aW5uZXJCb3VuZGVkQ29udGVudHNTY2FsZShtX2NvbnRyb2xs
ZXItPmNvbnZlcnRGcm9tVmlld3BvcnQobV9wYWdlSXRlbS0+Y29udGVudHNTY2FsZSgpKSk7Ci0g
ICAgc2V0Q29udGVudFJlY3RWaXNpYmxlUG9zaXRpb25BdFNjYWxlKG5lYXJlc3RWYWxpZFZpc2li
bGVDb250ZW50c1JlY3QoKS50b3BMZWZ0KCksIG1fY29udHJvbGxlci0+Y29udmVydFRvVmlld3Bv
cnQodmFsaWRDU1NTY2FsZSkpOworICAgIGZsb2F0IHRhcmdldFNjYWxlID0gbV9jb250cm9sbGVy
LT5pbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKG1fcGFnZUl0ZW0tPmNvbnRlbnRzU2NhbGUoKSk7
CisgICAgc2V0Q29udGVudFJlY3RWaXNpYmxlUG9zaXRpb25BdFNjYWxlKG5lYXJlc3RWYWxpZFZp
c2libGVDb250ZW50c1JlY3QoKS50b3BMZWZ0KCksIHRhcmdldFNjYWxlKTsKIH0KIAogdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmRpZFJlc3VtZUNvbnRlbnQoKQpAQCAtNDQ5
LDEyICs0NDYsMTIgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnBpbmNo
R2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gIENoYW5nZXMgb2YgdGhlIGNlbnRlciBwb3NpdGlvbiBzaG91bGQgbW92ZSB0aGUg
cGFnZSBldmVuIGlmIHRoZSB6b29tIGZhY3RvciBkb2VzIG5vdCBjaGFuZ2UuCi0gICAgY29uc3Qg
cXJlYWwgY3NzU2NhbGUgPSBtX2NvbnRyb2xsZXItPmNvbnZlcnRGcm9tVmlld3BvcnQobV9waW5j
aFN0YXJ0U2NhbGUgKiB0b3RhbFNjYWxlRmFjdG9yKTsKKyAgICBjb25zdCBxcmVhbCBwaW5jaFNj
YWxlID0gbV9waW5jaFN0YXJ0U2NhbGUgKiB0b3RhbFNjYWxlRmFjdG9yOwogCiAgICAgLy8gQWxs
b3cgem9vbWluZyBvdXQgYmV5b25kIG1pbWltdW0gc2NhbGUgb24gcGFnZXMgdGhhdCBkbyBub3Qg
ZXhwbGljaXRseSBkaXNhbGxvdyBpdC4KLSAgICBjb25zdCBxcmVhbCB0YXJnZXRJdGVtU2NhbGUg
PSBtX2NvbnRyb2xsZXItPmNvbnZlcnRUb1ZpZXdwb3J0KG1fY29udHJvbGxlci0+b3V0ZXJCb3Vu
ZGVkQ29udGVudHNTY2FsZShjc3NTY2FsZSkpOworICAgIGNvbnN0IHFyZWFsIHRhcmdldFNjYWxl
ID0gbV9jb250cm9sbGVyLT5vdXRlckJvdW5kZWRWaWV3cG9ydFNjYWxlKHBpbmNoU2NhbGUpOwog
Ci0gICAgc2NhbGVDb250ZW50KHRhcmdldEl0ZW1TY2FsZSwgbV92aWV3cG9ydEl0ZW0tPm1hcFRv
V2ViQ29udGVudChwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcykpOworICAgIHNjYWxl
Q29udGVudCh0YXJnZXRTY2FsZSwgbV92aWV3cG9ydEl0ZW0tPm1hcFRvV2ViQ29udGVudChwaW5j
aENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcykpOwogCiAgICAgY29uc3QgUVBvaW50RiBwb3Np
dGlvbkRpZmYgPSBwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcyAtIG1fbGFzdFBpbmNo
Q2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzOwogICAgIG1fbGFzdFBpbmNoQ2VudGVySW5WaWV3
cG9ydENvb3JkaW5hdGVzID0gcGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>