<?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>21084</bug_id>
          
          <creation_ts>2008-09-24 17:23:34 -0700</creation_ts>
          <short_desc>Make concept of children cross-platform on ScrollView</short_desc>
          <delta_ts>2008-09-25 00:39:38 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>21083</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92637</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-24 17:23:34 -0700</bug_when>
    <thetext>Move the m_children member and children() accessors to FrameView, along with any methods of ScrollView that need to access children.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92673</commentid>
    <comment_count>1</comment_count>
      <attachid>23782</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-24 23:56:39 -0700</bug_when>
    <thetext>Created attachment 23782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92674</commentid>
    <comment_count>2</comment_count>
      <attachid>23783</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 00:01:52 -0700</bug_when>
    <thetext>Created attachment 23783
patch #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92676</commentid>
    <comment_count>3</comment_count>
      <attachid>23783</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-25 00:07:57 -0700</bug_when>
    <thetext>Comment on attachment 23783
patch #2

&gt;+        Reviewed by NOBODY (OOPS!).

I AM A SOMEBODY!

&gt;+        const HashSet&lt;Widget*&gt;* children() const { return &amp;m_children; }

Ick,  But I guess this has been here a while.

&gt;-        void removeChild(Widget*);
&gt;-
&gt;+        

Whitespace added.


Looks good.  I think the implementations of addChildPlatformWidget and removeChildPlatformWidget should assert that the widget is a platform widget, just to be safe.  

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92681</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 00:39:38 -0700</bug_when>
    <thetext>Fixed in r36886.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23782</attachid>
            <date>2008-09-24 23:56:39 -0700</date>
            <delta_ts>2008-09-25 00:01:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20043</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2ODg0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDgtMDkt
MjQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA4NAorCisgICAgICAgIE1ha2UgdGhlIG1f
Y2hpbGRyZW4gbWVtYmVyIG9mIFNjcm9sbFZpZXcgY3Jvc3MtcGxhdGZvcm0uICBDb25zb2xpZGF0
ZSBjaGlsZHJlbiBhZGQvcmVtb3ZlCisgICAgICAgIGZ1bmN0aW9uYWxpdHkuICBBZGQgcGxhdGZv
cm0gc3R1YnMgZm9yIGNvbm5lY3RpbmcvZGlzY29ubmVjdGluZyB0aGUgcGxhdGZvcm0gd2lkZ2V0
cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2hpbGRy
ZW4pOgorICAgICAgICAqIHBsYXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9TY3JvbGxWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmFkZENo
aWxkUGxhdGZvcm1XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cmVtb3Zl
Q2hpbGRQbGF0Zm9ybVdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpnZW9t
ZXRyeUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9ybVdpZGdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZFBsYXRmb3JtV2lkZ2V0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxWaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OmFkZENoaWxkUGxhdGZvcm1XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6cmVtb3ZlQ2hpbGRQbGF0Zm9ybVdpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Njcm9sbFZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Z2VvbWV0
cnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2hvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpoaWRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9TY3JvbGxWaWV3
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9ybVdp
ZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZFBsYXRmb3Jt
V2lkZ2V0KToKKwogMjAwOC0wOS0yNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBHTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBHTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzY4NzApCisrKyBH
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTU0NSw2ICsxNTQ1LDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggXAogCVdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5j
cHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgXAogCVdlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggXAog
CVdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwIFwKSW5kZXg6IFdlYkNvcmUucHJv
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiAzNjg3MCkKKysrIFdlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsNiArODI4LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgXAogICAgIHBsYXRmb3Jt
L3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
IFwKKyAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBcCiAjICAgIHBsYXRmb3JtL1NlYXJjaFBv
cHVwTWVudS5jcHAgXAogICAgIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAgICAgcGxh
dGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwKSW5kZXg6IFdlYkNvcmVTb3VyY2VzLmJr
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDM2ODcwKQorKysg
V2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsNiArNjk1LDcgQEAgVGhp
cyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBwbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAogICAgICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNz
aW9uLmNwcAogICAgICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisgICAgICAgIHBsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCiAgICAgICAgIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAogICAg
ICAgICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKICAgICAgICAgcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcApJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM2ODcw
KQorKysgV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMz
NTUsNiArMzM1NSwxMCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cU2Nyb2xsVHlw
ZXMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFNjcm9sbFZpZXcuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
U2Nyb2xsVmlldy5oIg0KIAkJCQk+DQpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMzY4NzApCisrKyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTM2OTEsNiArMzY5MSw3IEBACiAJCUJDMjNFNzZDMERBRTg4QTkwMDlG
REM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmNwcCAqLzsgfTsKIAkJQkMyM0VFOTIwREFFRDJCQzAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBEQTBEQUZG
NEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKKwkJQkMyNDQxQzQwRThCNjVE
MDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcu
Y3BwICovOyB9OwogCQlCQzJFRDU1NTBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkVE
NTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzJF
RDY1MDBDNkJDNDhDMDA5MjBCRkYgLyogSlNIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFRDY0RjBDNkJD
NDhDMDA5MjBCRkYgLyogSlNIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUJD
MkVENkJDMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZG
IC8qIEpTQXR0ckN1c3RvbS5jcHAgKi87IH07CkBAIC04MjA5LDYgKzgyMTAsNyBAQAogCQlCQzIz
RTc2QjBEQUU4OEE5MDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyM0VFOTEwREFFRDJCQzAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsVmlldy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAv
KiBKU0VsZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
RUQ2NEYwQzZCQzQ4QzAwOTIwQkZGIC8qIEpTSFRNTElGcmFtZUVsZW1lbnRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MSUZyYW1lRWxlbWVudEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQyRjAw
MDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNBdHRyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMTAwLDYgKzEzMTAyLDcgQEAKIAkJCQlCQzE0MDI4ODBFODM2ODA4MDAzMTk3MTcgLyogU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwICovLAogCQkJCUJDMTQwMjg5MEU4MzY4MDgwMDMxOTcx
NyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovLAogCQkJCTkzQzA5Qzg1MEIwNjU3QUEw
MDVBQkQ0RCAvKiBTY3JvbGxUeXBlcy5oICovLAorCQkJCUJDMjQ0MUMzMEU4QjY1RDAwMDU1MzIw
RiAvKiBTY3JvbGxWaWV3LmNwcCAqLywKIAkJCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyog
U2Nyb2xsVmlldy5oICovLAogCQkJCUFCNzE3MDg4MEIzMTE4MDgwMDE3MTIzRSAvKiBTZWFyY2hQ
b3B1cE1lbnUuaCAqLywKIAkJCQlCQzAxNEM3MjBDQzU1NzlEMDA5QzRCMjAgLyogU2VjdXJpdHlP
cmlnaW4uY3BwICovLApAQCAtMTc3MDQsNiArMTc3MDcsNyBAQAogCQkJCTA4QTQ4QTc5MEU4NkNG
OEMwMEUyMjVERCAvKiBFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzUwRTcwRDBFODc1MDBCMDAxODlGRkYgLyogSlNIVE1MQWxsQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0M0Mzg3ODBFODg2Q0M3MDA1MzNERDUgLyogSlNI
VE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDMjQ0MUM0MEU4
QjY1RDAwMDU1MzIwRiAvKiBTY3JvbGxWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1Njcm9sbFZpZXcuaAko
cmV2aXNpb24gMzY4NzApCisrKyBwbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiU2Nyb2xs
VHlwZXMuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAKICNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KQEAgLTU4LDYgKzU5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Nyb2xsVmlldygpOwogICAgICAgICB+
U2Nyb2xsVmlldygpOwogCisgICAgICAgIGNvbnN0IEhhc2hTZXQ8V2lkZ2V0Kj4qIGNoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICAgICAgdm9pZCBhZGRDaGlsZChX
aWRnZXQqKTsKKyAgICAgICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKKwogICAgICAgICBp
bnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7CiAgICAgICAgIGludCB2aXNpYmxlSGVpZ2h0KCkgY29u
c3Q7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKQEAgLTg2
LDkgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxiYXJNb2RlIGhT
Y3JvbGxiYXJNb2RlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc1Njcm9sbGFibGUoKTsKLSAg
ICAgICAgdm9pZCBhZGRDaGlsZChXaWRnZXQqKTsKLSAgICAgICAgdm9pZCByZW1vdmVDaGlsZChX
aWRnZXQqKTsKLQorICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZUNvbnRlbnRz
KGludCB3LCBpbnQgaCk7CiAgICAgICAgIAogICAgICAgICAvLyBFdmVudCBjb29yZGluYXRlcyBh
cmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiBhIHdpbmRvdyB0aGF0
IGNvbnRhaW5zCkBAIC0xNDUsNiArMTQ4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZvaWQgdXBkYXRlKCk7CiAKKyAgICBwcml2YXRlOgorICAgICAgICBI
YXNoU2V0PFdpZGdldCo+IG1fY2hpbGRyZW47CisKKyAgICAgICAgdm9pZCBhZGRDaGlsZFBsYXRm
b3JtV2lkZ2V0KFdpZGdldCopOworICAgICAgICB2b2lkIHJlbW92ZUNoaWxkUGxhdGZvcm1XaWRn
ZXQoV2lkZ2V0Kik7CisKICNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KICAg
ICBwdWJsaWM6CiAgICAgICAgIE5TVmlldyogZG9jdW1lbnRWaWV3KCkgY29uc3Q7CkBAIC0xNTQs
OSArMTYzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0o
TUFDKQotICAgIHB1YmxpYzoKLSAgICAgICAgSGFzaFNldDxXaWRnZXQqPiogY2hpbGRyZW4oKTsK
LQogICAgIHByaXZhdGU6CiAgICAgICAgIEludFNpemUgbWF4aW11bVNjcm9sbCgpIGNvbnN0Owog
I2VuZGlmCkluZGV4OiBwbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9X
aWRnZXQuaAkocmV2aXNpb24gMzY4NzApCisrKyBwbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFt
ZVZpZXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdp
blZpZXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZUZyb21QYXJlbnQoKTsKKyAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqIHZpZXcpOwogICAgIFNjcm9sbFZpZXcqIHBhcmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgU2Nyb2xsVmlldyogcm9vdCgpIGNv
bnN0OwpJbmRleDogcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAkocmV2aXNpb24gMzY4NzApCisrKyBwbGF0
Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NiwyMiArNDc2
LDE1IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RnJhbWVHZW9tZXRyeShjb25zdCAKICAgICBnZW9t
ZXRyeUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRnZXQqIGNo
aWxkKQordm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZFBsYXRmb3JtV2lkZ2V0KFdpZGdldCogY2hp
bGQpCiB7Ci0gICAgY2hpbGQtPnNldENvbnRhaW5pbmdXaW5kb3coY29udGFpbmluZ1dpbmRvdygp
KTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwotICAgIG1fZGF0YS0+Y2hpbGRyZW4uYWRk
KGNoaWxkKTsKLQotICAgIGlmIChjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSAmJiAhR1RLX0lTX1NP
Q0tFVChjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSkpCisgICAgaWYgKCFHVEtfSVNfU09DS0VUKGNo
aWxkLT5wbGF0Zm9ybVdpZGdldCgpKSkKICAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NP
TlRBSU5FUihjb250YWluaW5nV2luZG93KCkpLCBjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSk7CiB9
CiAKLXZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKK3ZvaWQgU2Ny
b2xsVmlldzo6cmVtb3ZlQ2hpbGRQbGF0Zm9ybVdpZGdldChXaWRnZXQqIGNoaWxkKQogewotICAg
IGNoaWxkLT5zZXRQYXJlbnQoMCk7Ci0gICAgbV9kYXRhLT5jaGlsZHJlbi5yZW1vdmUoY2hpbGQp
OwotCi0gICAgaWYgKGNoaWxkLT5wbGF0Zm9ybVdpZGdldCgpICYmIEdUS19XSURHRVQoY29udGFp
bmluZ1dpbmRvdygpKSA9PSBHVEtfV0lER0VUKGNoaWxkLT5wbGF0Zm9ybVdpZGdldCgpKS0+cGFy
ZW50KQorICAgIGlmIChHVEtfV0lER0VUKGNvbnRhaW5pbmdXaW5kb3coKSkgPT0gR1RLX1dJREdF
VChjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSktPnBhcmVudCkKICAgICAgICAgZ3RrX2NvbnRhaW5l
cl9yZW1vdmUoR1RLX0NPTlRBSU5FUihjb250YWluaW5nV2luZG93KCkpLCBjaGlsZC0+cGxhdGZv
cm1XaWRnZXQoKSk7CiB9CiAKQEAgLTc2OCw4ICs3NjEsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCogCiAgKi8KIHZvaWQgU2Nyb2xsVmlldzo6Z2VvbWV0cnlDaGFu
Z2VkKCkgY29uc3QKIHsKLSAgICBIYXNoU2V0PFdpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX2RhdGEtPmNoaWxkcmVuLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxXaWRnZXQqPjo6Y29u
c3RfaXRlcmF0b3IgY3VycmVudCA9IG1fZGF0YS0+Y2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAh
PSBlbmQ7ICsrY3VycmVudCkKKyAgICBIYXNoU2V0PFdpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX2NoaWxkcmVuLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxXaWRnZXQqPjo6Y29uc3Rf
aXRlcmF0b3IgY3VycmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsr
Y3VycmVudCkKICAgICAgICAgKCpjdXJyZW50KS0+Z2VvbWV0cnlDaGFuZ2VkKCk7CiB9CiAKQEAg
LTgxNSw5ICs4MDgsNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAg
ICAgcGFnZS0+Y2hyb21lKCktPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogfQogCi1IYXNoU2V0PFdp
ZGdldCo+KiBTY3JvbGxWaWV3OjpjaGlsZHJlbigpCi17Ci0gICAgcmV0dXJuICZtX2RhdGEtPmNo
aWxkcmVuOwotfQotCiB9CkluZGV4OiBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gMzY4NzAp
CisrKyBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEs
NiArNzEsMjggQEAgaW5saW5lIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxOU1Njcm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Nyb2xsVmlldz4g
Kj4ocGxhdGZvcm1XaWRnZXQoKSk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0
Zm9ybVdpZGdldChXaWRnZXQqIGNoaWxkKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKyAgICBOU1ZpZXcgKnBhcmVudFZpZXcgPSBkb2N1bWVudFZpZXcoKTsKKyAgICBOU1Zp
ZXcgKmNoaWxkVmlldyA9IGNoaWxkLT5nZXRPdXRlclZpZXcoKTsKKyAgICBBU1NFUlQoIVtwYXJl
bnRWaWV3IGlzRGVzY2VuZGFudE9mOmNoaWxkVmlld10pOworICAgIAorICAgIC8vIFN1cHByZXNz
IHRoZSByZXNldHRpbmcgb2YgZHJhZyBtYXJnaW5zIHNpbmNlIHdlIGtub3cgd2UgY2FuJ3QgYWZm
ZWN0IHRoZW0uCisgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtwYXJlbnRWaWV3IHdpbmRvd107Cisg
ICAgQk9PTCByZXNldERyYWdNYXJnaW5zID0gW3dpbmRvdyBfbmVlZHNUb1Jlc2V0RHJhZ01hcmdp
bnNdOworICAgIFt3aW5kb3cgX3NldE5lZWRzVG9SZXNldERyYWdNYXJnaW5zOk5PXTsKKyAgICBp
ZiAoW2NoaWxkVmlldyBzdXBlcnZpZXddICE9IHBhcmVudFZpZXcpCisgICAgICAgIFtwYXJlbnRW
aWV3IGFkZFN1YnZpZXc6Y2hpbGRWaWV3XTsKKyAgICBbd2luZG93IF9zZXROZWVkc1RvUmVzZXRE
cmFnTWFyZ2luczpyZXNldERyYWdNYXJnaW5zXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworfQorCit2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkUGxhdGZvcm1XaWRnZXQoV2lk
Z2V0KiBjaGlsZCkKK3sKKyAgICBjaGlsZC0+cmVtb3ZlRnJvbVN1cGVydmlldygpOworfQorCiBp
bnQgU2Nyb2xsVmlldzo6dmlzaWJsZVdpZHRoKCkgY29uc3QKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CkBAIC0yMjgsMzggKzI1MCw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6c3Vw
cHJlc3NTY3JvbGxiYXJzKGJvb2wKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQog
Ci12b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkKFdpZGdldCogY2hpbGQpCi17Ci0gICAgQVNTRVJU
KGNoaWxkICE9IHRoaXMpOwotCi0gICAgY2hpbGQtPnNldFBhcmVudCh0aGlzKTsKLSAgICBpZiAo
IWNoaWxkLT5wbGF0Zm9ybVdpZGdldCgpKSB7Ci0gICAgICAgIGNoaWxkLT5zZXRDb250YWluaW5n
V2luZG93KGNvbnRhaW5pbmdXaW5kb3coKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNWaWV3ICpwYXJlbnRWaWV3ID0g
ZG9jdW1lbnRWaWV3KCk7Ci0gICAgTlNWaWV3ICpjaGlsZFZpZXcgPSBjaGlsZC0+Z2V0T3V0ZXJW
aWV3KCk7Ci0gICAgQVNTRVJUKCFbcGFyZW50VmlldyBpc0Rlc2NlbmRhbnRPZjpjaGlsZFZpZXdd
KTsKLSAgICAKLSAgICAvLyBTdXBwcmVzcyB0aGUgcmVzZXR0aW5nIG9mIGRyYWcgbWFyZ2lucyBz
aW5jZSB3ZSBrbm93IHdlIGNhbid0IGFmZmVjdCB0aGVtLgotICAgIE5TV2luZG93ICp3aW5kb3cg
PSBbcGFyZW50VmlldyB3aW5kb3ddOwotICAgIEJPT0wgcmVzZXREcmFnTWFyZ2lucyA9IFt3aW5k
b3cgX25lZWRzVG9SZXNldERyYWdNYXJnaW5zXTsKLSAgICBbd2luZG93IF9zZXROZWVkc1RvUmVz
ZXREcmFnTWFyZ2luczpOT107Ci0gICAgaWYgKFtjaGlsZFZpZXcgc3VwZXJ2aWV3XSAhPSBwYXJl
bnRWaWV3KQotICAgICAgICBbcGFyZW50VmlldyBhZGRTdWJ2aWV3OmNoaWxkVmlld107Ci0gICAg
W3dpbmRvdyBfc2V0TmVlZHNUb1Jlc2V0RHJhZ01hcmdpbnM6cmVzZXREcmFnTWFyZ2luc107Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLX0KLQotdm9pZCBTY3JvbGxWaWV3OjpyZW1v
dmVDaGlsZChXaWRnZXQqIGNoaWxkKQotewotICAgIGlmIChjaGlsZC0+cGxhdGZvcm1XaWRnZXQo
KSkKLSAgICAgICAgY2hpbGQtPnJlbW92ZUZyb21TdXBlcnZpZXcoKTsKLSAgICBjaGlsZC0+c2V0
UGFyZW50KDApOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnJlc2l6ZUNvbnRlbnRzKGludCB3LCBp
bnQgaCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkluZGV4OiBwbGF0Zm9y
bS9xdC9TY3JvbGxWaWV3UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL3F0L1Njcm9sbFZp
ZXdRdC5jcHAJKHJldmlzaW9uIDM2ODcwKQorKysgcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw2IEBAIHB1YmxpYzoKICAgICBTY3JvbGxi
YXJNb2RlIG1faFNjcm9sbGJhck1vZGU7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92QmFyOwog
ICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faEJhcjsKLSAgICBIYXNoU2V0PFdpZGdldCo+IG1fY2hp
bGRyZW47CiB9OwogCiB2b2lkIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRIYXNI
b3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQpAQCAtMjgzLDE1ICsyODIsMTAgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzZXRGcmFtZUdlb21ldHJ5KGNvbnN0IAogICAgIGdlb21ldHJ5Q2hhbmdl
ZCgpOwogfQogCi1IYXNoU2V0PFdpZGdldCo+KiBTY3JvbGxWaWV3OjpjaGlsZHJlbigpCi17Ci0g
ICAgcmV0dXJuICYobV9kYXRhLT5tX2NoaWxkcmVuKTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3Ojpn
ZW9tZXRyeUNoYW5nZWQoKSBjb25zdAogewotICAgIEhhc2hTZXQ8V2lkZ2V0Kj46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fZGF0YS0+bV9jaGlsZHJlbi5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8
V2lkZ2V0Kj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uYmVn
aW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKKyAgICBIYXNoU2V0PFdpZGdldCo+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxX
aWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3Vy
cmVudCAhPSBlbmQ7ICsrY3VycmVudCkKICAgICAgICAgKCpjdXJyZW50KS0+Z2VvbWV0cnlDaGFu
Z2VkKCk7CiAKICAgICBjb25zdF9jYXN0PFNjcm9sbFZpZXcgKj4odGhpcyktPmludmFsaWRhdGVT
Y3JvbGxiYXJzKCk7CkBAIC02MTIsMjMgKzYwNiwxNCBAQCBTY3JvbGxiYXIqIFNjcm9sbFZpZXc6
OnNjcm9sbGJhclVuZGVyTW91CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6
YWRkQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKK3ZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9y
bVdpZGdldChXaWRnZXQqIGNoaWxkKQogewotICAgIGNoaWxkLT5zZXRQYXJlbnQodGhpcyk7Ci0g
ICAgbV9kYXRhLT5tX2NoaWxkcmVuLmFkZChjaGlsZCk7Ci0KLSAgICBpZiAoY2hpbGQtPnBsYXRm
b3JtV2lkZ2V0KCkpCi0gICAgICAgIHJvb3QoKS0+aW5jcmVtZW50TmF0aXZlV2lkZ2V0Q291bnQo
KTsKKyAgICByb290KCktPmluY3JlbWVudE5hdGl2ZVdpZGdldENvdW50KCk7CiB9CiAKLXZvaWQg
U2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKK3ZvaWQgU2Nyb2xsVmlldzo6
cmVtb3ZlQ2hpbGRQbGF0Zm9ybVdpZGdldChXaWRnZXQqIGNoaWxkKQogewotICAgIGlmIChjaGls
ZC0+cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcm9vdCgpLT5kZWNyZW1lbnROYXRpdmVXaWRn
ZXRDb3VudCgpOwotCi0gICAgY2hpbGQtPnNldFBhcmVudCgwKTsKLSAgICBjaGlsZC0+aGlkZSgp
OwotICAgIG1fZGF0YS0+bV9jaGlsZHJlbi5yZW1vdmUoY2hpbGQpOworICAgIHJvb3QoKS0+ZGVj
cmVtZW50TmF0aXZlV2lkZ2V0Q291bnQoKTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd1Njcm9sbGJh
ckNvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCklu
ZGV4OiBwbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZv
cm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCShyZXZpc2lvbiAzNjg3MCkKKysrIHBsYXRmb3JtL3dp
bi9TY3JvbGxWaWV3V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw2IEBAIHB1
YmxpYzoKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZCYXI7CiAgICAgUmVmUHRyPFNjcm9sbGJh
cj4gbV9oQmFyOwogICAgIEhSR04gbV9kaXJ0eVJlZ2lvbjsKLSAgICBIYXNoU2V0PFdpZGdldCo+
IG1fY2hpbGRyZW47CiAgICAgSW50UG9pbnQgbV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgYm9v
bCBtX2RyYXdQYW5TY3JvbGxJY29uOwogfTsKQEAgLTYwMiwxOSArNjAxLDYgQEAgU2Nyb2xsYmFy
KiBTY3JvbGxWaWV3OjpzY3JvbGxiYXJVbmRlck1vdQogICAgIHJldHVybiAwOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OmFkZENoaWxkKFdpZGdldCogY2hpbGQpIAoteyAKLSAgICBjaGlsZC0+c2V0
UGFyZW50KHRoaXMpOwotICAgIGNoaWxkLT5zZXRDb250YWluaW5nV2luZG93KGNvbnRhaW5pbmdX
aW5kb3coKSk7Ci0gICAgbV9kYXRhLT5tX2NoaWxkcmVuLmFkZChjaGlsZCk7Ci19Ci0KLXZvaWQg
U2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKLXsKLSAgICBjaGlsZC0+c2V0
UGFyZW50KDApOwotICAgIG1fZGF0YS0+bV9jaGlsZHJlbi5yZW1vdmUoY2hpbGQpOwotfQotCiB2
b2lkIFNjcm9sbFZpZXc6OnByaW50UGFuU2Nyb2xsSWNvbihjb25zdCBJbnRQb2ludCYgaWNvblBv
c2l0aW9uKQogewogICAgIG1fZGF0YS0+bV9kcmF3UGFuU2Nyb2xsSWNvbiA9IHRydWU7ICAgIApA
QCAtNzM4LDE1ICs3MjQsMTAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3Jt
V2hlZQogICAgIH0KIH0KIAotSGFzaFNldDxXaWRnZXQqPiogU2Nyb2xsVmlldzo6Y2hpbGRyZW4o
KQotewotICAgIHJldHVybiAmKG1fZGF0YS0+bV9jaGlsZHJlbik7Ci19Ci0KIHZvaWQgU2Nyb2xs
Vmlldzo6Z2VvbWV0cnlDaGFuZ2VkKCkgY29uc3QKIHsKLSAgICBIYXNoU2V0PFdpZGdldCo+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgZm9yIChI
YXNoU2V0PFdpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gbV9kYXRhLT5tX2NoaWxk
cmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCisgICAgSGFzaFNldDxXaWRn
ZXQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKKyAgICBmb3IgKEhh
c2hTZXQ8V2lkZ2V0Kj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSBtX2NoaWxkcmVuLmJlZ2lu
KCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCiAgICAgICAgICgqY3VycmVudCktPmdlb21l
dHJ5Q2hhbmdlZCgpOwogfQogCkBAIC04MDgsOCArNzg5LDggQEAgdm9pZCBTY3JvbGxWaWV3Ojpz
ZXRQYXJlbnRWaXNpYmxlKGJvb2wgdgogICAgIFdpZGdldDo6c2V0UGFyZW50VmlzaWJsZSh2aXNp
YmxlKTsKIAogICAgIGlmIChpc1Zpc2libGUoKSkgewotICAgICAgICBIYXNoU2V0PFdpZGdldCo+
OjppdGVyYXRvciBlbmQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgIGZvciAo
SGFzaFNldDxXaWRnZXQqPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBl
bmQgPSBtX2NoaWxkcmVuLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8V2lkZ2V0Kj46Oml0
ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAg
ICAgICAoKml0KS0+c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsKICAgICB9CiB9CkBAIC04MTks
OCArODAwLDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzaG93KCkKICAgICBpZiAoIWlzU2VsZlZpc2li
bGUoKSkgewogICAgICAgICBzZXRTZWxmVmlzaWJsZSh0cnVlKTsKICAgICAgICAgaWYgKGlzUGFy
ZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBl
bmQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hTZXQ8
V2lkZ2V0Kj46Oml0ZXJhdG9yIGl0ID0gbV9kYXRhLT5tX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgICAgIEhhc2hTZXQ8V2lkZ2V0Kj46Oml0ZXJhdG9yIGVuZCA9
IG1fY2hpbGRyZW4uZW5kKCk7CisgICAgICAgICAgICBmb3IgKEhhc2hTZXQ8V2lkZ2V0Kj46Oml0
ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAg
ICAgICAgICAgKCppdCktPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC04MzIsOCArODEzLDggQEAgdm9pZCBTY3JvbGxWaWV3OjpoaWRlKCkKIHsKICAgICBpZiAo
aXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIGlmIChpc1BhcmVudFZpc2libGUoKSkgewotICAg
ICAgICAgICAgSGFzaFNldDxXaWRnZXQqPjo6aXRlcmF0b3IgZW5kID0gbV9kYXRhLT5tX2NoaWxk
cmVuLmVuZCgpOwotICAgICAgICAgICAgZm9yIChIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBp
dCA9IG1fZGF0YS0+bV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
ICAgICBIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwor
ICAgICAgICAgICAgZm9yIChIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRy
ZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRQ
YXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBzZXRTZWxmVmlzaWJsZShm
YWxzZSk7CkluZGV4OiBwbGF0Zm9ybS93eC9TY3JvbGxWaWV3V3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL3d4L1Njcm9sbFZpZXdXeC5jcHAJKHJldmlzaW9uIDM2ODcwKQorKysgcGxhdGZv
cm0vd3gvU2Nyb2xsVmlld1d4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw2IEBA
IHB1YmxpYzoKIAogICAgIFNjcm9sbFZpZXcqIG1fc2Nyb2xsVmlldzsKIAotICAgIEhhc2hTZXQ8
V2lkZ2V0Kj4gbV9jaGlsZHJlbjsKICAgICBib29sIGhhc1N0YXRpY0JhY2tncm91bmQ7CiAgICAg
Ym9vbCBzdXBwcmVzc1Njcm9sbGJhcnM7CiAgICAgU2Nyb2xsYmFyTW9kZSB2U2Nyb2xsYmFyTW9k
ZTsKQEAgLTQ0MSwyMSArNDQwLDE3IEBAIHZvaWQgU2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0
Zm9ybVdoZWUKIH0KIAogLy8gdXNlZCBmb3Igc3ViZnJhbWVzIHN1cHBvcnQKLXZvaWQgU2Nyb2xs
Vmlldzo6YWRkQ2hpbGQoV2lkZ2V0KiB3aWRnZXQpCit2b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxk
UGxhdGZvcm1XaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgbV9kYXRhLT5tX2NoaWxkcmVu
LmFkZCh3aWRnZXQpOwotCiAgICAgLy8gTkI6IEluIGFsbCBjYXNlcyBJJ20gYXdhcmUgb2YsCiAg
ICAgLy8gYnkgdGhlIHRpbWUgdGhpcyBpcyBjYWxsZWQgdGhlIFNjcm9sbFZpZXcgaXMgYWxyZWFk
eSBhIGNoaWxkCiAgICAgLy8gb2YgaXRzIHBhcmVudCBXaWRnZXQgYnkgd3ggcG9ydCBBUElzLCBz
byBJIGRvbid0IHRoaW5rCiAgICAgLy8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLgogfQog
Ci12b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogd2lkZ2V0KQordm9pZCBTY3Jv
bGxWaWV3OjpyZW1vdmVDaGlsZFBsYXRmb3JtV2lkZ2V0KFdpZGdldCogd2lkZ2V0KQogewotICAg
IG1fZGF0YS0+bV9jaGlsZHJlbi5yZW1vdmUod2lkZ2V0KTsKLQotICAgIGlmIChwbGF0Zm9ybVdp
ZGdldCgpICYmIHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSkgeworICAgIGlmIChwbGF0Zm9ybVdp
ZGdldCgpKSB7CiAgICAgICAgIHBsYXRmb3JtV2lkZ2V0KCktPlJlbW92ZUNoaWxkKHdpZGdldC0+
cGxhdGZvcm1XaWRnZXQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHRoZSByaWdodCBw
bGFjZSB0byBkbyBkZWxldGlvbj8gSSBzZWUKICAgICAgICAgLy8gZGV0YWNoRnJvbVBhcmVudDIv
My80LCBpbml0aWF0ZWQgYnkgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQsCkBAIC00NjQs
MTEgKzQ1OSw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiB3aWQKICAg
ICB9CiB9CiAKLUhhc2hTZXQ8V2lkZ2V0Kj4qIFNjcm9sbFZpZXc6OmNoaWxkcmVuKCkKLXsKLSAg
ICByZXR1cm4gJihtX2RhdGEtPm1fY2hpbGRyZW4pOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnNj
cm9sbFJlY3RJbnRvVmlld1JlY3Vyc2l2ZWx5KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAg
c2V0Q29udGVudHNQb3MocmVjdC54KCksIHJlY3QueSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23783</attachid>
            <date>2008-09-25 00:01:52 -0700</date>
            <delta_ts>2008-09-25 00:07:57 -0700</delta_ts>
            <desc>patch #2</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>22545</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2ODg0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDgtMDkt
MjQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA4NAorCisgICAgICAgIE1ha2UgdGhlIG1f
Y2hpbGRyZW4gbWVtYmVyIG9mIFNjcm9sbFZpZXcgY3Jvc3MtcGxhdGZvcm0uICBDb25zb2xpZGF0
ZSBjaGlsZHJlbiBhZGQvcmVtb3ZlCisgICAgICAgIGZ1bmN0aW9uYWxpdHkuICBBZGQgcGxhdGZv
cm0gc3R1YnMgZm9yIGNvbm5lY3RpbmcvZGlzY29ubmVjdGluZyB0aGUgcGxhdGZvcm0gd2lkZ2V0
cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2hpbGRy
ZW4pOgorICAgICAgICAqIHBsYXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9TY3JvbGxWaWV3R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmFkZENo
aWxkUGxhdGZvcm1XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cmVtb3Zl
Q2hpbGRQbGF0Zm9ybVdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpnZW9t
ZXRyeUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9ybVdpZGdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZFBsYXRmb3JtV2lkZ2V0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxWaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OmFkZENoaWxkUGxhdGZvcm1XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6cmVtb3ZlQ2hpbGRQbGF0Zm9ybVdpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Njcm9sbFZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Z2VvbWV0
cnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2hvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpoaWRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9TY3JvbGxWaWV3
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9ybVdp
ZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZFBsYXRmb3Jt
V2lkZ2V0KToKKwogMjAwOC0wOS0yNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBHTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBHTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzY4NzApCisrKyBH
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTU0NSw2ICsxNTQ1LDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggXAogCVdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5j
cHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgXAogCVdlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggXAog
CVdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwIFwKSW5kZXg6IFdlYkNvcmUucHJv
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiAzNjg3MCkKKysrIFdlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsNiArODI4LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgXAogICAgIHBsYXRmb3Jt
L3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
IFwKKyAgICBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBcCiAjICAgIHBsYXRmb3JtL1NlYXJjaFBv
cHVwTWVudS5jcHAgXAogICAgIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAgICAgcGxh
dGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwKSW5kZXg6IFdlYkNvcmVTb3VyY2VzLmJr
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDM2ODcwKQorKysg
V2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsNiArNjk1LDcgQEAgVGhp
cyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBwbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAogICAgICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNz
aW9uLmNwcAogICAgICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisgICAgICAgIHBsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCiAgICAgICAgIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAogICAg
ICAgICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKICAgICAgICAgcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcApJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM2ODcw
KQorKysgV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMz
NTUsNiArMzM1NSwxMCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cU2Nyb2xsVHlw
ZXMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFNjcm9sbFZpZXcuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
U2Nyb2xsVmlldy5oIg0KIAkJCQk+DQpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMzY4NzApCisrKyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTM2OTEsNiArMzY5MSw3IEBACiAJCUJDMjNFNzZDMERBRTg4QTkwMDlG
REM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmNwcCAqLzsgfTsKIAkJQkMyM0VFOTIwREFFRDJCQzAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBEQTBEQUZG
NEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKKwkJQkMyNDQxQzQwRThCNjVE
MDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcu
Y3BwICovOyB9OwogCQlCQzJFRDU1NTBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkVE
NTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzJF
RDY1MDBDNkJDNDhDMDA5MjBCRkYgLyogSlNIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFRDY0RjBDNkJD
NDhDMDA5MjBCRkYgLyogSlNIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUJD
MkVENkJDMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZG
IC8qIEpTQXR0ckN1c3RvbS5jcHAgKi87IH07CkBAIC04MjA5LDYgKzgyMTAsNyBAQAogCQlCQzIz
RTc2QjBEQUU4OEE5MDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyM0VFOTEwREFFRDJCQzAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsVmlldy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAv
KiBKU0VsZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
RUQ2NEYwQzZCQzQ4QzAwOTIwQkZGIC8qIEpTSFRNTElGcmFtZUVsZW1lbnRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MSUZyYW1lRWxlbWVudEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQyRjAw
MDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNBdHRyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMTAwLDYgKzEzMTAyLDcgQEAKIAkJCQlCQzE0MDI4ODBFODM2ODA4MDAzMTk3MTcgLyogU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwICovLAogCQkJCUJDMTQwMjg5MEU4MzY4MDgwMDMxOTcx
NyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovLAogCQkJCTkzQzA5Qzg1MEIwNjU3QUEw
MDVBQkQ0RCAvKiBTY3JvbGxUeXBlcy5oICovLAorCQkJCUJDMjQ0MUMzMEU4QjY1RDAwMDU1MzIw
RiAvKiBTY3JvbGxWaWV3LmNwcCAqLywKIAkJCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyog
U2Nyb2xsVmlldy5oICovLAogCQkJCUFCNzE3MDg4MEIzMTE4MDgwMDE3MTIzRSAvKiBTZWFyY2hQ
b3B1cE1lbnUuaCAqLywKIAkJCQlCQzAxNEM3MjBDQzU1NzlEMDA5QzRCMjAgLyogU2VjdXJpdHlP
cmlnaW4uY3BwICovLApAQCAtMTc3MDQsNiArMTc3MDcsNyBAQAogCQkJCTA4QTQ4QTc5MEU4NkNG
OEMwMEUyMjVERCAvKiBFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzUwRTcwRDBFODc1MDBCMDAxODlGRkYgLyogSlNIVE1MQWxsQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0M0Mzg3ODBFODg2Q0M3MDA1MzNERDUgLyogSlNI
VE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDMjQ0MUM0MEU4
QjY1RDAwMDU1MzIwRiAvKiBTY3JvbGxWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRnZXQqIGNoaWxkKSAKK3sKKyAgICBBU1NF
UlQoY2hpbGQgIT0gdGhpcyAmJiAhY2hpbGQtPnBhcmVudCgpKTsKKyAgICBjaGlsZC0+c2V0UGFy
ZW50KHRoaXMpOworICAgIG1fY2hpbGRyZW4uYWRkKGNoaWxkKTsKKyAgICBpZiAoIWNoaWxkLT5w
bGF0Zm9ybVdpZGdldCgpKSB7CisgICAgICAgIGNoaWxkLT5zZXRDb250YWluaW5nV2luZG93KGNv
bnRhaW5pbmdXaW5kb3coKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYWRkQ2hpbGRQ
bGF0Zm9ybVdpZGdldChjaGlsZCk7Cit9CisKK3ZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQo
V2lkZ2V0KiBjaGlsZCkKK3sKKyAgICBBU1NFUlQoY2hpbGQtPnBhcmVudCgpID09IHRoaXMpOwor
ICAgIGNoaWxkLT5zZXRQYXJlbnQoMCk7CisgICAgbV9jaGlsZHJlbi5yZW1vdmUoY2hpbGQpOwor
ICAgIGlmIChjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcmVtb3ZlQ2hpbGRQbGF0
Zm9ybVdpZGdldChjaGlsZCk7Cit9CisKK30KKwpJbmRleDogcGxhdGZvcm0vU2Nyb2xsVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMzY4NzApCisr
KyBwbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRl
ICJXaWRnZXQuaCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBQTEFURk9STShN
QUMpICYmIGRlZmluZWQgX19PQkpDX18KQEAgLTU4LDYgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgU2Nyb2xsVmlldygpOwogICAgICAgICB+U2Nyb2xsVmlldygpOwogCisg
ICAgICAgIGNvbnN0IEhhc2hTZXQ8V2lkZ2V0Kj4qIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KKyAgICAgICAgdm9pZCBhZGRDaGlsZChXaWRnZXQqKTsKKyAgICAgICAg
dm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKKwogICAgICAgICBpbnQgdmlzaWJsZVdpZHRoKCkg
Y29uc3Q7CiAgICAgICAgIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3Q7CiAgICAgICAgIEZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKQEAgLTg2LDkgKzkxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxiYXJNb2RlIGhTY3JvbGxiYXJNb2RlKCkgY29u
c3Q7CiAKICAgICAgICAgYm9vbCBpc1Njcm9sbGFibGUoKTsKLSAgICAgICAgdm9pZCBhZGRDaGls
ZChXaWRnZXQqKTsKLSAgICAgICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKLQorICAgICAg
ICAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZUNvbnRlbnRzKGludCB3LCBpbnQgaCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBFdmVudCBjb29yZGluYXRlcyBhcmUgYXNzdW1lZCB0byBiZSBp
biB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiBhIHdpbmRvdyB0aGF0IGNvbnRhaW5zCkBAIC0xNDUs
NiArMTQ4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZv
aWQgdXBkYXRlKCk7CiAKKyAgICBwcml2YXRlOgorICAgICAgICBIYXNoU2V0PFdpZGdldCo+IG1f
Y2hpbGRyZW47CisKKyAgICAgICAgdm9pZCBhZGRDaGlsZFBsYXRmb3JtV2lkZ2V0KFdpZGdldCop
OworICAgICAgICB2b2lkIHJlbW92ZUNoaWxkUGxhdGZvcm1XaWRnZXQoV2lkZ2V0Kik7CisKICNp
ZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KICAgICBwdWJsaWM6CiAgICAgICAg
IE5TVmlldyogZG9jdW1lbnRWaWV3KCkgY29uc3Q7CkBAIC0xNTQsOSArMTYzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oTUFDKQotICAgIHB1YmxpYzoK
LSAgICAgICAgSGFzaFNldDxXaWRnZXQqPiogY2hpbGRyZW4oKTsKLQogICAgIHByaXZhdGU6CiAg
ICAgICAgIEludFNpemUgbWF4aW11bVNjcm9sbCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBwbGF0
Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9XaWRnZXQuaAkocmV2aXNpb24g
MzY4NzApCisrKyBwbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVZpZXcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdpblZpZXcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKKyAg
ICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFNj
cm9sbFZpZXcqIHZpZXcpOwogICAgIFNjcm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyZW50OyB9CiAgICAgU2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0OwpJbmRleDogcGxhdGZv
cm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2d0ay9TY3Jv
bGxWaWV3R3RrLmNwcAkocmV2aXNpb24gMzY4NzApCisrKyBwbGF0Zm9ybS9ndGsvU2Nyb2xsVmll
d0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NiwyMiArNDc2LDE1IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6c2V0RnJhbWVHZW9tZXRyeShjb25zdCAKICAgICBnZW9tZXRyeUNoYW5nZWQoKTsKIH0K
IAotdm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRnZXQqIGNoaWxkKQordm9pZCBTY3JvbGxW
aWV3OjphZGRDaGlsZFBsYXRmb3JtV2lkZ2V0KFdpZGdldCogY2hpbGQpCiB7Ci0gICAgY2hpbGQt
PnNldENvbnRhaW5pbmdXaW5kb3coY29udGFpbmluZ1dpbmRvdygpKTsKLSAgICBjaGlsZC0+c2V0
UGFyZW50KHRoaXMpOwotICAgIG1fZGF0YS0+Y2hpbGRyZW4uYWRkKGNoaWxkKTsKLQotICAgIGlm
IChjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSAmJiAhR1RLX0lTX1NPQ0tFVChjaGlsZC0+cGxhdGZv
cm1XaWRnZXQoKSkpCisgICAgaWYgKCFHVEtfSVNfU09DS0VUKGNoaWxkLT5wbGF0Zm9ybVdpZGdl
dCgpKSkKICAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihjb250YWluaW5n
V2luZG93KCkpLCBjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmll
dzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKK3ZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hp
bGRQbGF0Zm9ybVdpZGdldChXaWRnZXQqIGNoaWxkKQogewotICAgIGNoaWxkLT5zZXRQYXJlbnQo
MCk7Ci0gICAgbV9kYXRhLT5jaGlsZHJlbi5yZW1vdmUoY2hpbGQpOwotCi0gICAgaWYgKGNoaWxk
LT5wbGF0Zm9ybVdpZGdldCgpICYmIEdUS19XSURHRVQoY29udGFpbmluZ1dpbmRvdygpKSA9PSBH
VEtfV0lER0VUKGNoaWxkLT5wbGF0Zm9ybVdpZGdldCgpKS0+cGFyZW50KQorICAgIGlmIChHVEtf
V0lER0VUKGNvbnRhaW5pbmdXaW5kb3coKSkgPT0gR1RLX1dJREdFVChjaGlsZC0+cGxhdGZvcm1X
aWRnZXQoKSktPnBhcmVudCkKICAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRB
SU5FUihjb250YWluaW5nV2luZG93KCkpLCBjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSk7CiB9CiAK
QEAgLTc2OCw4ICs3NjEsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCogCiAgKi8KIHZvaWQgU2Nyb2xsVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKCkgY29uc3QKIHsKLSAg
ICBIYXNoU2V0PFdpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2RhdGEtPmNoaWxkcmVu
LmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxXaWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVu
dCA9IG1fZGF0YS0+Y2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkK
KyAgICBIYXNoU2V0PFdpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVu
ZCgpOworICAgIGZvciAoSGFzaFNldDxXaWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9
IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKICAgICAgICAg
KCpjdXJyZW50KS0+Z2VvbWV0cnlDaGFuZ2VkKCk7CiB9CiAKQEAgLTgxNSw5ICs4MDgsNCBAQCB2
b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgcGFnZS0+Y2hyb21lKCkt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogfQogCi1IYXNoU2V0PFdpZGdldCo+KiBTY3JvbGxWaWV3
OjpjaGlsZHJlbigpCi17Ci0gICAgcmV0dXJuICZtX2RhdGEtPmNoaWxkcmVuOwotfQotCiB9Cklu
ZGV4OiBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS9tYWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gMzY4NzApCisrKyBwbGF0Zm9ybS9tYWMv
U2Nyb2xsVmlld01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsMjggQEAgaW5saW5l
IE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOU1Njcm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Nyb2xsVmlldz4gKj4ocGxhdGZvcm1XaWRnZXQo
KSk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9ybVdpZGdldChXaWRnZXQq
IGNoaWxkKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBOU1ZpZXcg
KnBhcmVudFZpZXcgPSBkb2N1bWVudFZpZXcoKTsKKyAgICBOU1ZpZXcgKmNoaWxkVmlldyA9IGNo
aWxkLT5nZXRPdXRlclZpZXcoKTsKKyAgICBBU1NFUlQoIVtwYXJlbnRWaWV3IGlzRGVzY2VuZGFu
dE9mOmNoaWxkVmlld10pOworICAgIAorICAgIC8vIFN1cHByZXNzIHRoZSByZXNldHRpbmcgb2Yg
ZHJhZyBtYXJnaW5zIHNpbmNlIHdlIGtub3cgd2UgY2FuJ3QgYWZmZWN0IHRoZW0uCisgICAgTlNX
aW5kb3cgKndpbmRvdyA9IFtwYXJlbnRWaWV3IHdpbmRvd107CisgICAgQk9PTCByZXNldERyYWdN
YXJnaW5zID0gW3dpbmRvdyBfbmVlZHNUb1Jlc2V0RHJhZ01hcmdpbnNdOworICAgIFt3aW5kb3cg
X3NldE5lZWRzVG9SZXNldERyYWdNYXJnaW5zOk5PXTsKKyAgICBpZiAoW2NoaWxkVmlldyBzdXBl
cnZpZXddICE9IHBhcmVudFZpZXcpCisgICAgICAgIFtwYXJlbnRWaWV3IGFkZFN1YnZpZXc6Y2hp
bGRWaWV3XTsKKyAgICBbd2luZG93IF9zZXROZWVkc1RvUmVzZXREcmFnTWFyZ2luczpyZXNldERy
YWdNYXJnaW5zXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCit2b2lkIFNj
cm9sbFZpZXc6OnJlbW92ZUNoaWxkUGxhdGZvcm1XaWRnZXQoV2lkZ2V0KiBjaGlsZCkKK3sKKyAg
ICBjaGlsZC0+cmVtb3ZlRnJvbVN1cGVydmlldygpOworfQorCiBpbnQgU2Nyb2xsVmlldzo6dmlz
aWJsZVdpZHRoKCkgY29uc3QKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBA
IC0yMjgsMzggKzI1MCw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6c3VwcHJlc3NTY3JvbGxiYXJzKGJv
b2wKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIFNjcm9sbFZpZXc6
OmFkZENoaWxkKFdpZGdldCogY2hpbGQpCi17Ci0gICAgQVNTRVJUKGNoaWxkICE9IHRoaXMpOwot
Ci0gICAgY2hpbGQtPnNldFBhcmVudCh0aGlzKTsKLSAgICBpZiAoIWNoaWxkLT5wbGF0Zm9ybVdp
ZGdldCgpKSB7Ci0gICAgICAgIGNoaWxkLT5zZXRDb250YWluaW5nV2luZG93KGNvbnRhaW5pbmdX
aW5kb3coKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0gICAgTlNWaWV3ICpwYXJlbnRWaWV3ID0gZG9jdW1lbnRWaWV3KCk7Ci0g
ICAgTlNWaWV3ICpjaGlsZFZpZXcgPSBjaGlsZC0+Z2V0T3V0ZXJWaWV3KCk7Ci0gICAgQVNTRVJU
KCFbcGFyZW50VmlldyBpc0Rlc2NlbmRhbnRPZjpjaGlsZFZpZXddKTsKLSAgICAKLSAgICAvLyBT
dXBwcmVzcyB0aGUgcmVzZXR0aW5nIG9mIGRyYWcgbWFyZ2lucyBzaW5jZSB3ZSBrbm93IHdlIGNh
bid0IGFmZmVjdCB0aGVtLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbcGFyZW50VmlldyB3aW5k
b3ddOwotICAgIEJPT0wgcmVzZXREcmFnTWFyZ2lucyA9IFt3aW5kb3cgX25lZWRzVG9SZXNldERy
YWdNYXJnaW5zXTsKLSAgICBbd2luZG93IF9zZXROZWVkc1RvUmVzZXREcmFnTWFyZ2luczpOT107
Ci0gICAgaWYgKFtjaGlsZFZpZXcgc3VwZXJ2aWV3XSAhPSBwYXJlbnRWaWV3KQotICAgICAgICBb
cGFyZW50VmlldyBhZGRTdWJ2aWV3OmNoaWxkVmlld107Ci0gICAgW3dpbmRvdyBfc2V0TmVlZHNU
b1Jlc2V0RHJhZ01hcmdpbnM6cmVzZXREcmFnTWFyZ2luc107Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLX0KLQotdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQqIGNo
aWxkKQotewotICAgIGlmIChjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgY2hpbGQt
PnJlbW92ZUZyb21TdXBlcnZpZXcoKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KDApOwotfQotCiB2
b2lkIFNjcm9sbFZpZXc6OnJlc2l6ZUNvbnRlbnRzKGludCB3LCBpbnQgaCkKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkluZGV4OiBwbGF0Zm9ybS9xdC9TY3JvbGxWaWV3UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL3F0L1Njcm9sbFZpZXdRdC5jcHAJKHJldmlzaW9u
IDM2ODcwKQorKysgcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDcgKzEwNCw2IEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJNb2RlIG1faFNjcm9sbGJh
ck1vZGU7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92QmFyOwogICAgIFJlZlB0cjxTY3JvbGxi
YXI+IG1faEJhcjsKLSAgICBIYXNoU2V0PFdpZGdldCo+IG1fY2hpbGRyZW47CiB9OwogCiB2b2lk
IFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFy
KGJvb2wgaGFzQmFyKQpAQCAtMjgzLDE1ICsyODIsMTAgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRG
cmFtZUdlb21ldHJ5KGNvbnN0IAogICAgIGdlb21ldHJ5Q2hhbmdlZCgpOwogfQogCi1IYXNoU2V0
PFdpZGdldCo+KiBTY3JvbGxWaWV3OjpjaGlsZHJlbigpCi17Ci0gICAgcmV0dXJuICYobV9kYXRh
LT5tX2NoaWxkcmVuKTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpnZW9tZXRyeUNoYW5nZWQoKSBj
b25zdAogewotICAgIEhhc2hTZXQ8V2lkZ2V0Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fZGF0
YS0+bV9jaGlsZHJlbi5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8V2lkZ2V0Kj46OmNvbnN0X2l0
ZXJhdG9yIGN1cnJlbnQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBl
bmQ7ICsrY3VycmVudCkKKyAgICBIYXNoU2V0PFdpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX2NoaWxkcmVuLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxXaWRnZXQqPjo6Y29uc3RfaXRl
cmF0b3IgY3VycmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3Vy
cmVudCkKICAgICAgICAgKCpjdXJyZW50KS0+Z2VvbWV0cnlDaGFuZ2VkKCk7CiAKICAgICBjb25z
dF9jYXN0PFNjcm9sbFZpZXcgKj4odGhpcyktPmludmFsaWRhdGVTY3JvbGxiYXJzKCk7CkBAIC02
MTIsMjMgKzYwNiwxNCBAQCBTY3JvbGxiYXIqIFNjcm9sbFZpZXc6OnNjcm9sbGJhclVuZGVyTW91
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGQoV2lkZ2V0KiBj
aGlsZCkKK3ZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9ybVdpZGdldChXaWRnZXQqIGNo
aWxkKQogewotICAgIGNoaWxkLT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgbV9kYXRhLT5tX2NoaWxk
cmVuLmFkZChjaGlsZCk7Ci0KLSAgICBpZiAoY2hpbGQtPnBsYXRmb3JtV2lkZ2V0KCkpCi0gICAg
ICAgIHJvb3QoKS0+aW5jcmVtZW50TmF0aXZlV2lkZ2V0Q291bnQoKTsKKyAgICByb290KCktPmlu
Y3JlbWVudE5hdGl2ZVdpZGdldENvdW50KCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cmVtb3Zl
Q2hpbGQoV2lkZ2V0KiBjaGlsZCkKK3ZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGRQbGF0Zm9y
bVdpZGdldChXaWRnZXQqIGNoaWxkKQogewotICAgIGlmIChjaGlsZC0+cGxhdGZvcm1XaWRnZXQo
KSkKLSAgICAgICAgcm9vdCgpLT5kZWNyZW1lbnROYXRpdmVXaWRnZXRDb3VudCgpOwotCi0gICAg
Y2hpbGQtPnNldFBhcmVudCgwKTsKLSAgICBjaGlsZC0+aGlkZSgpOwotICAgIG1fZGF0YS0+bV9j
aGlsZHJlbi5yZW1vdmUoY2hpbGQpOworICAgIHJvb3QoKS0+ZGVjcmVtZW50TmF0aXZlV2lkZ2V0
Q291bnQoKTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd1Njcm9sbGJhckNvcm5lcihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCkluZGV4OiBwbGF0Zm9ybS93aW4v
U2Nyb2xsVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdX
aW4uY3BwCShyZXZpc2lvbiAzNjg3MCkKKysrIHBsYXRmb3JtL3dpbi9TY3JvbGxWaWV3V2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw2IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8
U2Nyb2xsYmFyPiBtX3ZCYXI7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9oQmFyOwogICAgIEhS
R04gbV9kaXJ0eVJlZ2lvbjsKLSAgICBIYXNoU2V0PFdpZGdldCo+IG1fY2hpbGRyZW47CiAgICAg
SW50UG9pbnQgbV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgYm9vbCBtX2RyYXdQYW5TY3JvbGxJ
Y29uOwogfTsKQEAgLTIzOCw2ICsyMzcsMTQgQEAgU2Nyb2xsVmlldzo6flNjcm9sbFZpZXcoKQog
ICAgIGRlbGV0ZSBtX2RhdGE7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGRQbGF0Zm9y
bVdpZGdldChQbGF0Zm9ybVdpZGdldCkKK3sKK30KKwordm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVD
aGlsZFBsYXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0KQoreworfQorCiB2b2lkIFNjcm9sbFZp
ZXc6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wgbm93KQogewogICAg
IGlmIChyZWN0LmlzRW1wdHkoKSkKQEAgLTYwMiwxOSArNjA5LDYgQEAgU2Nyb2xsYmFyKiBTY3Jv
bGxWaWV3OjpzY3JvbGxiYXJVbmRlck1vdQogICAgIHJldHVybiAwOwogfQogCi12b2lkIFNjcm9s
bFZpZXc6OmFkZENoaWxkKFdpZGdldCogY2hpbGQpIAoteyAKLSAgICBjaGlsZC0+c2V0UGFyZW50
KHRoaXMpOwotICAgIGNoaWxkLT5zZXRDb250YWluaW5nV2luZG93KGNvbnRhaW5pbmdXaW5kb3co
KSk7Ci0gICAgbV9kYXRhLT5tX2NoaWxkcmVuLmFkZChjaGlsZCk7Ci19Ci0KLXZvaWQgU2Nyb2xs
Vmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKLXsKLSAgICBjaGlsZC0+c2V0UGFyZW50
KDApOwotICAgIG1fZGF0YS0+bV9jaGlsZHJlbi5yZW1vdmUoY2hpbGQpOwotfQotCiB2b2lkIFNj
cm9sbFZpZXc6OnByaW50UGFuU2Nyb2xsSWNvbihjb25zdCBJbnRQb2ludCYgaWNvblBvc2l0aW9u
KQogewogICAgIG1fZGF0YS0+bV9kcmF3UGFuU2Nyb2xsSWNvbiA9IHRydWU7ICAgIApAQCAtNzM4
LDE1ICs3MzIsMTAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3JtV2hlZQog
ICAgIH0KIH0KIAotSGFzaFNldDxXaWRnZXQqPiogU2Nyb2xsVmlldzo6Y2hpbGRyZW4oKQotewot
ICAgIHJldHVybiAmKG1fZGF0YS0+bV9jaGlsZHJlbik7Ci19Ci0KIHZvaWQgU2Nyb2xsVmlldzo6
Z2VvbWV0cnlDaGFuZ2VkKCkgY29uc3QKIHsKLSAgICBIYXNoU2V0PFdpZGdldCo+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFdpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gbV9kYXRhLT5tX2NoaWxkcmVuLmJl
Z2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCisgICAgSGFzaFNldDxXaWRnZXQqPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8
V2lkZ2V0Kj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGN1
cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCiAgICAgICAgICgqY3VycmVudCktPmdlb21ldHJ5Q2hh
bmdlZCgpOwogfQogCkBAIC04MDgsOCArNzk3LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRQYXJl
bnRWaXNpYmxlKGJvb2wgdgogICAgIFdpZGdldDo6c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsK
IAogICAgIGlmIChpc1Zpc2libGUoKSkgewotICAgICAgICBIYXNoU2V0PFdpZGdldCo+OjppdGVy
YXRvciBlbmQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNl
dDxXaWRnZXQqPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGEtPm1fY2hpbGRyZW4uYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICBIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBlbmQgPSBt
X2NoaWxkcmVuLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8V2lkZ2V0Kj46Oml0ZXJhdG9y
IGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICAo
Kml0KS0+c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsKICAgICB9CiB9CkBAIC04MTksOCArODA4
LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzaG93KCkKICAgICBpZiAoIWlzU2VsZlZpc2libGUoKSkg
ewogICAgICAgICBzZXRTZWxmVmlzaWJsZSh0cnVlKTsKICAgICAgICAgaWYgKGlzUGFyZW50Vmlz
aWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBlbmQgPSBt
X2RhdGEtPm1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hTZXQ8V2lkZ2V0
Kj46Oml0ZXJhdG9yIGl0ID0gbV9kYXRhLT5tX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgICAgIEhhc2hTZXQ8V2lkZ2V0Kj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hp
bGRyZW4uZW5kKCk7CisgICAgICAgICAgICBmb3IgKEhhc2hTZXQ8V2lkZ2V0Kj46Oml0ZXJhdG9y
IGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICAg
ICAgKCppdCktPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC04
MzIsOCArODIxLDggQEAgdm9pZCBTY3JvbGxWaWV3OjpoaWRlKCkKIHsKICAgICBpZiAoaXNTZWxm
VmlzaWJsZSgpKSB7CiAgICAgICAgIGlmIChpc1BhcmVudFZpc2libGUoKSkgewotICAgICAgICAg
ICAgSGFzaFNldDxXaWRnZXQqPjo6aXRlcmF0b3IgZW5kID0gbV9kYXRhLT5tX2NoaWxkcmVuLmVu
ZCgpOwotICAgICAgICAgICAgZm9yIChIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBpdCA9IG1f
ZGF0YS0+bV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBI
YXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOworICAgICAg
ICAgICAgZm9yIChIYXNoU2V0PFdpZGdldCo+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRQYXJlbnRW
aXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBzZXRTZWxmVmlzaWJsZShmYWxzZSk7
CkluZGV4OiBwbGF0Zm9ybS93eC9TY3JvbGxWaWV3V3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRm
b3JtL3d4L1Njcm9sbFZpZXdXeC5jcHAJKHJldmlzaW9uIDM2ODcwKQorKysgcGxhdGZvcm0vd3gv
U2Nyb2xsVmlld1d4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw2IEBAIHB1Ymxp
YzoKIAogICAgIFNjcm9sbFZpZXcqIG1fc2Nyb2xsVmlldzsKIAotICAgIEhhc2hTZXQ8V2lkZ2V0
Kj4gbV9jaGlsZHJlbjsKICAgICBib29sIGhhc1N0YXRpY0JhY2tncm91bmQ7CiAgICAgYm9vbCBz
dXBwcmVzc1Njcm9sbGJhcnM7CiAgICAgU2Nyb2xsYmFyTW9kZSB2U2Nyb2xsYmFyTW9kZTsKQEAg
LTQ0MSwyMSArNDQwLDE3IEBAIHZvaWQgU2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0Zm9ybVdo
ZWUKIH0KIAogLy8gdXNlZCBmb3Igc3ViZnJhbWVzIHN1cHBvcnQKLXZvaWQgU2Nyb2xsVmlldzo6
YWRkQ2hpbGQoV2lkZ2V0KiB3aWRnZXQpCit2b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkUGxhdGZv
cm1XaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgbV9kYXRhLT5tX2NoaWxkcmVuLmFkZCh3
aWRnZXQpOwotCiAgICAgLy8gTkI6IEluIGFsbCBjYXNlcyBJJ20gYXdhcmUgb2YsCiAgICAgLy8g
YnkgdGhlIHRpbWUgdGhpcyBpcyBjYWxsZWQgdGhlIFNjcm9sbFZpZXcgaXMgYWxyZWFkeSBhIGNo
aWxkCiAgICAgLy8gb2YgaXRzIHBhcmVudCBXaWRnZXQgYnkgd3ggcG9ydCBBUElzLCBzbyBJIGRv
bid0IHRoaW5rCiAgICAgLy8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLgogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogd2lkZ2V0KQordm9pZCBTY3JvbGxWaWV3
OjpyZW1vdmVDaGlsZFBsYXRmb3JtV2lkZ2V0KFdpZGdldCogd2lkZ2V0KQogewotICAgIG1fZGF0
YS0+bV9jaGlsZHJlbi5yZW1vdmUod2lkZ2V0KTsKLQotICAgIGlmIChwbGF0Zm9ybVdpZGdldCgp
ICYmIHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSkgeworICAgIGlmIChwbGF0Zm9ybVdpZGdldCgp
KSB7CiAgICAgICAgIHBsYXRmb3JtV2lkZ2V0KCktPlJlbW92ZUNoaWxkKHdpZGdldC0+cGxhdGZv
cm1XaWRnZXQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIHRoZSByaWdodCBwbGFjZSB0
byBkbyBkZWxldGlvbj8gSSBzZWUKICAgICAgICAgLy8gZGV0YWNoRnJvbVBhcmVudDIvMy80LCBp
bml0aWF0ZWQgYnkgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQsCkBAIC00NjQsMTEgKzQ1
OSw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiB3aWQKICAgICB9CiB9
CiAKLUhhc2hTZXQ8V2lkZ2V0Kj4qIFNjcm9sbFZpZXc6OmNoaWxkcmVuKCkKLXsKLSAgICByZXR1
cm4gJihtX2RhdGEtPm1fY2hpbGRyZW4pOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbFJl
Y3RJbnRvVmlld1JlY3Vyc2l2ZWx5KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgc2V0Q29u
dGVudHNQb3MocmVjdC54KCksIHJlY3QueSgpKTsK
</data>
<flag name="review"
          id="10697"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>