<?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>79452</bug_id>
          
          <creation_ts>2012-02-23 23:48:00 -0800</creation_ts>
          <short_desc>[EFL] Implementation of GraphicsContext3D for EFL port</short_desc>
          <delta_ts>2012-09-26 08:34:37 -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>Other</rep_platform>
          <op_sys>Linux</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>79766</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Hyowon Kim">hw1008.kim</reporter>
          <assigned_to name="Kenneth Rohde Christiansen">kenneth</assigned_to>
          <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564001</commentid>
    <comment_count>0</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-23 23:48:00 -0800</bug_when>
    <thetext>Evas_GL is used to do OpenGL rendering on Evas, in which a structure &apos;Evas_GL_API&apos; contains all the OpenGL functions.

GraphicsContext3D in EFL port should call OpenGL functions indirectly through the Evas_GL_API, and not use GraphicsContext3DOpenGL(Common).

So, we use the GraphicsContext3DPrivate to delegate all OpenGL function calls, and it will be implemented to use Evas_GL (bug 62961).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564049</commentid>
    <comment_count>1</comment_count>
      <attachid>128678</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-24 00:39:57 -0800</bug_when>
    <thetext>Created attachment 128678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564053</commentid>
    <comment_count>2</comment_count>
      <attachid>128679</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-24 00:42:08 -0800</bug_when>
    <thetext>Created attachment 128679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565232</commentid>
    <comment_count>3</comment_count>
      <attachid>128679</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 17:11:34 -0800</bug_when>
    <thetext>Comment on attachment 128679
Patch

Clearing flags on attachment: 128679

Committed r108938: &lt;http://trac.webkit.org/changeset/108938&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565233</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 17:11:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728590</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-26 08:29:00 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728592</commentid>
    <comment_count>6</comment_count>
      <attachid>165809</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-26 08:29:06 -0700</bug_when>
    <thetext>Created attachment 165809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728596</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-26 08:33:41 -0700</bug_when>
    <thetext>I added to the wrong bug sorry...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128678</attachid>
            <date>2012-02-24 00:39:57 -0800</date>
            <delta_ts>2012-02-24 00:42:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79452-20120224173956.patch</filename>
            <type>text/plain</type>
            <size>33783</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3NjljYjE5OTUzNGNh
NjVmN2NjZGMzMGUyZDk4MTE0ZjgyOTNmZS4uNDkwMTIyZGI0ZDM0N2I5NmYzYzQ5MGY2M2E2YmUx
OWZlYjdmMjY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAxMi0wMi0yNCAgSHlv
d29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gSW1wbGVt
ZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0M0QgZm9yIEVGTCBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6aXNHTEVTMkNvbXBsaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5k
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyU3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmN1bGxGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1
bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVy
YXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3Rp
dmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFj
aGVkU2hhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0
cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJv
b2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQ
YXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29u
dGV4dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
UHJvZ3JhbWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9n
cmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFy
YW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBh
cmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlm
b3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1p
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0
cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0
dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aGludCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bGlu
ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxTdG9yZWkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBvbHlnb25PZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNjaXNzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3ApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp0ZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0
ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWI0Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQ
b2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN5
bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJ
bnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNSZXNvdXJjZVNhZmUpOgorCiAyMDEyLTAyLTIzICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGhpZGUgY29sb3IgcGlja2VyIHVwb24gcGFuZWwgc3dpdGNoLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRl
eHQzREVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY1OTM5NzhmMjc2ZWQ3OTJlNTJjNjUyZWU4N2JmYzc4
YWE4MzU1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTAsMCArMSw4NjAgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorCisjaW5jbHVk
ZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2lu
ZG93KiBob3N0V2luZG93LCBSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK3sKKyAgICBib29sIHJl
bmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QgPSAocmVuZGVyU3R5bGUgPT0gUmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpOworCisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4g
aW50ZXJuYWwgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZShhdHRycywgaG9zdFdp
bmRvdywgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7CisgICAgaWYgKCFpbnRlcm5hbCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMsIGhvc3RXaW5kb3csIHJl
bmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpKTsKKyAgICBjb250ZXh0LT5tX3ByaXZhdGUgPSBp
bnRlcm5hbC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworfQorCitH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wgcmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpCisgICAgOiBtX2N1cnJlbnRXaWR0aCgwKQorICAgICwgbV9jdXJyZW50
SGVpZ2h0KDApCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0Qo
KQoreworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpw
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5wbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCk7Cit9CisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCitQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1M
YXllcigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30K
KyNlbmRpZgorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQoKQor
eworICAgIHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOworfQorCitib29s
IEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5pc0dMRVMyQ29tcGxpYW50KCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSkKK3sKKyAgICBtX3ByaXZhdGUt
PmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0
dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyKQoreworICAgIG1fcHJpdmF0ZS0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgbV9wcml2YXRlLT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbV9wcml2YXRlLT5iaW5kQnVmZmVyKHRh
cmdldCwgYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbV9w
cml2YXRlLT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBidWZmZXIpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCit7CisgICAgbV9wcml2YXRlLT5iaW5kUmVuZGVyYnVmZmVy
KHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCit7Cisg
ICAgbV9wcml2YXRlLT5iaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdy
ZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCit7CisgICAgbV9wcml2YXRl
LT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKQoreworICAgIG1fcHJpdmF0
ZS0+YmxlbmRFcXVhdGlvbihtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkK
K3sKKyAgICBtX3ByaXZhdGUtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxw
aGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc3Jj
RmFjdG9yLCBHQzNEZW51bSBkc3RGYWN0b3IpCit7CisgICAgbV9wcml2YXRlLT5ibGVuZEZ1bmMo
c3JjRmFjdG9yLCBkc3RGYWN0b3IpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVu
ZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0g
c3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQoreworICAgIG1fcHJpdmF0ZS0+YmxlbmRGdW5j
U2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlw
dHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpCit7CisgICAgbV9wcml2YXRlLT5idWZmZXJEYXRhKHRh
cmdldCwgc2l6ZSwgMCwgdXNhZ2UpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZm
ZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRh
dGEsIEdDM0RlbnVtIHVzYWdlKQoreworICAgIG1fcHJpdmF0ZS0+YnVmZmVyRGF0YSh0YXJnZXQs
IHNpemUsIGRhdGEsIHVzYWdlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVy
U3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIg
c2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBtX3ByaXZhdGUtPmJ1ZmZlclN1YkRhdGEo
dGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworfQorCitHQzNEZW51bSBHcmFwaGljc0NvbnRl
eHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKK3sKKyAgICBtX3By
aXZhdGUtPmNsZWFyKG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNv
bG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdD
M0RjbGFtcGYgYWxwaGEpCit7CisgICAgbV9wcml2YXRlLT5jbGVhckNvbG9yKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChH
QzNEY2xhbXBmIGRlcHRoKQoreworICAgIG1fcHJpdmF0ZS0+Y2xlYXJEZXB0aChkZXB0aCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyU3RlbmNpbChHQzNEaW50IGNsZWFyVmFs
dWUpCit7CisgICAgbV9wcml2YXRlLT5jbGVhclN0ZW5jaWwoY2xlYXJWYWx1ZSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29s
ZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBt
X3ByaXZhdGUtPmNvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
Cit7CisgICAgbV9wcml2YXRlLT5jb21waWxlU2hhZGVyKHNoYWRlcik7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQoreworICAgIG1f
cHJpdmF0ZS0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4T2Zmc2V0LCBHQzNEaW50IHlPZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbV9wcml2YXRlLT5jb3B5VGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4T2Zmc2V0LCB5T2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UoR0MzRGVudW0gbW9k
ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmN1bGxGYWNlKG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpkZXB0aEZ1bmMoR0MzRGVudW0gZnVuYykKK3sKKyAgICBtX3ByaXZhdGUtPmRl
cHRoRnVuYyhmdW5jKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhNYXNrKEdD
M0Rib29sZWFuIGZsYWcpCit7CisgICAgbV9wcml2YXRlLT5kZXB0aE1hc2soZmxhZyk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0Mz
RGNsYW1wZiB6RmFyKQoreworICAgIG1fcHJpdmF0ZS0+ZGVwdGhSYW5nZSh6TmVhciwgekZhcik7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1fcHJpdmF0ZS0+
ZGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwKQoreworICAgIG1fcHJpdmF0ZS0+ZGlzYWJsZShjYXAp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
R0MzRHVpbnQgaW5kZXgpCit7CisgICAgbV9wcml2YXRlLT5kaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0Rl
bnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKK3sKKyAgICBtX3ByaXZh
dGUtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0Mz
RGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQpCit7CisgICAgbV9wcml2YXRlLT5kcmF3RWxl
bWVudHMobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCit7CisgICAgbV9wcml2YXRlLT5lbmFibGUoY2Fw
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
R0MzRHVpbnQgaW5kZXgpCit7CisgICAgbV9wcml2YXRlLT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbmRleCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCit7CisgICAg
bV9wcml2YXRlLT5maW5pc2goKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2go
KQoreworICAgIG1fcHJpdmF0ZS0+Zmx1c2goKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRh
Y2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJUYXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVm
ZmVyKQoreworICAgIG1fcHJpdmF0ZS0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJUYXJnZXQsIGJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4VGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUsIEdDM0RpbnQgbGV2ZWwpCit7CisgICAgbV9wcml2YXRlLT5mcmFtZWJ1ZmZlclRleHR1cmUy
RCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleFRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKK3sKKyAgICBt
X3ByaXZhdGUtPmZyb250RmFjZShtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQoreworICAgIG1fcHJpdmF0ZS0+Z2VuZXJh
dGVNaXBtYXAodGFyZ2V0KTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZl
QXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mIGluZm8pCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0QWN0aXZlQXR0cmliKHByb2dy
YW0sIGluZGV4LCBpbmZvKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZl
VW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJ
bmZvJiBpbmZvKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldEFjdGl2ZVVuaWZvcm0ocHJv
Z3JhbSwgaW5kZXgsIGluZm8pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQs
IEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpCit7CisgICAgbV9w
cml2YXRlLT5nZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFk
ZXJzKTsKK30KKworaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9v
bGVhbiogdmFsdWUpCit7CisgICAgbV9wcml2YXRlLT5nZXRCb29sZWFudihwYXJhbU5hbWUsIHZh
bHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQorewor
ICAgIG1fcHJpdmF0ZS0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZh
bHVlKTsKK30KKworR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRD
b250ZXh0QXR0cmlidXRlcygpOworfQorCitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXJyb3IoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldEVycm9yKCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9h
dCogdmFsdWUpCit7CisgICAgbV9wcml2YXRlLT5nZXRGbG9hdHYocGFyYW1OYW1lLCB2YWx1ZSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcGFyYW1OYW1lLCB2
YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbV9wcml2YXRlLT5nZXRJbnRlZ2Vy
dihwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
aW50KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJh
bU5hbWUsIHZhbHVlKTsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFt
SW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1fcHJpdmF0ZS0+Z2V0U2hh
ZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsKK30KKworU3RyaW5n
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0U2hhZGVyU291cmNlKHNoYWRlcik7Cit9
CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKEdDM0RlbnVtIG5hbWUpCit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0U3RyaW5nKG5hbWUpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldFRleFBh
cmFtZXRlcmZ2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbV9wcml2YXRlLT5nZXRVbmlmb3JtZnYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCogdmFsdWUpCit7CisgICAgbV9wcml2YXRlLT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlKTsKK30KKworR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1l
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBt
X3ByaXZhdGUtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbV9wcml2YXRl
LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK2xvbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwg
R0MzRGVudW0gcGFyYW1OYW1lKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldFZlcnRleEF0
dHJpYk9mZnNldChpbmRleCwgcGFyYW1OYW1lKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6aGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUpCit7CisgICAgbV9wcml2YXRl
LT5oaW50KHRhcmdldCwgbW9kZSk7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNE
Ojppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5pc0J1ZmZlcihvYmopOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNF
bmFibGVkKEdDM0RlbnVtIGNhcCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pc0VuYWJsZWQo
Y2FwKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIo
UGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNGcmFtZWJ1
ZmZlcihvYmopOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFt
KFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmlzUHJvZ3Jh
bShvYmopOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNSZW5k
ZXJidWZmZXIob2JqKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmlzU2hh
ZGVyKG9iaik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUo
UGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNUZXh0dXJl
KG9iaik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmVXaWR0aChHQzNEZmxvYXQg
d2lkdGgpCit7CisgICAgbV9wcml2YXRlLT5saW5lV2lkdGgod2lkdGgpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7
CisgICAgbV9wcml2YXRlLT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFt
KQoreworICAgIG1fcHJpdmF0ZS0+cGl4ZWxTdG9yZWkocGFyYW1OYW1lLCBwYXJhbSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3Rvciwg
R0MzRGZsb2F0IHVuaXRzKQoreworICAgIG1fcHJpdmF0ZS0+cG9seWdvbk9mZnNldChmYWN0b3Is
IHVuaXRzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5y
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbV9wcml2YXRlLT5yZW5kZXJi
dWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVl
LCBHQzNEYm9vbGVhbiBpbnZlcnQpCit7CisgICAgbV9wcml2YXRlLT5zYW1wbGVDb3ZlcmFnZSh2
YWx1ZSwgaW52ZXJ0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3NvcihHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQorewor
ICAgIG1fcHJpdmF0ZS0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgbV9wcml2YXRlLT5zaGFkZXJTb3VyY2UocHJv
Z3JhbSwgc3RyaW5nKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMo
R0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCit7CisgICAgbV9wcml2
YXRlLT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMs
IEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQoreworICAgIG1fcHJpdmF0ZS0+c3RlbmNpbEZ1
bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQoreworICAgIG1fcHJpdmF0ZS0+c3Rl
bmNpbE1hc2sobWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNr
U2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtX3ByaXZhdGUt
PnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0g
enBhc3MpCit7CisgICAgbV9wcml2YXRlLT5zdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0g
ZmFjZSwgR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQorewor
ICAgIG1fcHJpdmF0ZS0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNz
KTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lk
dGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGZsb2F0IHBhcmFtKQoreworICAgIG1fcHJpdmF0ZS0+dGV4UGFyYW1ldGVyZih0YXJnZXQs
IHBhcmFtTmFtZSwgcGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJh
bWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFt
KQoreworICAgIG1fcHJpdmF0ZS0+dGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBhcmFtTmFtZSwgcGFy
YW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4T2Zmc2V0LCBHQzNEaW50IHlPZmZzZXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAgbV9wcml2YXRlLT50ZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhPZmZzZXQsIHlPZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4KQoreworICAgIG1fcHJpdmF0ZS0+dW5p
Zm9ybTFmKGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQorewor
ICAgIG1fcHJpdmF0ZS0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgp
Cit7CisgICAgbV9wcml2YXRlLT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHYs
IEdDM0RzaXplaSBzaXplKQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9ybTFpdihsb2NhdGlvbiwg
c2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBtX3ByaXZhdGUtPnVuaWZv
cm0yZihsb2NhdGlvbiwgeCwgeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKK3sK
KyAgICBtX3ByaXZhdGUtPnVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4
LCBHQzNEaW50IHkpCit7CisgICAgbV9wcml2YXRlLT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9y
bTJpdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0Rm
bG9hdCB6KQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplKQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9y
bTNmdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6
KQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnVuaWZvcm0zaXYobG9j
YXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwg
R0MzRGZsb2F0IHcpCit7CisgICAgbV9wcml2YXRlLT51bmlmb3JtNGYobG9jYXRpb24sIHgsIHks
IHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpCit7CisgICAgbV9wcml2YXRl
LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEaW50IHosIEdDM0RpbnQgdykKK3sKKyAgICBtX3ByaXZhdGUtPnVuaWZvcm00aShsb2NhdGlv
biwgeCwgeSwgeiwgdyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUpCit7CisgICAgbV9w
cml2YXRlLT51bmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUsIEdDM0RzaXplaSBzaXplKQoreworICAgIG1f
cHJpdmF0ZS0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCB2YWx1
ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNE
c2l6ZWkgc2l6ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24s
IHNpemUsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwg
R0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpIHNpemUpCit7CisgICAgbV9wcml2YXRlLT51bmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
Cit7CisgICAgbV9wcml2YXRlLT51c2VQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQor
eworICAgIG1fcHJpdmF0ZS0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
IHgpCit7CisgICAgbV9wcml2YXRlLT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwgR0Mz
RGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbV9wcml2YXRlLT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgs
IHZhbHVlcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCit7CisgICAgbV9wcml2YXRl
LT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7
CisgICAgbV9wcml2YXRlLT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIHZhbHVlcyk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1fcHJpdmF0ZS0+dmVy
dGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQorewor
ICAgIG1fcHJpdmF0ZS0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCB2YWx1ZXMpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7CisgICAgbV9w
cml2YXRlLT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
KiB2YWx1ZXMpCit7CisgICAgbV9wcml2YXRlLT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIHZhbHVl
cyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9y
bWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpCit7CisgICAgbV9w
cml2YXRlLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVk
LCBzdHJpZGUsIG9mZnNldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0
KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQp
Cit7CisgICAgbV9wcml2YXRlLT52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bWFy
a0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LCBEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVy
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBH
cmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoRHJhd2lu
Z0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIo
KQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZUJ1ZmZlcigpOworfQorCitQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKK30KKworUGxhdGZvcm0zRE9i
amVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Y3JlYXRlUHJvZ3JhbSgpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUt
PmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5jcmVhdGVTaGFkZXIodHlwZSk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0
ZVRleHR1cmUoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1fcHJpdmF0ZS0+ZGVsZXRlQnVmZmVyKGJ1
ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1fcHJpdmF0ZS0+ZGVsZXRlRnJhbWVidWZm
ZXIoYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbV9wcml2YXRlLT5kZWxldGVQcm9ncmFt
KHByb2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbV9wcml2YXRlLT5kZWxldGVSZW5k
ZXJidWZmZXIoYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1fcHJpdmF0ZS0+ZGVsZXRlU2hh
ZGVyKHNoYWRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUo
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1fcHJpdmF0ZS0+ZGVsZXRlVGV4dHVy
ZSh0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJy
b3IoR0MzRGVudW0gZXJyb3IpCit7CisgICAgbV9wcml2YXRlLT5zeW50aGVzaXplR0xFcnJvcihl
cnJvcik7Cit9CisKK0V4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lv
bnMoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldEV4dGVuc2lvbnMoKTsKK30KKworSW50
U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFNpemUoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRy
PENvbnRleHRMb3N0Q2FsbGJhY2s+KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIEdDM0RlbnVt
IGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUsIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9yKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxp
ZGF0ZUF0dHJpYnV0ZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIqIHBpeGVs
cywgaW50IHBpeGVsc1NpemUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzb2x2ZU11bHRp
c2FtcGxpbmdJZk5lY2Vzc2FyeShjb25zdCBJbnRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Jlc291cmNlU2FmZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128679</attachid>
            <date>2012-02-24 00:42:08 -0800</date>
            <delta_ts>2012-09-26 08:28:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79452-20120224174206.patch</filename>
            <type>text/plain</type>
            <size>34247</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3NjljYjE5OTUzNGNh
NjVmN2NjZGMzMGUyZDk4MTE0ZjgyOTNmZS4uOWY5NzA5YTg3Njc0YjEyYTNhYjFlYzM2MDk3MDJl
MTk5NDY1ZGE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NSBAQAorMjAxMi0wMi0yNCAgSHlv
d29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gSW1wbGVt
ZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0M0QgZm9yIEVGTCBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2YXNfR0wgaXMgdXNlZCB0byBkbyBP
cGVuR0wgcmVuZGVyaW5nIG9uIEV2YXMsIGluIHdoaWNoCisgICAgICAgIGEgc3RydWN0dXJlICdF
dmFzX0dMX0FQSScgY29udGFpbnMgYWxsIHRoZSBPcGVuR0wgZnVuY3Rpb25zLgorCisgICAgICAg
IEdyYXBoaWNzQ29udGV4dDNEIGluIEVGTCBwb3J0IHNob3VsZCBjYWxsIE9wZW5HTCBmdW5jdGlv
bnMgaW5kaXJlY3RseQorICAgICAgICB0aHJvdWdoIHRoZSBFdmFzX0dMX0FQSSwgYW5kIG5vdCB1
c2UgR3JhcGhpY3NDb250ZXh0M0RPcGVuR0woQ29tbW9uKS4KKworICAgICAgICBTbywgd2UgdXNl
IHRoZSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgdG8gZGVsZWdhdGUgYWxsIE9wZW5HTCBmdW5j
dGlvbiBjYWxscywKKyAgICAgICAgYW5kIGl0IHdpbGwgYmUgaW1wbGVtZW50ZWQgdG8gdXNlIEV2
YXNfR0wgKGJ1ZyA2Mjk2MSkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRF
cXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpjb2xvck1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y3VsbEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmRlcHRoRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhN
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aFJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5cyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpm
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmZyb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRUZXhQYXJhbWV0ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VGV4UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlm
b3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRW
ZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0
b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9y
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2Npc3Nvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXJrQ29udGV4dENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtMYXllckNvbXBvc2l0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpyZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1Jlc291cmNlU2FmZSk6CisKIDIwMTIt
MDItMjMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogaGlkZSBjb2xvciBwaWNrZXIgdXBvbiBwYW5lbCBzd2l0Y2guCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNERWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjU5Mzk3OGYyNzZlZDc5MmU1MmM2NTJl
ZTg3YmZjNzhhYTgzNTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApAQCAtMCwwICsxLDg2MCBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJHTCkgfHwgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMs
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIFJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQoreworICAg
IGJvb2wgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCA9IChyZW5kZXJTdHlsZSA9PSBSZW5k
ZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlPiBpbnRlcm5hbCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKGF0dHJz
LCBob3N0V2luZG93LCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KTsKKyAgICBpZiAoIWlu
dGVybmFsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycywgaG9zdFdp
bmRvdywgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCkpOworICAgIGNvbnRleHQtPm1fcHJp
dmF0ZSA9IGludGVybmFsLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7
Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCByZW5k
ZXJEaXJlY3RseVRvSG9zdFdpbmRvdykKKyAgICA6IG1fY3VycmVudFdpZHRoKDApCisgICAgLCBt
X2N1cnJlbnRIZWlnaHQoMCkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0Nv
bnRleHQzRCgpCit7Cit9CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250
ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdAoreworICAgIHJldHVybiBt
X3ByaXZhdGUtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKTsKK30KKworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKK1BsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biAwOworfQorI2VuZGlmCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VDb250ZXh0Q3Vy
cmVudCgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cit9
CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmlzR0xFUzJDb21wbGlhbnQoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQoreworICAgIG1f
cHJpdmF0ZS0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIpCit7CisgICAgbV9wcml2YXRlLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hh
ZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwg
bmFtZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBtX3ByaXZhdGUtPmJpbmRC
dWZmZXIodGFyZ2V0LCBidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
RnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sK
KyAgICBtX3ByaXZhdGUtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBtX3ByaXZhdGUtPmJpbmRSZW5k
ZXJidWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0Rj
bGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKK3sKKyAgICBt
X3ByaXZhdGUtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCit7CisgICAg
bV9wcml2YXRlLT5ibGVuZEVxdWF0aW9uKG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9k
ZUFscGhhKQoreworICAgIG1fcHJpdmF0ZS0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0Is
IG1vZGVBbHBoYSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNE
ZW51bSBzcmNGYWN0b3IsIEdDM0RlbnVtIGRzdEZhY3RvcikKK3sKKyAgICBtX3ByaXZhdGUtPmJs
ZW5kRnVuYyhzcmNGYWN0b3IsIGRzdEZhY3Rvcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBH
QzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCit7CisgICAgbV9wcml2YXRlLT5i
bGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdD
M0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1c2FnZSkKK3sKKyAgICBtX3ByaXZhdGUtPmJ1ZmZl
ckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpCit7CisgICAgbV9wcml2YXRlLT5idWZmZXJEYXRh
KHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0Rz
aXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1fcHJpdmF0ZS0+YnVmZmVy
U3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7Cit9CisKK0dDM0RlbnVtIEdyYXBo
aWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQorewor
ICAgIG1fcHJpdmF0ZS0+Y2xlYXIobWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYg
Ymx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKK3sKKyAgICBtX3ByaXZhdGUtPmNsZWFyQ29sb3IocmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVh
ckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCit7CisgICAgbV9wcml2YXRlLT5jbGVhckRlcHRoKGRl
cHRoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJTdGVuY2lsKEdDM0RpbnQg
Y2xlYXJWYWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmNsZWFyU3RlbmNpbChjbGVhclZhbHVlKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwg
R0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKQor
eworICAgIG1fcHJpdmF0ZS0+Y29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKK3sKKyAgICBtX3ByaXZhdGUtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCit7
CisgICAgbV9wcml2YXRlLT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEaW50IHhPZmZzZXQsIEdDM0RpbnQgeU9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKK3sKKyAgICBtX3ByaXZhdGUtPmNv
cHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhPZmZzZXQsIHlPZmZzZXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNE
ZW51bSBtb2RlKQoreworICAgIG1fcHJpdmF0ZS0+Y3VsbEZhY2UobW9kZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoRnVuYyhHQzNEZW51bSBmdW5jKQoreworICAgIG1fcHJp
dmF0ZS0+ZGVwdGhGdW5jKGZ1bmMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXB0
aE1hc2soR0MzRGJvb2xlYW4gZmxhZykKK3sKKyAgICBtX3ByaXZhdGUtPmRlcHRoTWFzayhmbGFn
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZShHQzNEY2xhbXBmIHpO
ZWFyLCBHQzNEY2xhbXBmIHpGYXIpCit7CisgICAgbV9wcml2YXRlLT5kZXB0aFJhbmdlKHpOZWFy
LCB6RmFyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbV9w
cml2YXRlLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCit7CisgICAgbV9wcml2YXRlLT5kaXNh
YmxlKGNhcCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShHQzNEdWludCBpbmRleCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbmRleCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJh
eXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQoreworICAg
IG1fcHJpdmF0ZS0+ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNv
dW50LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50cHRyIG9mZnNldCkKK3sKKyAgICBtX3ByaXZhdGUt
PmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0KTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKK3sKKyAgICBtX3ByaXZhdGUtPmVu
YWJsZShjYXApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShHQzNEdWludCBpbmRleCkKK3sKKyAgICBtX3ByaXZhdGUtPmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKCkK
K3sKKyAgICBtX3ByaXZhdGUtPmZpbmlzaCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpmbHVzaCgpCit7CisgICAgbV9wcml2YXRlLT5mbHVzaCgpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlclRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCBidWZmZXIpCit7CisgICAgbV9wcml2YXRlLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlclRhcmdldCwgYnVmZmVyKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXhUYXJnZXQsIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZSwgR0MzRGludCBsZXZlbCkKK3sKKyAgICBtX3ByaXZhdGUtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4VGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQor
eworICAgIG1fcHJpdmF0ZS0+ZnJvbnRGYWNlKG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCit7CisgICAgbV9wcml2YXRl
LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
QWN0aXZlSW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRBY3RpdmVBdHRy
aWIocHJvZ3JhbSwgaW5kZXgsIGluZm8pOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgs
IEFjdGl2ZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0QWN0aXZlVW5p
Zm9ybShwcm9ncmFtLCBpbmRleCwgaW5mbyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBt
YXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycykKK3sK
KyAgICBtX3ByaXZhdGUtPmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291
bnQsIHNoYWRlcnMpOworfQorCitpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0Rib29sZWFuKiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldEJvb2xlYW52KHBhcmFt
TmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFs
dWUpCit7CisgICAgbV9wcml2YXRlLT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFt
TmFtZSwgdmFsdWUpOworfQorCitHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7Cit9CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRFcnJvcigpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0RXJyb3IoKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldEZsb2F0dihwYXJhbU5hbWUs
IHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBH
QzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1fcHJpdmF0ZS0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJh
bU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYo
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdl
dEludGVnZXJ2KHBhcmFtTmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1fcHJpdmF0ZS0+Z2V0UHJvZ3JhbWl2KHByb2dy
YW0sIHBhcmFtTmFtZSwgdmFsdWUpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1fcHJpdmF0ZS0+Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbV9wcml2YXRl
LT5nZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOworfQorCitTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOworfQor
CitTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlcikKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRTaGFkZXJTb3VyY2Uoc2hh
ZGVyKTsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTdHJpbmcoR0MzRGVudW0g
bmFtZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRTdHJpbmcobmFtZSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1fcHJpdmF0ZS0+
Z2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1fcHJpdmF0ZS0+Z2V0VGV4
UGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldFVuaWZv
cm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOworfQorCitHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sIG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJm
dihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQor
eworICAgIG1fcHJpdmF0ZS0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFs
dWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBt
X3ByaXZhdGUtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30K
KworbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50
IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwYXJhbU5hbWUpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpoaW50KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gbW9kZSkKK3sKKyAgICBt
X3ByaXZhdGUtPmhpbnQodGFyZ2V0LCBtb2RlKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIHJldHVybiBt
X3ByaXZhdGUtPmlzQnVmZmVyKG9iaik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4
dDNEOjppc0VuYWJsZWQoR0MzRGVudW0gY2FwKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmlz
RW5hYmxlZChjYXApOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFt
ZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5p
c0ZyYW1lYnVmZmVyKG9iaik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjpp
c1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
aXNQcm9ncmFtKG9iaik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Jl
bmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5pc1JlbmRlcmJ1ZmZlcihvYmopOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
RDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+aXNTaGFkZXIob2JqKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6Omlz
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5p
c1RleHR1cmUob2JqKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bGluZVdpZHRoKEdD
M0RmbG9hdCB3aWR0aCkKK3sKKyAgICBtX3ByaXZhdGUtPmxpbmVXaWR0aCh3aWR0aCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKK3sKKyAgICBtX3ByaXZhdGUtPmxpbmtQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rp
bnQgcGFyYW0pCit7CisgICAgbV9wcml2YXRlLT5waXhlbFN0b3JlaShwYXJhbU5hbWUsIHBhcmFt
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldChHQzNEZmxvYXQg
ZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpCit7CisgICAgbV9wcml2YXRlLT5wb2x5Z29uT2Zmc2V0
KGZhY3RvciwgdW5pdHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxz
KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3sKKyAgICBtX3By
aXZhdGUtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRh
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKK3sKKyAgICBtX3ByaXZhdGUt
PnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFt
cGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkKK3sKKyAgICBtX3ByaXZhdGUtPnNhbXBsZUNv
dmVyYWdlKHZhbHVlLCBpbnZlcnQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzY2lz
c29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQpCit7CisgICAgbV9wcml2YXRlLT5zY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBtX3ByaXZhdGUtPnNoYWRlclNv
dXJjZShwcm9ncmFtLCBzdHJpbmcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKK3sKKyAg
ICBtX3ByaXZhdGUtPnN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVu
dW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCit7CisgICAgbV9wcml2YXRlLT5z
dGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCit7CisgICAgbV9wcml2
YXRlLT5zdGVuY2lsTWFzayhtYXNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBtYXNrKQoreworICAgIG1f
cHJpdmF0ZS0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBH
QzNEZW51bSB6cGFzcykKK3sKKyAgICBtX3ByaXZhdGUtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwg
enBhc3MpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZShH
QzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBh
c3MpCit7CisgICAgbV9wcml2YXRlLT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFp
bCwgenBhc3MpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQoreworICAgIHJldHVybiBt
X3ByaXZhdGUtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEZmxvYXQgcGFyYW0pCit7CisgICAgbV9wcml2YXRlLT50ZXhQYXJhbWV0ZXJm
KHRhcmdldCwgcGFyYW1OYW1lLCBwYXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rp
bnQgcGFyYW0pCit7CisgICAgbV9wcml2YXRlLT50ZXhQYXJhbWV0ZXJpKHRhcmdldCwgcGFyYW1O
YW1lLCBwYXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhPZmZzZXQsIEdDM0RpbnQg
eU9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3sKKyAgICBtX3ByaXZhdGUt
PnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeE9mZnNldCwgeU9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgpCit7CisgICAgbV9wcml2
YXRlLT51bmlmb3JtMWYobG9jYXRpb24sIHgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNp
emUpCit7CisgICAgbV9wcml2YXRlLT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RpbnQgeCkKK3sKKyAgICBtX3ByaXZhdGUtPnVuaWZvcm0xaShsb2NhdGlvbiwgeCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCogdiwgR0MzRHNpemVpIHNpemUpCit7CisgICAgbV9wcml2YXRlLT51bmlmb3JtMWl2KGxv
Y2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJm
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIG1fcHJpdmF0
ZS0+dW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBz
aXplKQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50IHgsIEdDM0RpbnQgeSkKK3sKKyAgICBtX3ByaXZhdGUtPnVuaWZvcm0yaShsb2NhdGlv
biwgeCwgeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUpCit7CisgICAgbV9wcml2YXRl
LT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQg
eSwgR0MzRGZsb2F0IHopCit7CisgICAgbV9wcml2YXRlLT51bmlmb3JtM2YobG9jYXRpb24sIHgs
IHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUpCit7CisgICAgbV9wcml2YXRl
LT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEaW50IHopCit7CisgICAgbV9wcml2YXRlLT51bmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHop
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplKQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9y
bTNpdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0Rm
bG9hdCB6LCBHQzNEZmxvYXQgdykKK3sKKyAgICBtX3ByaXZhdGUtPnVuaWZvcm00Zihsb2NhdGlv
biwgeCwgeSwgeiwgdyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKK3sKKyAgICBt
X3ByaXZhdGUtPnVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNE
aW50IHksIEdDM0RpbnQgeiwgR0MzRGludCB3KQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9ybTRp
KGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSkKK3sK
KyAgICBtX3ByaXZhdGUtPnVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSwgR0MzRHNpemVpIHNpemUpCit7
CisgICAgbV9wcml2YXRlLT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bv
c2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDNm
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFs
dWUsIEdDM0RzaXplaSBzaXplKQoreworICAgIG1fcHJpdmF0ZS0+dW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlLCBHQzNEc2l6ZWkgc2l6ZSkKK3sKKyAgICBtX3ByaXZh
dGUtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgdmFsdWUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSkKK3sKKyAgICBtX3ByaXZhdGUtPnVzZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0pCit7CisgICAgbV9wcml2YXRlLT52YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBH
QzNEZmxvYXQgeCkKK3sKKyAgICBtX3ByaXZhdGUtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQqIHZhbHVlcykKK3sKKyAgICBtX3ByaXZhdGUtPnZlcnRleEF0dHJpYjFm
dihpbmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMmYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSkKK3sKKyAgICBt
X3ByaXZhdGUtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZh
bHVlcykKK3sKKyAgICBtX3ByaXZhdGUtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgdmFsdWVzKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopCit7CisgICAgbV9wcml2
YXRlLT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1
ZXMpCit7CisgICAgbV9wcml2YXRlLT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIHZhbHVlcyk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdykKK3sK
KyAgICBtX3ByaXZhdGUtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBH
QzNEZmxvYXQqIHZhbHVlcykKK3sKKyAgICBtX3ByaXZhdGUtPnZlcnRleEF0dHJpYjRmdihpbmRl
eCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9p
bnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9v
bGVhbiBub3JtYWxpemVkLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCkKK3sK
KyAgICBtX3ByaXZhdGUtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5v
cm1hbGl6ZWQsIHN0cmlkZSwgb2Zmc2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCkKK3sKKyAgICBtX3ByaXZhdGUtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhl
aWdodCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjptYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9z
aXRlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIERyYXdpbmdCdWZmZXIqIGRyYXdp
bmdCdWZmZXIpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGFzc1JlZlB0cjxJbWFn
ZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YShEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KikKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlQnVmZmVyKCk7Cit9CisK
K1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworfQorCitQbGF0
Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVQcm9ncmFtKCk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3Qg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPmNyZWF0ZVNoYWRlcih0eXBlKTsKK30KKworUGxhdGZvcm0zRE9iamVjdCBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+Y3JlYXRlVGV4dHVyZSgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVC
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbV9wcml2YXRlLT5kZWxldGVC
dWZmZXIoYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVi
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbV9wcml2YXRlLT5kZWxldGVG
cmFtZWJ1ZmZlcihidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtX3ByaXZhdGUtPmRlbGV0
ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJl
bmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBtX3ByaXZhdGUtPmRl
bGV0ZVJlbmRlcmJ1ZmZlcihidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
ZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbV9wcml2YXRlLT5k
ZWxldGVTaGFkZXIoc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCit7CisgICAgbV9wcml2YXRlLT5kZWxl
dGVUZXh0dXJlKHRleHR1cmUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVz
aXplR0xFcnJvcihHQzNEZW51bSBlcnJvcikKK3sKKyAgICBtX3ByaXZhdGUtPnN5bnRoZXNpemVH
TEVycm9yKGVycm9yKTsKK30KKworRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0RXh0ZW5zaW9ucygpOwor
fQorCitJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gSW50U2l6ZSgp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBh
c3NPd25QdHI8Q29udGV4dExvc3RDYWxsYmFjaz4pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVHYW1tYUFuZENv
bG9yUHJvZmlsZSwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZhbGlkYXRlQXR0cmlidXRlcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hh
ciogcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Citib29sIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNv
bHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KGNvbnN0IEludFJlY3QmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVzb3VyY2VTYWZl
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165809</attachid>
            <date>2012-09-26 08:29:06 -0700</date>
            <delta_ts>2012-09-26 08:33:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79452-20120926172824.patch</filename>
            <type>text/plain</type>
            <size>4921</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA4ZjJhNDlhY2M4OTRl
YTY2ZjE2YjcwNzllMmY2YzczMTgyNzkyMi4uZGU0NmVjZmZlZGU1NTMyYzY2MDNiNzZmM2RiMTcx
NDUyOTE2OTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDEyLTA5LTI2ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBb
RUZMXSBJbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHQzRCBmb3IgRUZMIHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVl
ZGVkIGZpbGVzCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogRG8gbm90IGFkZCB0aGUg
ZmlsZXMgYW55IG1vcmUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
TGF5ZXJFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0xheWVyRWZsLmg6IFJlbW92ZWQuCisKKzIwMTItMDktMjYgIEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJlb3JkZXIgQ2Fp
cm8gV2ViQ29yZSBpbmNsdWRlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc2NzkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3MGQ2OGQ3
MTQ4NDIxZjI3YzVkOGY4ODY3NTFmMmIyODZlZTFjZjQyLi41ZjM1YjQ1ZDM1ZDkyYzdkZjA4MTUx
MGQxMGRhNGM1MTNkYzg0MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTgwLDEw
ICsxODAsNiBAQCBJRiAoV1RGX1VTRV9URVhUVVJFX01BUFBFUikKICAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcAogICApCi1FTFNFICgpCi0gIExJU1QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0xheWVyRWZsLmNwcAotICAp
CiBFTkRJRiAoKQogCiBMSVNUKEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzTGF5ZXJFZmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzTGF5ZXJFZmwu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTY2YmQwNjQ3YWIxOTE3ZDhmNDc2
OWVhMmJhNTY2NTljNzgzMTNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0xh
eWVyRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi1Db3B5cmlnaHQg
KEMpIDIwMDktMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLVRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLW1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi1MaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLXZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLUxpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi1hbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLUJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVk
ZSAiR3JhcGhpY3NMYXllckVmbC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBHcmFwaGljc0xheWVyRWZsKGNsaWVudCkpOwotfQotCi1HcmFwaGljc0xh
eWVyRWZsOjpHcmFwaGljc0xheWVyRWZsKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAg
ICA6IEdyYXBoaWNzTGF5ZXIoY2xpZW50KQotewotfQotCi1HcmFwaGljc0xheWVyRWZsOjp+R3Jh
cGhpY3NMYXllckVmbCgpCi17Ci0gICAgd2lsbEJlRGVzdHJveWVkKCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllckVmbDo6c2V0TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJFZmw6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25z
dCBGbG9hdFJlY3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0xh
eWVyRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NM
YXllckVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDNmYjFiNzVjYmM4Y2Vm
YjY5MzViMGI1NDgwMTBmMjEyM2FhZGMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0xheWVyRWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICAgIENv
cHlyaWdodCAoQykgMjAwOS0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIEdy
YXBoaWNzTGF5ZXJFZmxfaAotI2RlZmluZSBHcmFwaGljc0xheWVyRWZsX2gKLQotI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0xheWVyRWZsIDogcHVibGljIEdy
YXBoaWNzTGF5ZXIgewotcHVibGljOgotICAgIEdyYXBoaWNzTGF5ZXJFZmwoR3JhcGhpY3NMYXll
ckNsaWVudCopOwotICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJFZmwoKTsKLQotICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNw
bGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jZW5kaWYgLy8g
R3JhcGhpY3NMYXllckVmbF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>