<?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>84023</bug_id>
          
          <creation_ts>2012-04-16 05:23:24 -0700</creation_ts>
          <short_desc>[EFL] Add Security Origin API</short_desc>
          <delta_ts>2012-04-20 09:08:30 -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>WebKit EFL</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>
          
          <blocked>84170</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago Marcos P. Santos">tmpsantos</reporter>
          <assigned_to name="Thiago Marcos P. Santos">tmpsantos</assigned_to>
          <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>t.morawski</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603069</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-04-16 05:23:24 -0700</bug_when>
    <thetext>Currently on Ewk_Frame there is no way to get the Security Origin, which is needed for fine grained security policy. Security Origin is used by APIs such as database for specifying quota per origin and others like geolocation to grant authorization. A convenience wrapper such as Ewk_Security_Origin should be implemented.

The current security model is based on whitelisting. A more fine tuned approach would be aligned to other ports and device APIs that we might implement some day.

Reference for implementation:
http://doc.qt.nokia.com/4.7-snapshot/qwebframe.html#securityOrigin
http://webkitgtk.org/reference/webkitgtk/stable/WebKitWebFrame.html#webkit-web-frame-get-security-origin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605815</commentid>
    <comment_count>1</comment_count>
      <attachid>137959</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-04-19 13:16:36 -0700</bug_when>
    <thetext>Created attachment 137959
patch adding the API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605852</commentid>
    <comment_count>2</comment_count>
      <attachid>137959</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-04-19 13:54:05 -0700</bug_when>
    <thetext>Comment on attachment 137959
patch adding the API

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

&gt; Source/WebKit/efl/ChangeLog:8
&gt; +        to define quota and get usage information of a Web Storage based on it&apos;s

s/it&apos;s/its/

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:296
&gt; +    if (!smartData-&gt;frame-&gt;document() || !smartData-&gt;frame-&gt;document()-&gt;securityOrigin())
&gt; +        return 0;

These could be wrapped into EINA_SAFETY_ON_NULL_RETURN_VAL()s too.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:298
&gt; +    return ewk_security_origin_new(smartData-&gt;frame-&gt;document()-&gt;securityOrigin());

I wonder if it doesn&apos;t make sense to keep the same object around instead of always creating a new one, and updating it when the origin changes.

&gt; Source/WebKit/efl/ewk/ewk_security_origin.cpp:97
&gt; +    Ewk_Security_Origin* origin = new Ewk_Security_Origin();

Please use `new Foo&apos; instead of `new Foo()&apos;.

&gt; Source/WebKit/efl/ewk/ewk_security_origin.cpp:101
&gt; +    origin-&gt;host = 0;
&gt; +    origin-&gt;protocol = 0;

Why not do the eina_stringshare_add() calls here and make the getters simply return the values set in this function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605860</commentid>
    <comment_count>3</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-04-19 14:05:07 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 137959 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137959&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:8
&gt; &gt; +        to define quota and get usage information of a Web Storage based on it&apos;s
&gt; 
&gt; s/it&apos;s/its/
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:296
&gt; &gt; +    if (!smartData-&gt;frame-&gt;document() || !smartData-&gt;frame-&gt;document()-&gt;securityOrigin())
&gt; &gt; +        return 0;
&gt; 
&gt; These could be wrapped into EINA_SAFETY_ON_NULL_RETURN_VAL()s too.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:298
&gt; &gt; +    return ewk_security_origin_new(smartData-&gt;frame-&gt;document()-&gt;securityOrigin());
&gt; 
&gt; I wonder if it doesn&apos;t make sense to keep the same object around instead of always creating a new one, and updating it when the origin changes.
&gt; 

I thought about doing that (like GTK does) but IMO this wrapper is way too lightweight to deserve being cached somewhere and all the maintenance involved. The &quot;heavy&quot; part of it, which is the WebCore::SecurityOrigin is already refcounted.

&gt; &gt; Source/WebKit/efl/ewk/ewk_security_origin.cpp:97
&gt; &gt; +    Ewk_Security_Origin* origin = new Ewk_Security_Origin();
&gt; 
&gt; Please use `new Foo&apos; instead of `new Foo()&apos;.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_security_origin.cpp:101
&gt; &gt; +    origin-&gt;host = 0;
&gt; &gt; +    origin-&gt;protocol = 0;
&gt; 
&gt; Why not do the eina_stringshare_add() calls here and make the getters simply return the values set in this function?

Lazy loading. In many cases you just need the origin object to set a database quota.

Thanks for reviewing. /me will fix the remaining issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605977</commentid>
    <comment_count>4</comment_count>
      <attachid>137989</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-04-19 15:10:30 -0700</bug_when>
    <thetext>Created attachment 137989
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605996</commentid>
    <comment_count>5</comment_count>
      <attachid>137989</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-04-19 15:25:53 -0700</bug_when>
    <thetext>Comment on attachment 137989
patch

Looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606381</commentid>
    <comment_count>6</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-04-19 23:15:22 -0700</bug_when>
    <thetext>Is there any reason of adding a new separate private file for Security Origin feature (ewk_security_origin_private.h)? 

WebKit-EFL tends to keep one private file for all components (view, frame etc.) Maybe it&apos;s good point to consider it. 

CC&apos;ing Tomasz who proposed this idea here  https://lists.webkit.org/pipermail/webkit-efl/2012-February/000132.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606394</commentid>
    <comment_count>7</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-04-19 23:32:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Is there any reason of adding a new separate private file for Security Origin feature (ewk_security_origin_private.h)? 
&gt; 
&gt; WebKit-EFL tends to keep one private file for all components (view, frame etc.) Maybe it&apos;s good point to consider it. 
&gt; 
&gt; CC&apos;ing Tomasz who proposed this idea here  https://lists.webkit.org/pipermail/webkit-efl/2012-February/000132.html

The points are exactly the ones mentioned by Tomasz Morawski, which are mainly code readability.

ewk_tiled.h already has an ewk_tiled_private.h, I&apos;m trying to keep this positive trend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606414</commentid>
    <comment_count>8</comment_count>
      <attachid>138054</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-04-20 00:27:39 -0700</bug_when>
    <thetext>Created attachment 138054
use ewk_private.h instead of ewk_security_origin_private.h

Using a big ewk_private.h is more EFLish but we should discuss on the mailing lists whenever this model scales to several APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606442</commentid>
    <comment_count>9</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-04-20 01:21:46 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=138054) [details]
&gt; use ewk_private.h instead of ewk_security_origin_private.h
&gt; 
&gt; Using a big ewk_private.h is more EFLish but we should discuss on the mailing lists whenever this model scales to several APIs.

Actually I didn&apos;t mind your previous patch. Especially if Kubo has already approved it.
Anyway LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606612</commentid>
    <comment_count>10</comment_count>
      <attachid>138054</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-20 09:08:24 -0700</bug_when>
    <thetext>Comment on attachment 138054
use ewk_private.h instead of ewk_security_origin_private.h

Clearing flags on attachment: 138054

Committed r114749: &lt;http://trac.webkit.org/changeset/114749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606613</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-20 09:08:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137959</attachid>
            <date>2012-04-19 13:16:36 -0700</date>
            <delta_ts>2012-04-19 15:10:30 -0700</delta_ts>
            <desc>patch adding the API</desc>
            <filename>security_origin.patch</filename>
            <type>text/plain</type>
            <size>14111</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTZjMWJlMy4uZWRlMzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNC0xOSAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgU2VjdXJpdHkgT3JpZ2luIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorCiAyMDEyLTA0LTEwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDTWFrZV0gRW5hYmxlIFVTRV9GT0xERVJTIHByb3BlcnR5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCA1NGU3ZDkxLi5jNzdhOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTEwMSw2ICsxMDEsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVm
bC9ld2svZXdrX2pzLmNwcAogICAgIGVmbC9ld2svZXdrX21haW4uY3BwCiAgICAgZWZsL2V3ay9l
d2tfbmV0d29yay5jcHAKKyAgICBlZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCiAgICAg
ZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcAogICAgIGVmbC9ld2svZXdrX3NldHRpbmdz
LmNwcAogICAgIGVmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBAIC0yNTIsNiAr
MjUzLDcgQEAgU0VUKEVXZWJLaXRfSEVBREVSUwogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9lZmwvZXdrL2V3a19sb2dnaW5nLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vZWZsL2V3ay9ld2tfbWFpbi5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2Vm
bC9ld2svZXdrX25ldHdvcmsuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a19zZXR0aW5ncy5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L2VmbC9ld2svZXdrX3ZpZXcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDgwYzBjNWQuLmIx
ZWNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wNC0xOSAgVGhp
YWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KKworICAgICAg
ICBbRUZMXSBBZGQgU2VjdXJpdHkgT3JpZ2luIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMjMKKworICAgICAgICBBZGRlZCBhbiBBUEkgdG8g
Z2V0IGEgU2VjdXJpdHkgT3JpZ2luIGhhbmRsZSBmcm9tIGEgRXdrX0ZyYW1lLiBUaGlzIGlzCisg
ICAgICAgIG5lZWRlZCBmb3IgZmluZSBncmFpbmVkIHNlY3VyaXR5IHBvbGljeS4gVGhpcyBuZXcg
QVBJIHdpbGwgYWxzbyBhbGxvdworICAgICAgICB0byBkZWZpbmUgcXVvdGEgYW5kIGdldCB1c2Fn
ZSBpbmZvcm1hdGlvbiBvZiBhIFdlYiBTdG9yYWdlIGJhc2VkIG9uIGl0J3MKKyAgICAgICAgU2Vj
dXJpdHkgT3JpZ2luLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAg
ICAgICAgKGV3a19mcmFtZV9zZWN1cml0eV9vcmlnaW5fZ2V0KToKKyAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmg6CisgICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOiBBZGRlZC4K
KyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2xfZ2V0KToKKyAgICAgICAgKGV3
a19zZWN1cml0eV9vcmlnaW5faG9zdF9nZXQpOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdp
bl9wb3J0X2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV91
c2FnZV9nZXQpOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVv
dGFfZ2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3Rh
X3NldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUpOgorICAgICAgICAoZXdr
X3NlY3VyaXR5X29yaWdpbl9uZXcpOgorICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2lu
Lmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaDog
QWRkZWQuCisKIDIwMTItMDQtMTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGly
ZWN0IG5lZWRzIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAppbmRleCAwZmZi
NTFjLi4zMmZlMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJld2tfanMuaCIKICNpbmNsdWRlICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3
a19uZXR3b3JrLmgiCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1ZGUg
ImV3a19zZWN1cml0eV9wb2xpY3kuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKICNpbmNs
dWRlICJld2tfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA0YzYz
OWQzLi5iNzlhYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNTIsNiAr
NTIsOCBAQAogI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiZXdr
X2xvZ2dpbmcuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19zZWN1
cml0eV9vcmlnaW4uaCIKKyNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIK
ICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPGVpbmFfc2Fm
ZXR5X2NoZWNrcy5oPgpAQCAtMjg1LDYgKzI4NywxNyBAQCBFdmFzX09iamVjdCogZXdrX2ZyYW1l
X3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAgICByZXR1cm4gc21hcnRE
YXRhLT52aWV3OwogfQogCitFd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfZnJhbWVfc2VjdXJpdHlf
b3JpZ2luX2dldChjb25zdCBFdmFzX09iamVjdCAqZXdrRnJhbWUpCit7CisgICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOworCisgICAgaWYgKCFz
bWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpIHx8ICFzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBl
d2tfc2VjdXJpdHlfb3JpZ2luX25ldyhzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKK30KKwogRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0
ZXJhdG9yX25ldyhFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmgKaW5kZXggOTQzZmMxZS4uNDA5YTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
aApAQCAtNzAsNiArNzAsOCBAQAogI2lmbmRlZiBld2tfZnJhbWVfaAogI2RlZmluZSBld2tfZnJh
bWVfaAogCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgorCiAjaW5jbHVkZSA8RXZh
cy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTIyMSw2ICsyMjMsMTcgQEAgdHlwZWRlZiBl
bnVtIHsKIEVBUEkgRXZhc19PYmplY3QgKmV3a19mcmFtZV92aWV3X2dldChjb25zdCBFdmFzX09i
amVjdCAqbyk7CiAKIC8qKgorICogUmV0cmlldmVzIHRoZSBFd2tfU2VjdXJpdHlfT3JpZ2luIG9m
IHRoaXMgZnJhbWUuCisgKgorICogVGhlIHJldHVybmVkIG9iamVjdCBzaG91bGQgYmUgZnJlZWQg
YnkgZXdrX3NlY3VyaXR5X29yaWdpbl9mcmVlKCkuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2Jq
ZWN0IHRvIGdldCB0aGUgc2VjdXJpdHkgb3JpZ2luCisgKgorICogQHJldHVybiBzZWN1cml0eSBv
cmlnaW4gb2JqZWN0CisgKi8KK0VBUEkgRXdrX1NlY3VyaXR5X09yaWdpbiAqZXdrX2ZyYW1lX3Nl
Y3VyaXR5X29yaWdpbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIFJldHVy
bnMgYSBuZXcgaXRlcmF0b3Igb3ZlciBhbGwgZGlyZWN0IGNoaWxkcmVuIGZyYW1lcy4KICAqCiAg
KiBLZWVwIGZyYW1lIG9iamVjdCBpbnRhY3Qgd2hpbGUgaXRlcmF0aW9uIGhhcHBlbnMgb3RoZXJ3
aXNlIGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5
X29yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMxYmE2NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcApA
QCAtMCwwICsxLDEwNCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29y
aWdpbi5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiZXdrX3Nl
Y3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKworY29uc3QgY2hhciogZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90
b2NvbF9nZXQoRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQoreworICAgIGlmICghb3JpZ2lu
LT5wcm90b2NvbCkKKyAgICAgICAgb3JpZ2luLT5wcm90b2NvbCA9IGVpbmFfc3RyaW5nc2hhcmVf
YWRkKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnByb3RvY29sKCkudXRmOCgpLmRhdGEoKSk7CisK
KyAgICByZXR1cm4gb3JpZ2luLT5wcm90b2NvbDsKK30KKworY29uc3QgY2hhciogZXdrX3NlY3Vy
aXR5X29yaWdpbl9ob3N0X2dldChFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCit7CisgICAg
aWYgKCFvcmlnaW4tPmhvc3QpCisgICAgICAgIG9yaWdpbi0+aG9zdCA9IGVpbmFfc3RyaW5nc2hh
cmVfYWRkKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIHJldHVybiBvcmlnaW4tPmhvc3Q7Cit9CisKK3VpbnQzMl90IGV3a19zZWN1cml0eV9vcmln
aW5fcG9ydF9nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQoreworICAgIHJl
dHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5wb3J0KCk7Cit9CisKK3VpbnQ2NF90IGV3a19z
ZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3VzYWdlX2dldChjb25zdCBFd2tfU2VjdXJpdHlf
T3JpZ2luKiBvcmlnaW4pCit7CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICByZXR1cm4g
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2lu
LT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9
CisKK3VpbnQ2NF90IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldChj
b25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCit7CisjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVv
dGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisjZWxzZQorICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJh
c2VfcXVvdGFfc2V0KGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiwgdWludDY0X3Qg
cXVvdGEpCit7CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICBXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgp
LCBxdW90YSk7CisjZW5kaWYKK30KKwordm9pZCBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUoRXdr
X1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQoreworICAgIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4g
PSAwOworCisgICAgaWYgKG9yaWdpbi0+aG9zdCkKKyAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwob3JpZ2luLT5ob3N0KTsKKyAgICBpZiAob3JpZ2luLT5wcm90b2NvbCkKKyAgICAgICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwob3JpZ2luLT5wcm90b2NvbCk7CisKKyAgICBkZWxldGUgb3JpZ2lu
OworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ3JlYXRlcyBhIEVXSyB3cmFwcGVyIGZvciBX
ZWJDb3JlIFNlY3VyaXR5IE9yaWdpbiBvYmplY3QuCisgKgorICogQHBhcmFtIGNvcmVPcmlnaW4g
V2ViQ29yZSBTZWN1cml0eSBPcmlnaW4gb2JqZWN0CisgKgorICogQHJldHVybiBhIEVXSyB3cmFw
cGVyIG9mIFdlYkNvcmUgU2VjdXJpdHkgT3JpZ2luIG9iamVjdCB3aGljaCBzaG91bGQgYmUKKyAq
IGZyZWVkIGJ5IGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSgpCisgKi8KK0V3a19TZWN1cml0eV9P
cmlnaW4qIGV3a19zZWN1cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBj
b3JlT3JpZ2luKQoreworICAgIEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiA9IG5ldyBFd2tf
U2VjdXJpdHlfT3JpZ2luKCk7CisKKyAgICBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luID0gY29yZU9y
aWdpbjsKKyAgICBvcmlnaW4tPmhvc3QgPSAwOworICAgIG9yaWdpbi0+cHJvdG9jb2wgPSAwOwor
CisgICAgcmV0dXJuIG9yaWdpbjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3Vy
aXR5X29yaWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTY3ZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29y
aWdpbi5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3NlY3VyaXR5X29yaWdpbi5o
CisgKiBAYnJpZWYgICBTZWN1cml0eSBPcmlnaW4gQVBJLgorICoKKyAqIFNlY3VyaXR5IE9yaWdp
biBpcyB0aGUgbWVjaGFuaXNtIHRoYXQgZGVmaW5lcyB0aGUgYWNjZXNzIGxpbWl0cyBvZiBhIHdl
YnNpdGUuCisgKiBCYXNlZCBvbiBpbmZvcm1hdGlvbiBzdWNoIGFzIGRvbWFpbiwgcHJvdG9jb2wg
YW5kIHBvcnQsIHlvdSBjYW4gZ3JhbnQgb3Igbm90CisgKiBhdXRob3JpemF0aW9uIGZvciBhY2Nl
c3NpbmcgZGF0YSBhbmQgcGVyZm9ybWluZyBjZXJ0YWluIHRhc2tzLiBEYXRhYmFzZSBxdW90YQor
ICogY2FuIGFsc28gYmUgZGVmaW5lZCBiYXNlZCBvbiB0aGUgc2VjdXJpdHkgb3JpZ2luLgorICoK
KyAqIFRoZSBkYXRhYmFzZSByZWxhdGVkIGZ1bmN0aW9ucyB3aWxsIGRvIG5vdGhpbmcgaWYgV2Vi
S2l0IGlzIGJ1aWx0IHdpdGhvdXQgV2ViCisgKiBTUUwgRGF0YWJhc2Ugc3VwcG9ydC4KKyAqLwor
CisjaWZuZGVmIGV3a19zZWN1cml0eV9vcmlnaW5faAorI2RlZmluZSBld2tfc2VjdXJpdHlfb3Jp
Z2luX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1NlY3VyaXR5X09yaWdpbiBFd2tf
U2VjdXJpdHlfT3JpZ2luOworCisvKioKKyAqIFJldHVybnMgdGhlIHByb3RvY29sIG9mIHRoZSBz
ZWN1cml0eSBvcmlnaW4uCisgKgorICogQHBhcmFtIG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAor
ICoKKyAqIEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcgd2hpY2ggc2hvdWxkIG5vdAorICog
YmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFyZWQu
CisgKgorICogQHJldHVybiB0aGUgcHJvdG9jb2wgc2NoZW1lCisgKi8KK0VBUEkgY29uc3QgY2hh
ciAgKmV3a19zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2xfZ2V0KEV3a19TZWN1cml0eV9PcmlnaW4g
Km8pOworCisvKioKKyAqIFJldHVybnMgdGhlIGhvc3Qgb2YgdGhlIHNlY3VyaXR5IG9yaWdpbi4K
KyAqCisgKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIHdoaWNoIHNob3VsZCBub3QKKyAq
IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVk
LgorICoKKyAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKKyAqCisgKiBAcmV0dXJu
IHRoZSBob3N0IGRvbWFpbgorICovCitFQVBJIGNvbnN0IGNoYXIgICpld2tfc2VjdXJpdHlfb3Jp
Z2luX2hvc3RfZ2V0KEV3a19TZWN1cml0eV9PcmlnaW4gKm8pOworCisvKioKKyAqIFJldHVybnMg
dGhlIHBvcnQgb2YgdGhlIHNlY3VyaXR5IG9yaWdpbi4KKyAqCisgKiBAcGFyYW0gbyBzZWN1cml0
eSBvcmlnaW4gb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgcG9ydAorICovCitFQVBJIHVpbnQz
Ml90ICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3BvcnRfZ2V0KGNvbnN0IEV3a19TZWN1cml0eV9P
cmlnaW4gKm8pOworCisvKioKKyAqIFJldHJpZXZlcyB0aGUgdXNhZ2Ugb2YgYSBkYXRhYmFzZSBm
b3IgYSBzZWN1cml0eSBvcmlnaW4uCisgKgorICogVGhpcyBmdW5jdGlvbiB3b24ndCB3b3JrIGlm
IFdlYiBTUUwgRGF0YWJhc2Ugd2FzIG5vdCBlbmFibGVkIHdoZW4KKyAqIGJ1aWxkaW5nIFdlYktp
dCBhbmQgd2lsbCBqdXN0IHJldHVybiAwLgorICoKKyAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdp
biBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSB1c2FnZSBpbiBieXRlcworICovCitFQVBJIHVp
bnQ2NF90ICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV91c2FnZV9nZXQoY29u
c3QgRXdrX1NlY3VyaXR5X09yaWdpbiAqbyk7CisKKy8qKgorICogUmV0cmlldmVzIHRoZSBxdW90
YSBvZiBhIGRhdGFiYXNlIGZvciBhIHNlY3VyaXR5IG9yaWdpbi4KKyAqCisgKiBUaGlzIGZ1bmN0
aW9uIHdvbid0IHdvcmsgaWYgV2ViIFNRTCBEYXRhYmFzZSB3YXMgbm90IGVuYWJsZWQgd2hlbgor
ICogYnVpbGRpbmcgV2ViS2l0IGFuZCB3aWxsIGp1c3QgcmV0dXJuIDAuCisgKgorICogQHBhcmFt
IG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAorICoKKyAqIEByZXR1cm4gdGhlIHF1b3RhIGluIGJ5
dGVzCisgKi8KK0VBUEkgdWludDY0X3QgICAgIGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFi
YXNlX3F1b3RhX2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvKTsKKworLyoqCisgKiBT
ZXRzIHRoZSBkYXRhYmFzZSB1c2FnZSBxdW90YSBmb3IgYSBzZWN1cml0eSBvcmlnaW4uCisgKgor
ICogVGhpcyBmdW5jdGlvbiB3b24ndCB3b3JrIGlmIFdlYiBTUUwgRGF0YWJhc2Ugd2FzIG5vdCBl
bmFibGVkIHdoZW4KKyAqIGJ1aWxkaW5nIFdlYktpdC4KKyAqCisgKiBAcGFyYW0gbyBzZWN1cml0
eSBvcmlnaW4gb2JqZWN0CisgKiBAcGFyYW0gcXVvdGEgdGhlIHVzYWdlIHF1b3RhIGluIGJ5dGVz
CisgKi8KK0VBUEkgdm9pZCAgICAgICAgIGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNl
X3F1b3RhX3NldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvLCB1aW50NjRfdCBxdW90YSk7
CisKKy8qKgorICogUmVsZWFzZSBhbGwgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBhIHNlY3VyaXR5
IG9yaWdpbiBvYmplY3QuCisgKgorICogQHBhcmFtIG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAor
ICovCitFQVBJIHZvaWQgICAgICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUoRXdrX1NlY3Vy
aXR5X09yaWdpbiAqbyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYg
Ly8gZXdrX3NlY3VyaXR5X29yaWdpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYmFjZDk4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaApAQCAtMCwwICsxLDQyIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3Nl
Y3VyaXR5X29yaWdpbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2
YXRlX2gKKworI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiZXdrX3NlY3Vy
aXR5X29yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitzdHJ1Y3QgX0V3a19TZWN1cml0eV9PcmlnaW4g
eworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47Cisg
ICAgY29uc3QgY2hhciogcHJvdG9jb2w7CisgICAgY29uc3QgY2hhciogaG9zdDsKK307CisKK0V3
a19TZWN1cml0eV9PcmlnaW4qIGV3a19zZWN1cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiBvKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAv
LyBld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137989</attachid>
            <date>2012-04-19 15:10:30 -0700</date>
            <delta_ts>2012-04-20 00:27:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>security_origin.patch</filename>
            <type>text/plain</type>
            <size>14094</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTZjMWJlMy4uZWRlMzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNC0xOSAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgU2VjdXJpdHkgT3JpZ2luIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorCiAyMDEyLTA0LTEwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDTWFrZV0gRW5hYmxlIFVTRV9GT0xERVJTIHByb3BlcnR5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCA1NGU3ZDkxLi5jNzdhOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTEwMSw2ICsxMDEsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVm
bC9ld2svZXdrX2pzLmNwcAogICAgIGVmbC9ld2svZXdrX21haW4uY3BwCiAgICAgZWZsL2V3ay9l
d2tfbmV0d29yay5jcHAKKyAgICBlZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCiAgICAg
ZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcAogICAgIGVmbC9ld2svZXdrX3NldHRpbmdz
LmNwcAogICAgIGVmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBAIC0yNTIsNiAr
MjUzLDcgQEAgU0VUKEVXZWJLaXRfSEVBREVSUwogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9lZmwvZXdrL2V3a19sb2dnaW5nLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vZWZsL2V3ay9ld2tfbWFpbi5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2Vm
bC9ld2svZXdrX25ldHdvcmsuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a19zZXR0aW5ncy5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L2VmbC9ld2svZXdrX3ZpZXcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDgwYzBjNWQuLjQ0
NTIzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wNC0xOSAgVGhp
YWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KKworICAgICAg
ICBbRUZMXSBBZGQgU2VjdXJpdHkgT3JpZ2luIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMjMKKworICAgICAgICBBZGRlZCBhbiBBUEkgdG8g
Z2V0IGEgU2VjdXJpdHkgT3JpZ2luIGhhbmRsZSBmcm9tIGEgRXdrX0ZyYW1lLiBUaGlzIGlzCisg
ICAgICAgIG5lZWRlZCBmb3IgZmluZSBncmFpbmVkIHNlY3VyaXR5IHBvbGljeS4gVGhpcyBuZXcg
QVBJIHdpbGwgYWxzbyBhbGxvdworICAgICAgICB0byBkZWZpbmUgcXVvdGEgYW5kIGdldCB1c2Fn
ZSBpbmZvcm1hdGlvbiBvZiBhIFdlYiBTdG9yYWdlIGJhc2VkIG9uIGl0cworICAgICAgICBTZWN1
cml0eSBPcmlnaW4uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBld2svRVdlYktpdC5oOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAg
ICAgICAoZXdrX2ZyYW1lX3NlY3VyaXR5X29yaWdpbl9nZXQpOgorICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuaDoKKyAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbF9nZXQpOgorICAgICAgICAoZXdr
X3NlY3VyaXR5X29yaWdpbl9ob3N0X2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2lu
X3BvcnRfZ2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3Vz
YWdlX2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90
YV9nZXQpOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFf
c2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSk6CisgICAgICAgIChld2tf
c2VjdXJpdHlfb3JpZ2luX25ldyk6CisgICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4u
aDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oOiBB
ZGRlZC4KKwogMjAxMi0wNC0xOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3QgbmVlZHMgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9FV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCmluZGV4IDBmZmI1
MWMuLjMyZmUyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgImV3a19qcy5oIgogI2luY2x1ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdr
X25ldHdvcmsuaCIKKyNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luLmgiCiAjaW5jbHVkZSAi
ZXdrX3NlY3VyaXR5X3BvbGljeS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1
ZGUgImV3a192aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDRjNjM5
ZDMuLmM3NjdlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC01Miw2ICs1
Miw4IEBACiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlICJld2tf
bG9nZ2luZy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3NlY3Vy
aXR5X29yaWdpbi5oIgorI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZl
dHlfY2hlY2tzLmg+CkBAIC0yODUsNiArMjg3LDE2IEBAIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVf
dmlld19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogICAgIHJldHVybiBzbWFydERh
dGEtPnZpZXc7CiB9CiAKK0V3a19TZWN1cml0eV9PcmlnaW4qIGV3a19mcmFtZV9zZWN1cml0eV9v
cmlnaW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpld2tGcmFtZSkKK3sKKyAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCksIDApOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCAwKTsKKworICAgIHJldHVybiBld2tfc2VjdXJpdHlf
b3JpZ2luX25ldyhzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKK30KKwogRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhF
dmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKaW5kZXgg
OTQzZmMxZS4uNDA5YTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaApAQCAtNzAsNiAr
NzAsOCBAQAogI2lmbmRlZiBld2tfZnJhbWVfaAogI2RlZmluZSBld2tfZnJhbWVfaAogCisjaW5j
bHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgorCiAjaW5jbHVkZSA8RXZhcy5oPgogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKQEAgLTIyMSw2ICsyMjMsMTcgQEAgdHlwZWRlZiBlbnVtIHsKIEVBUEkg
RXZhc19PYmplY3QgKmV3a19mcmFtZV92aWV3X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAK
IC8qKgorICogUmV0cmlldmVzIHRoZSBFd2tfU2VjdXJpdHlfT3JpZ2luIG9mIHRoaXMgZnJhbWUu
CisgKgorICogVGhlIHJldHVybmVkIG9iamVjdCBzaG91bGQgYmUgZnJlZWQgYnkgZXdrX3NlY3Vy
aXR5X29yaWdpbl9mcmVlKCkuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB0
aGUgc2VjdXJpdHkgb3JpZ2luCisgKgorICogQHJldHVybiBzZWN1cml0eSBvcmlnaW4gb2JqZWN0
CisgKi8KK0VBUEkgRXdrX1NlY3VyaXR5X09yaWdpbiAqZXdrX2ZyYW1lX3NlY3VyaXR5X29yaWdp
bl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIFJldHVybnMgYSBuZXcgaXRl
cmF0b3Igb3ZlciBhbGwgZGlyZWN0IGNoaWxkcmVuIGZyYW1lcy4KICAqCiAgKiBLZWVwIGZyYW1l
IG9iamVjdCBpbnRhY3Qgd2hpbGUgaXRlcmF0aW9uIGhhcHBlbnMgb3RoZXJ3aXNlIGZyYW1lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkZDI0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcApAQCAtMCwwICsxLDEw
MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgorCisj
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdp
bl9wcml2YXRlLmgiCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKworY29uc3QgY2hhciogZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbF9nZXQoRXdr
X1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQoreworICAgIGlmICghb3JpZ2luLT5wcm90b2NvbCkK
KyAgICAgICAgb3JpZ2luLT5wcm90b2NvbCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKG9yaWdpbi0+
c2VjdXJpdHlPcmlnaW4tPnByb3RvY29sKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4g
b3JpZ2luLT5wcm90b2NvbDsKK30KKworY29uc3QgY2hhciogZXdrX3NlY3VyaXR5X29yaWdpbl9o
b3N0X2dldChFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCit7CisgICAgaWYgKCFvcmlnaW4t
Pmhvc3QpCisgICAgICAgIG9yaWdpbi0+aG9zdCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKG9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4tPmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiBv
cmlnaW4tPmhvc3Q7Cit9CisKK3VpbnQzMl90IGV3a19zZWN1cml0eV9vcmlnaW5fcG9ydF9nZXQo
Y29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBvcmlnaW4t
PnNlY3VyaXR5T3JpZ2luLT5wb3J0KCk7Cit9CisKK3VpbnQ2NF90IGV3a19zZWN1cml0eV9vcmln
aW5fd2ViX2RhdGFiYXNlX3VzYWdlX2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmln
aW4pCit7CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9y
aWdpbi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3VpbnQ2NF90
IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldChjb25zdCBFd2tfU2Vj
dXJpdHlfT3JpZ2luKiBvcmlnaW4pCit7CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4o
b3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCit9CisKK3ZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfc2V0
KGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCit7Cisj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBxdW90YSk7Cisj
ZW5kaWYKK30KKwordm9pZCBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUoRXdrX1NlY3VyaXR5X09y
aWdpbiogb3JpZ2luKQoreworICAgIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4gPSAwOworICAgIGVp
bmFfc3RyaW5nc2hhcmVfZGVsKG9yaWdpbi0+aG9zdCk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwob3JpZ2luLT5wcm90b2NvbCk7CisKKyAgICBkZWxldGUgb3JpZ2luOworfQorCisvKioKKyAq
IEBpbnRlcm5hbAorICogQ3JlYXRlcyBhIEVXSyB3cmFwcGVyIGZvciBXZWJDb3JlIFNlY3VyaXR5
IE9yaWdpbiBvYmplY3QuCisgKgorICogQHBhcmFtIGNvcmVPcmlnaW4gV2ViQ29yZSBTZWN1cml0
eSBPcmlnaW4gb2JqZWN0CisgKgorICogQHJldHVybiBhIEVXSyB3cmFwcGVyIG9mIFdlYkNvcmUg
U2VjdXJpdHkgT3JpZ2luIG9iamVjdCB3aGljaCBzaG91bGQgYmUKKyAqIGZyZWVkIGJ5IGV3a19z
ZWN1cml0eV9vcmlnaW5fZnJlZSgpCisgKi8KK0V3a19TZWN1cml0eV9PcmlnaW4qIGV3a19zZWN1
cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luKQorewor
ICAgIEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiA9IG5ldyBFd2tfU2VjdXJpdHlfT3JpZ2lu
OworCisgICAgb3JpZ2luLT5zZWN1cml0eU9yaWdpbiA9IGNvcmVPcmlnaW47CisgICAgb3JpZ2lu
LT5ob3N0ID0gMDsKKyAgICBvcmlnaW4tPnByb3RvY29sID0gMDsKKworICAgIHJldHVybiBvcmln
aW47Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29y
aWdpbi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjE2N2YzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uaApAQCAtMCwwICsx
LDEyMiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisvKioKKyAqIEBmaWxlICAgIGV3a19zZWN1cml0eV9vcmlnaW4uaAorICogQGJyaWVmICAgU2Vj
dXJpdHkgT3JpZ2luIEFQSS4KKyAqCisgKiBTZWN1cml0eSBPcmlnaW4gaXMgdGhlIG1lY2hhbmlz
bSB0aGF0IGRlZmluZXMgdGhlIGFjY2VzcyBsaW1pdHMgb2YgYSB3ZWJzaXRlLgorICogQmFzZWQg
b24gaW5mb3JtYXRpb24gc3VjaCBhcyBkb21haW4sIHByb3RvY29sIGFuZCBwb3J0LCB5b3UgY2Fu
IGdyYW50IG9yIG5vdAorICogYXV0aG9yaXphdGlvbiBmb3IgYWNjZXNzaW5nIGRhdGEgYW5kIHBl
cmZvcm1pbmcgY2VydGFpbiB0YXNrcy4gRGF0YWJhc2UgcXVvdGEKKyAqIGNhbiBhbHNvIGJlIGRl
ZmluZWQgYmFzZWQgb24gdGhlIHNlY3VyaXR5IG9yaWdpbi4KKyAqCisgKiBUaGUgZGF0YWJhc2Ug
cmVsYXRlZCBmdW5jdGlvbnMgd2lsbCBkbyBub3RoaW5nIGlmIFdlYktpdCBpcyBidWlsdCB3aXRo
b3V0IFdlYgorICogU1FMIERhdGFiYXNlIHN1cHBvcnQuCisgKi8KKworI2lmbmRlZiBld2tfc2Vj
dXJpdHlfb3JpZ2luX2gKKyNkZWZpbmUgZXdrX3NlY3VyaXR5X29yaWdpbl9oCisKKyNpbmNsdWRl
IDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19TZWN1cml0eV9PcmlnaW4gRXdrX1NlY3VyaXR5X09yaWdpbjsK
KworLyoqCisgKiBSZXR1cm5zIHRoZSBwcm90b2NvbCBvZiB0aGUgc2VjdXJpdHkgb3JpZ2luLgor
ICoKKyAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKKyAqCisgKiBJdCByZXR1cm5z
IGEgaW50ZXJuYWwgc3RyaW5nIHdoaWNoIHNob3VsZCBub3QKKyAqIGJlIG1vZGlmaWVkLiBUaGUg
c3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgorICoKKyAqIEByZXR1cm4g
dGhlIHByb3RvY29sIHNjaGVtZQorICovCitFQVBJIGNvbnN0IGNoYXIgICpld2tfc2VjdXJpdHlf
b3JpZ2luX3Byb3RvY29sX2dldChFd2tfU2VjdXJpdHlfT3JpZ2luICpvKTsKKworLyoqCisgKiBS
ZXR1cm5zIHRoZSBob3N0IG9mIHRoZSBzZWN1cml0eSBvcmlnaW4uCisgKgorICogSXQgcmV0dXJu
cyBhIGludGVybmFsIHN0cmluZyB3aGljaCBzaG91bGQgbm90CisgKiBiZSBtb2RpZmllZC4gVGhl
IHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KKyAqCisgKiBAcGFyYW0g
byBzZWN1cml0eSBvcmlnaW4gb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgaG9zdCBkb21haW4K
KyAqLworRUFQSSBjb25zdCBjaGFyICAqZXdrX3NlY3VyaXR5X29yaWdpbl9ob3N0X2dldChFd2tf
U2VjdXJpdHlfT3JpZ2luICpvKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBwb3J0IG9mIHRoZSBz
ZWN1cml0eSBvcmlnaW4uCisgKgorICogQHBhcmFtIG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAor
ICoKKyAqIEByZXR1cm4gdGhlIHBvcnQKKyAqLworRUFQSSB1aW50MzJfdCAgICAgZXdrX3NlY3Vy
aXR5X29yaWdpbl9wb3J0X2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvKTsKKworLyoq
CisgKiBSZXRyaWV2ZXMgdGhlIHVzYWdlIG9mIGEgZGF0YWJhc2UgZm9yIGEgc2VjdXJpdHkgb3Jp
Z2luLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd29uJ3Qgd29yayBpZiBXZWIgU1FMIERhdGFiYXNl
IHdhcyBub3QgZW5hYmxlZCB3aGVuCisgKiBidWlsZGluZyBXZWJLaXQgYW5kIHdpbGwganVzdCBy
ZXR1cm4gMC4KKyAqCisgKiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0CisgKgorICog
QHJldHVybiB0aGUgdXNhZ2UgaW4gYnl0ZXMKKyAqLworRUFQSSB1aW50NjRfdCAgICAgZXdrX3Nl
Y3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KGNvbnN0IEV3a19TZWN1cml0eV9P
cmlnaW4gKm8pOworCisvKioKKyAqIFJldHJpZXZlcyB0aGUgcXVvdGEgb2YgYSBkYXRhYmFzZSBm
b3IgYSBzZWN1cml0eSBvcmlnaW4uCisgKgorICogVGhpcyBmdW5jdGlvbiB3b24ndCB3b3JrIGlm
IFdlYiBTUUwgRGF0YWJhc2Ugd2FzIG5vdCBlbmFibGVkIHdoZW4KKyAqIGJ1aWxkaW5nIFdlYktp
dCBhbmQgd2lsbCBqdXN0IHJldHVybiAwLgorICoKKyAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdp
biBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSBxdW90YSBpbiBieXRlcworICovCitFQVBJIHVp
bnQ2NF90ICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90YV9nZXQoY29u
c3QgRXdrX1NlY3VyaXR5X09yaWdpbiAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgZGF0YWJhc2Ug
dXNhZ2UgcXVvdGEgZm9yIGEgc2VjdXJpdHkgb3JpZ2luLgorICoKKyAqIFRoaXMgZnVuY3Rpb24g
d29uJ3Qgd29yayBpZiBXZWIgU1FMIERhdGFiYXNlIHdhcyBub3QgZW5hYmxlZCB3aGVuCisgKiBi
dWlsZGluZyBXZWJLaXQuCisgKgorICogQHBhcmFtIG8gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAor
ICogQHBhcmFtIHF1b3RhIHRoZSB1c2FnZSBxdW90YSBpbiBieXRlcworICovCitFQVBJIHZvaWQg
ICAgICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90YV9zZXQoY29uc3Qg
RXdrX1NlY3VyaXR5X09yaWdpbiAqbywgdWludDY0X3QgcXVvdGEpOworCisvKioKKyAqIFJlbGVh
c2UgYWxsIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYSBzZWN1cml0eSBvcmlnaW4gb2JqZWN0Lgor
ICoKKyAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKKyAqLworRUFQSSB2b2lkICAg
ICAgICAgZXdrX3NlY3VyaXR5X29yaWdpbl9mcmVlKEV3a19TZWN1cml0eV9PcmlnaW4gKm8pOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19zZWN1cml0eV9v
cmlnaW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9v
cmlnaW5fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmln
aW5fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhY2Q5ODgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29y
aWdpbl9wcml2YXRlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19zZWN1cml0eV9vcmlnaW5fcHJp
dmF0ZV9oCisjZGVmaW5lIGV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZV9oCisKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworc3RydWN0IF9Fd2tfU2VjdXJpdHlfT3JpZ2luIHsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOworICAgIGNvbnN0IGNoYXIqIHBy
b3RvY29sOworICAgIGNvbnN0IGNoYXIqIGhvc3Q7Cit9OworCitFd2tfU2VjdXJpdHlfT3JpZ2lu
KiBld2tfc2VjdXJpdHlfb3JpZ2luX25ldyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogbyk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3NlY3VyaXR5X29y
aWdpbl9wcml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138054</attachid>
            <date>2012-04-20 00:27:39 -0700</date>
            <delta_ts>2012-04-20 09:08:23 -0700</delta_ts>
            <desc>use ewk_private.h instead of ewk_security_origin_private.h</desc>
            <filename>security_origin.patch</filename>
            <type>text/plain</type>
            <size>13364</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTZjMWJlMy4uZWRlMzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNC0xOSAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgU2VjdXJpdHkgT3JpZ2luIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorCiAyMDEyLTA0LTEwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDTWFrZV0gRW5hYmxlIFVTRV9GT0xERVJTIHByb3BlcnR5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCA1NGU3ZDkxLi5jNzdhOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTEwMSw2ICsxMDEsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVm
bC9ld2svZXdrX2pzLmNwcAogICAgIGVmbC9ld2svZXdrX21haW4uY3BwCiAgICAgZWZsL2V3ay9l
d2tfbmV0d29yay5jcHAKKyAgICBlZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCiAgICAg
ZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcAogICAgIGVmbC9ld2svZXdrX3NldHRpbmdz
LmNwcAogICAgIGVmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBAIC0yNTIsNiAr
MjUzLDcgQEAgU0VUKEVXZWJLaXRfSEVBREVSUwogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9lZmwvZXdrL2V3a19sb2dnaW5nLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vZWZsL2V3ay9ld2tfbWFpbi5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2Vm
bC9ld2svZXdrX25ldHdvcmsuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a19zZXR0aW5ncy5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L2VmbC9ld2svZXdrX3ZpZXcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDgwYzBjNWQuLjE1
YTY3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNC0xOSAgVGhp
YWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KKworICAgICAg
ICBbRUZMXSBBZGQgU2VjdXJpdHkgT3JpZ2luIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMjMKKworICAgICAgICBBZGRlZCBhbiBBUEkgdG8g
Z2V0IGEgU2VjdXJpdHkgT3JpZ2luIGhhbmRsZSBmcm9tIGEgRXdrX0ZyYW1lLiBUaGlzIGlzCisg
ICAgICAgIG5lZWRlZCBmb3IgZmluZSBncmFpbmVkIHNlY3VyaXR5IHBvbGljeS4gVGhpcyBuZXcg
QVBJIHdpbGwgYWxzbyBhbGxvdworICAgICAgICB0byBkZWZpbmUgcXVvdGEgYW5kIGdldCB1c2Fn
ZSBpbmZvcm1hdGlvbiBvZiBhIFdlYiBTdG9yYWdlIGJhc2VkIG9uIGl0cworICAgICAgICBTZWN1
cml0eSBPcmlnaW4uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBld2svRVdlYktpdC5oOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAg
ICAgICAoZXdrX2ZyYW1lX3NlY3VyaXR5X29yaWdpbl9nZXQpOgorICAgICAgICAqIGV3ay9ld2tf
ZnJhbWUuaDoKKyAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbF9nZXQpOgorICAgICAgICAoZXdr
X3NlY3VyaXR5X29yaWdpbl9ob3N0X2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2lu
X3BvcnRfZ2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3Vz
YWdlX2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90
YV9nZXQpOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFf
c2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSk6CisgICAgICAgIChld2tf
c2VjdXJpdHlfb3JpZ2luX25ldyk6CisgICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4u
aDogQWRkZWQuCisKIDIwMTItMDQtMTkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1
bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBkaXNwYXRjaERpZENhbmNlbENsaWVudFJl
ZGlyZWN0IG5lZWRzIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAppbmRleCAw
ZmZiNTFjLi4zMmZlMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktp
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJld2tfanMuaCIKICNpbmNsdWRlICJld2tfbWFpbi5oIgogI2luY2x1ZGUg
ImV3a19uZXR3b3JrLmgiCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1
ZGUgImV3a19zZWN1cml0eV9wb2xpY3kuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKICNp
bmNsdWRlICJld2tfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA0
YzYzOWQzLi42YzZmNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMjg1
LDYgKzI4NSwxNiBAQCBFdmFzX09iamVjdCogZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tGcmFtZSkKICAgICByZXR1cm4gc21hcnREYXRhLT52aWV3OwogfQogCitFd2tf
U2VjdXJpdHlfT3JpZ2luKiBld2tfZnJhbWVfc2VjdXJpdHlfb3JpZ2luX2dldChjb25zdCBFdmFz
X09iamVjdCAqZXdrRnJhbWUpCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgMCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+ZnJhbWUsIDApOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLCAwKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSwgMCk7CisKKyAgICByZXR1cm4gZXdrX3NlY3VyaXR5X29yaWdpbl9uZXcoc21hcnREYXRh
LT5mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKIEVpbmFfSXRlcmF0
b3IqIGV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEs
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCmluZGV4IDk0M2ZjMWUuLjQwOWEwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKQEAgLTcwLDYgKzcwLDggQEAKICNpZm5kZWYgZXdr
X2ZyYW1lX2gKICNkZWZpbmUgZXdrX2ZyYW1lX2gKIAorI2luY2x1ZGUgImV3a19zZWN1cml0eV9v
cmlnaW4uaCIKKwogI2luY2x1ZGUgPEV2YXMuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0y
MjEsNiArMjIzLDE3IEBAIHR5cGVkZWYgZW51bSB7CiBFQVBJIEV2YXNfT2JqZWN0ICpld2tfZnJh
bWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKKyAqIFJldHJpZXZlcyB0
aGUgRXdrX1NlY3VyaXR5X09yaWdpbiBvZiB0aGlzIGZyYW1lLgorICoKKyAqIFRoZSByZXR1cm5l
ZCBvYmplY3Qgc2hvdWxkIGJlIGZyZWVkIGJ5IGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSgpLgor
ICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgdGhlIHNlY3VyaXR5IG9yaWdpbgor
ICoKKyAqIEByZXR1cm4gc2VjdXJpdHkgb3JpZ2luIG9iamVjdAorICovCitFQVBJIEV3a19TZWN1
cml0eV9PcmlnaW4gKmV3a19mcmFtZV9zZWN1cml0eV9vcmlnaW5fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKKworLyoqCiAgKiBSZXR1cm5zIGEgbmV3IGl0ZXJhdG9yIG92ZXIgYWxsIGRpcmVj
dCBjaGlsZHJlbiBmcmFtZXMuCiAgKgogICogS2VlcCBmcmFtZSBvYmplY3QgaW50YWN0IHdoaWxl
IGl0ZXJhdGlvbiBoYXBwZW5zIG90aGVyd2lzZSBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3By
aXZhdGUuaAppbmRleCA5YzIyZDRhLi5mNGI5OWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKQEAgLTg1LDYgKzg1LDcgQEAgc3RydWN0IENvbG9yQ2hvb3NlckNsaWVudDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKICNlbmRpZgorY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0cnVjdCBFd2tfV2luZG93X09iamVjdF9DbGVhcmVk
X0V2ZW50IHsKQEAgLTI1NSw2ICsyNTYsOCBAQCB2b2lkIGV3a192aWV3X21peGVkX2NvbnRlbnRf
ZGlzcGxheWVkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNEaXNwbGF5ZQogdm9p
ZCBld2tfdmlld19taXhlZF9jb250ZW50X3J1bl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJv
b2wgaGFzUnVuKTsKIHZvaWQgZXdrX2ZyYW1lX3hzc19kZXRlY3RlZChFdmFzX09iamVjdCogZXdr
RnJhbWUsIGNvbnN0IEV3a19GcmFtZV9Yc3NfTm90aWZpY2F0aW9uKiB4c3NJbmZvKTsKIAorRXdr
X1NlY3VyaXR5X09yaWdpbiogZXdrX3NlY3VyaXR5X29yaWdpbl9uZXcoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIG9yaWdpbik7CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBi
b29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX29iamVjdF9jcmVhdGUoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfTmF0aXZlX1N1cmZhY2UqIG5hdGl2ZVN1cmZhY2UsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqIGV3
a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NvbnRleHRfZ2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlf
b3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDFmODE1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCkBA
IC0wLDAgKzEsMTA5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3Jp
Z2luLmgiCisKKyNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSA8RWluYS5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K3N0cnVjdCBfRXdrX1NlY3VyaXR5X09yaWdpbiB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKKyAgICBjb25zdCBjaGFyKiBwcm90b2NvbDsKKyAg
ICBjb25zdCBjaGFyKiBob3N0OworfTsKKworY29uc3QgY2hhciogZXdrX3NlY3VyaXR5X29yaWdp
bl9wcm90b2NvbF9nZXQoRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQoreworICAgIGlmICgh
b3JpZ2luLT5wcm90b2NvbCkKKyAgICAgICAgb3JpZ2luLT5wcm90b2NvbCA9IGVpbmFfc3RyaW5n
c2hhcmVfYWRkKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnByb3RvY29sKCkudXRmOCgpLmRhdGEo
KSk7CisKKyAgICByZXR1cm4gb3JpZ2luLT5wcm90b2NvbDsKK30KKworY29uc3QgY2hhciogZXdr
X3NlY3VyaXR5X29yaWdpbl9ob3N0X2dldChFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCit7
CisgICAgaWYgKCFvcmlnaW4tPmhvc3QpCisgICAgICAgIG9yaWdpbi0+aG9zdCA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPmhvc3QoKS51dGY4KCkuZGF0YSgp
KTsKKworICAgIHJldHVybiBvcmlnaW4tPmhvc3Q7Cit9CisKK3VpbnQzMl90IGV3a19zZWN1cml0
eV9vcmlnaW5fcG9ydF9nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQorewor
ICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5wb3J0KCk7Cit9CisKK3VpbnQ2NF90
IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3VzYWdlX2dldChjb25zdCBFd2tfU2Vj
dXJpdHlfT3JpZ2luKiBvcmlnaW4pCit7CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4o
b3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCit9CisKK3VpbnQ2NF90IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3Rh
X2dldChjb25zdCBFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4pCit7CisjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJf
ZGF0YWJhc2VfcXVvdGFfc2V0KGNvbnN0IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiwgdWlu
dDY0X3QgcXVvdGEpCit7CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICBXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
LmdldCgpLCBxdW90YSk7CisjZW5kaWYKK30KKwordm9pZCBld2tfc2VjdXJpdHlfb3JpZ2luX2Zy
ZWUoRXdrX1NlY3VyaXR5X09yaWdpbiogb3JpZ2luKQoreworICAgIG9yaWdpbi0+c2VjdXJpdHlP
cmlnaW4gPSAwOworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKG9yaWdpbi0+aG9zdCk7CisgICAg
ZWluYV9zdHJpbmdzaGFyZV9kZWwob3JpZ2luLT5wcm90b2NvbCk7CisKKyAgICBkZWxldGUgb3Jp
Z2luOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ3JlYXRlcyBhIEVXSyB3cmFwcGVyIGZv
ciBXZWJDb3JlIFNlY3VyaXR5IE9yaWdpbiBvYmplY3QuCisgKgorICogQHBhcmFtIGNvcmVPcmln
aW4gV2ViQ29yZSBTZWN1cml0eSBPcmlnaW4gb2JqZWN0CisgKgorICogQHJldHVybiBhIEVXSyB3
cmFwcGVyIG9mIFdlYkNvcmUgU2VjdXJpdHkgT3JpZ2luIG9iamVjdCB3aGljaCBzaG91bGQgYmUK
KyAqIGZyZWVkIGJ5IGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZSgpCisgKi8KK0V3a19TZWN1cml0
eV9PcmlnaW4qIGV3a19zZWN1cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiBjb3JlT3JpZ2luKQoreworICAgIEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiA9IG5ldyBF
d2tfU2VjdXJpdHlfT3JpZ2luOworCisgICAgb3JpZ2luLT5zZWN1cml0eU9yaWdpbiA9IGNvcmVP
cmlnaW47CisgICAgb3JpZ2luLT5ob3N0ID0gMDsKKyAgICBvcmlnaW4tPnByb3RvY29sID0gMDsK
KworICAgIHJldHVybiBvcmlnaW47Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NlY3VyaXR5X29yaWdpbi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1
cml0eV9vcmlnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjE2N2Yz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9v
cmlnaW4uaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19zZWN1cml0eV9vcmlnaW4u
aAorICogQGJyaWVmICAgU2VjdXJpdHkgT3JpZ2luIEFQSS4KKyAqCisgKiBTZWN1cml0eSBPcmln
aW4gaXMgdGhlIG1lY2hhbmlzbSB0aGF0IGRlZmluZXMgdGhlIGFjY2VzcyBsaW1pdHMgb2YgYSB3
ZWJzaXRlLgorICogQmFzZWQgb24gaW5mb3JtYXRpb24gc3VjaCBhcyBkb21haW4sIHByb3RvY29s
IGFuZCBwb3J0LCB5b3UgY2FuIGdyYW50IG9yIG5vdAorICogYXV0aG9yaXphdGlvbiBmb3IgYWNj
ZXNzaW5nIGRhdGEgYW5kIHBlcmZvcm1pbmcgY2VydGFpbiB0YXNrcy4gRGF0YWJhc2UgcXVvdGEK
KyAqIGNhbiBhbHNvIGJlIGRlZmluZWQgYmFzZWQgb24gdGhlIHNlY3VyaXR5IG9yaWdpbi4KKyAq
CisgKiBUaGUgZGF0YWJhc2UgcmVsYXRlZCBmdW5jdGlvbnMgd2lsbCBkbyBub3RoaW5nIGlmIFdl
YktpdCBpcyBidWlsdCB3aXRob3V0IFdlYgorICogU1FMIERhdGFiYXNlIHN1cHBvcnQuCisgKi8K
KworI2lmbmRlZiBld2tfc2VjdXJpdHlfb3JpZ2luX2gKKyNkZWZpbmUgZXdrX3NlY3VyaXR5X29y
aWdpbl9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19TZWN1cml0eV9PcmlnaW4gRXdr
X1NlY3VyaXR5X09yaWdpbjsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBwcm90b2NvbCBvZiB0aGUg
c2VjdXJpdHkgb3JpZ2luLgorICoKKyAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QK
KyAqCisgKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIHdoaWNoIHNob3VsZCBub3QKKyAq
IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVk
LgorICoKKyAqIEByZXR1cm4gdGhlIHByb3RvY29sIHNjaGVtZQorICovCitFQVBJIGNvbnN0IGNo
YXIgICpld2tfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29sX2dldChFd2tfU2VjdXJpdHlfT3JpZ2lu
ICpvKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBob3N0IG9mIHRoZSBzZWN1cml0eSBvcmlnaW4u
CisgKgorICogSXQgcmV0dXJucyBhIGludGVybmFsIHN0cmluZyB3aGljaCBzaG91bGQgbm90Cisg
KiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJl
ZC4KKyAqCisgKiBAcGFyYW0gbyBzZWN1cml0eSBvcmlnaW4gb2JqZWN0CisgKgorICogQHJldHVy
biB0aGUgaG9zdCBkb21haW4KKyAqLworRUFQSSBjb25zdCBjaGFyICAqZXdrX3NlY3VyaXR5X29y
aWdpbl9ob3N0X2dldChFd2tfU2VjdXJpdHlfT3JpZ2luICpvKTsKKworLyoqCisgKiBSZXR1cm5z
IHRoZSBwb3J0IG9mIHRoZSBzZWN1cml0eSBvcmlnaW4uCisgKgorICogQHBhcmFtIG8gc2VjdXJp
dHkgb3JpZ2luIG9iamVjdAorICoKKyAqIEByZXR1cm4gdGhlIHBvcnQKKyAqLworRUFQSSB1aW50
MzJfdCAgICAgZXdrX3NlY3VyaXR5X29yaWdpbl9wb3J0X2dldChjb25zdCBFd2tfU2VjdXJpdHlf
T3JpZ2luICpvKTsKKworLyoqCisgKiBSZXRyaWV2ZXMgdGhlIHVzYWdlIG9mIGEgZGF0YWJhc2Ug
Zm9yIGEgc2VjdXJpdHkgb3JpZ2luLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd29uJ3Qgd29yayBp
ZiBXZWIgU1FMIERhdGFiYXNlIHdhcyBub3QgZW5hYmxlZCB3aGVuCisgKiBidWlsZGluZyBXZWJL
aXQgYW5kIHdpbGwganVzdCByZXR1cm4gMC4KKyAqCisgKiBAcGFyYW0gbyBzZWN1cml0eSBvcmln
aW4gb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgdXNhZ2UgaW4gYnl0ZXMKKyAqLworRUFQSSB1
aW50NjRfdCAgICAgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KGNv
bnN0IEV3a19TZWN1cml0eV9PcmlnaW4gKm8pOworCisvKioKKyAqIFJldHJpZXZlcyB0aGUgcXVv
dGEgb2YgYSBkYXRhYmFzZSBmb3IgYSBzZWN1cml0eSBvcmlnaW4uCisgKgorICogVGhpcyBmdW5j
dGlvbiB3b24ndCB3b3JrIGlmIFdlYiBTUUwgRGF0YWJhc2Ugd2FzIG5vdCBlbmFibGVkIHdoZW4K
KyAqIGJ1aWxkaW5nIFdlYktpdCBhbmQgd2lsbCBqdXN0IHJldHVybiAwLgorICoKKyAqIEBwYXJh
bSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSBxdW90YSBpbiBi
eXRlcworICovCitFQVBJIHVpbnQ2NF90ICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRh
YmFzZV9xdW90YV9nZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiAqbyk7CisKKy8qKgorICog
U2V0cyB0aGUgZGF0YWJhc2UgdXNhZ2UgcXVvdGEgZm9yIGEgc2VjdXJpdHkgb3JpZ2luLgorICoK
KyAqIFRoaXMgZnVuY3Rpb24gd29uJ3Qgd29yayBpZiBXZWIgU1FMIERhdGFiYXNlIHdhcyBub3Qg
ZW5hYmxlZCB3aGVuCisgKiBidWlsZGluZyBXZWJLaXQuCisgKgorICogQHBhcmFtIG8gc2VjdXJp
dHkgb3JpZ2luIG9iamVjdAorICogQHBhcmFtIHF1b3RhIHRoZSB1c2FnZSBxdW90YSBpbiBieXRl
cworICovCitFQVBJIHZvaWQgICAgICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFz
ZV9xdW90YV9zZXQoY29uc3QgRXdrX1NlY3VyaXR5X09yaWdpbiAqbywgdWludDY0X3QgcXVvdGEp
OworCisvKioKKyAqIFJlbGVhc2UgYWxsIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYSBzZWN1cml0
eSBvcmlnaW4gb2JqZWN0LgorICoKKyAqIEBwYXJhbSBvIHNlY3VyaXR5IG9yaWdpbiBvYmplY3QK
KyAqLworRUFQSSB2b2lkICAgICAgICAgZXdrX3NlY3VyaXR5X29yaWdpbl9mcmVlKEV3a19TZWN1
cml0eV9PcmlnaW4gKm8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlm
IC8vIGV3a19zZWN1cml0eV9vcmlnaW5faAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>