Topic: Improved Container Initialization
Author: Jason McKesson <jmckesson@gmail.com>
Date: Fri, 23 Nov 2012 16:26:38 -0800
Raw View
This is a multi-part message in MIME format.
--------------080207070201000809040602
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
I made some posts a few days ago about adding default initialization in
containers, as well as disambiguating constructors so that you can use
uniform initialization with certain container types (vector<int> {32, 2}
being a confounding example).
Here is a more formal proposal for the idea. It explicitly states every
function that will be added. I made sure to specify things such that no
ABI breakage would occur (ie: new constructors are added, but no
constructor signatures or behavior is changed). It also explains how
unusual constructs (like vector<default_init_t>) will be dealt with.
Feel free to comment on it.
--
--------------080207070201000809040602
Content-Type: text/html; charset=ISO-8859-1;
name="Improved Container Initialization.html"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Improved Container Initialization.html"
PGh0bWw+PGhlYWQ+CiAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgogICA8dGl0bGU+SW1wcm92
ZWQgQ29udGFpbmVyIEluaXRpYWxpemF0aW9uPC90aXRsZT48bWV0YSBuYW1lPSJnZW5lcmF0
b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMLU5TIFN0eWxlc2hlZXRzIFYxLjc1LjIiPjwvaGVh
ZD48Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZs
aW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+PGRpdiBjbGFzcz0iYXJ0aWNsZSIgdGl0
bGU9IkltcHJvdmVkIENvbnRhaW5lciBJbml0aWFsaXphdGlvbiI+PGRpdiBjbGFzcz0idGl0
bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+PGEgbmFtZT0iZDBlMyI+PC9h
PkltcHJvdmVkIENvbnRhaW5lciBJbml0aWFsaXphdGlvbjwvaDI+PC9kaXY+PC9kaXY+PGhy
PjwvZGl2PjxkaXYgY2xhc3M9InRvYyI+PHA+PGI+VGFibGUgb2YgQ29udGVudHM8L2I+PC9w
PjxkbD48ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9IiNkMGU2Ij5JbnRyb2R1
Y3Rpb248L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVm
PSIjZDBlMTYiPk1vdGl2YXRpb24gYW5kIFNjb3BlPC9hPjwvc3Bhbj48L2R0PjxkZD48ZGw+
PGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSIjZDBlMjEiPlVuaWZvcm0gSW5p
dGlhbGl6YXRpb24gQW1iaWd1aXR5PC9hPjwvc3Bhbj48L2R0PjxkdD48c3BhbiBjbGFzcz0i
c2VjdGlvbiI+PGEgaHJlZj0iI2QwZTY1Ij5WYWx1ZSBJbml0aWFsaXplZCBDb250YWluZXJz
PC9hPjwvc3Bhbj48L2R0PjwvZGw+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxh
IGhyZWY9IiNkMGUxMTUiPkRlc2lnbiBPdmVydmlldzwvYT48L3NwYW4+PC9kdD48ZGQ+PGRs
PjxkdD48c3BhbiBjbGFzcz0ic2VjdGlvbiI+PGEgaHJlZj0iI2QwZTEzMSI+RGVmYXVsdCBh
bmQgVmFsdWUgSW5pdGlhbGl6YXRpb248L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNz
PSJzZWN0aW9uIj48YSBocmVmPSIjZDBlMjIzIj5PdGhlciBEaXNhbWJpZ3VhdGlvbjwvYT48
L3NwYW4+PC9kdD48ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9IiNkMGUyNTIi
Pk92ZXJsb2FkIEFtYmlndWl0eSBSZXNvbHV0aW9uPC9hPjwvc3Bhbj48L2R0PjwvZGw+PC9k
ZD48ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9IiNkMGUyODEiPkltcGFjdCBv
biB0aGUgU3RhbmRhcmQ8L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9u
Ij48YSBocmVmPSIjZDBlMzA4Ij5EZXNpZ24gRGVjaXNpb25zPC9hPjwvc3Bhbj48L2R0Pjxk
ZD48ZGw+PGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSIjZDBlMzExIj5EaXNh
bWJpZ3VhdGlvbiBvZiBGdW5jdGlvbnM8L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNz
PSJzZWN0aW9uIj48YSBocmVmPSIjZDBlMzIwIj5BQkkgTWluaW1pemF0aW9uPC9hPjwvc3Bh
bj48L2R0PjxkdD48c3BhbiBjbGFzcz0ic2VjdGlvbiI+PGEgaHJlZj0iI2QwZTMyNSI+TmFt
aW5nPC9hPjwvc3Bhbj48L2R0PjwvZGw+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24i
PjxhIGhyZWY9IiNkMGUzNTQiPlRlY2huaWNhbCBTcGVjaWZpY2F0aW9uczwvYT48L3NwYW4+
PC9kdD48ZGQ+PGRsPjxkdD48c3BhbiBjbGFzcz0ic2VjdGlvbiI+PGEgaHJlZj0iI2QwZTM1
OSI+VXRpbGl0eTwvYT48L3NwYW4+PC9kdD48ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxh
IGhyZWY9IiNkMGU0MTAiPmJhc2ljX3N0cmluZzwvYT48L3NwYW4+PC9kdD48ZHQ+PHNwYW4g
Y2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9IiNkMGU3MjciPkNvbnRhaW5lciByZXF1aXJlbWVu
dHM8L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSIj
ZDBlNzQ3Ij5kZXF1ZTwvYT48L3NwYW4+PC9kdD48ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24i
PjxhIGhyZWY9IiNkMGU3NTgiPmZvcndhcmRfbGlzdDwvYT48L3NwYW4+PC9kdD48ZHQ+PHNw
YW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9IiNkMGU3NjkiPmxpc3Q8L2E+PC9zcGFuPjwv
ZHQ+PGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSIjZDBlNzgwIj52ZWN0b3I8
L2E+PC9zcGFuPjwvZHQ+PC9kbD48L2RkPjxkdD48c3BhbiBjbGFzcz0ic2VjdGlvbiI+PGEg
aHJlZj0iI2QwZTc5MSI+QWNrbm93bGVkZ2VtZW50czwvYT48L3NwYW4+PC9kdD48ZHQ+PHNw
YW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9IiNkMGU3OTYiPlJlZmVyZW5jZXM8L2E+PC9z
cGFuPjwvZHQ+PC9kbD48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iSW50cm9k
dWN0aW9uIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRp
dGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIG5hbWU9ImQwZTYiPjwvYT5JbnRyb2R1Y3Rp
b248L2gyPjwvZGl2PjwvZGl2PjwvZGl2PjxwPlVuaWZvcm0gaW5pdGlhbGl6YXRpb24gY2Fu
IGJlIHVzZWQgaW4gYWxtb3N0IGFsbCBjaXJjdW1zdGFuY2VzLiBIb3dldmVyLCB0aGVyZSBh
cmUKICAgICAgICAgICAgdGltZXMgd2hlbiA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+aW5pdGlh
bGl6ZXJfbGlzdDwvY29kZT4gY29uc3RydWN0b3JzIGNvbmZsaWN0IHdpdGggcmVndWxhcgog
ICAgICAgICAgICBjb25zdHJ1Y3RvcnMuIEluIHRob3NlIGNhc2VzLCBhbiBleHRyYSBhcmd1
bWVudCBpcyBuZWVkZWQsIHdoaWNoIGlzIG9mIGEgZGlmZmVyZW50IHR5cGUKICAgICAgICAg
ICAgdGhhbiBvdGhlciBhcmd1bWVudHMsIHRvIGRpc2FtYmlndWF0ZSB0aGUgY2FsbCBhbmQg
Y29ycmVjdGx5IHNlbGVjdCBvbmUgZnJvbSB0aGUKICAgICAgICAgICAgb3RoZXIuPC9wPjxw
PlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZGVmYXVsdCBpbml0aWFsaXphdGlvbiBhbmQgdmFs
dWUgaW5pdGlhbGl6YXRpb24gaW4gQysrIGlzCiAgICAgICAgICAgIGltcG9ydGFudCBmb3Ig
cGVyZm9ybWFuY2UgaW4gbWFueSBjaXJjdW1zdGFuY2VzLiBNYW55IHVzZXJzIHJlc3RyaWN0
IGEgY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICB0byBrZWVwIGl0IHdpdGhpbiB0aGUg
JiM4MjIwO3RyaXZpYWwmIzgyMjE7IGNhdGVnb3J5IGRlbGliZXJhdGVseSB0byB0YWtlIGFk
dmFudGFnZSBvZiBlc3NlbnRpYWxseQogICAgICAgICAgICBmcmVlIGRlZmF1bHQgY29uc3Ry
dWN0aW9uLiBIb3dldmVyLCBtYW55IHN0YW5kYXJkIGxpYnJhcnkgY29udGFpbmVycyBkbyBu
b3QgYWxsb3cgdGhlCiAgICAgICAgICAgIHVzZXIgdG8gZGVmYXVsdCBpbml0aWFsaXplIHRo
ZSBjb250ZW50cyBvZiBhIGNsYXNzLCBmb3JjaW5nIHRoZSB1c2VyIHRvIHZhbHVlLWluaXRp
YWxpemUKICAgICAgICAgICAgb2JqZWN0cyB1bm5lY2Vzc2FyaWx5LjwvcD48L2Rpdj48ZGl2
IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iTW90aXZhdGlvbiBhbmQgU2NvcGUiPjxkaXYgY2xh
c3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVh
cjogYm90aCI+PGEgbmFtZT0iZDBlMTYiPjwvYT5Nb3RpdmF0aW9uIGFuZCBTY29wZTwvaDI+
PC9kaXY+PC9kaXY+PC9kaXY+PHA+VGhpcyBwcm9wb3NhbCBzb2x2ZXMgdHdvIGRpZmZlcmVu
dCBwcm9ibGVtcy4gVGhleSBhcmUgYm90aCBwYXJ0IG9mIHRoZSBzYW1lIHByb3Bvc2FsCiAg
ICAgICAgICAgIGJlY2F1c2UgdGhleSBsb29rIHZlcnkgc2ltaWxhciB0byB0aGUgdXNlciBp
biBtYW55IGNhc2VzIGFuZCBhdHRlbXB0IHRvIGNvbXBsZW1lbnQgb25lCiAgICAgICAgICAg
IGFub3RoZXIuPC9wPjxkaXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJVbmlmb3JtIEluaXRp
YWxpemF0aW9uIEFtYmlndWl0eSI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+
PGgzIGNsYXNzPSJ0aXRsZSI+PGEgbmFtZT0iZDBlMjEiPjwvYT5Vbmlmb3JtIEluaXRpYWxp
emF0aW9uIEFtYmlndWl0eTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+VW5pZm9ybSBpbml0
aWFsaXphdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1bmlmb3JtLCBoZW5jZSB0aGUgbmFtZS4g
SG93ZXZlciwgYmVjYXVzZQogICAgICAgICAgICAgICAgdW5pZm9ybSBpbml0aWFsaXphdGlv
biB0aWVzIGludG8gaW5pdGlhbGl6ZXJfbGlzdCBpbml0aWFsaXphdGlvbiwgaXQgY2FuIGNh
dXNlCiAgICAgICAgICAgICAgICBjb25mbGljdHMuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcg
Y29kZS48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0ZDo6dmVjdG9yJmx0O2lu
dCZndDsgaW50VmVjMSg0Myk7CnN0ZDo6dmVjdG9yJmx0O2ludCZndDsgaW50VmVjMns0M307
PC9wcmU+PHA+VGhlc2UgbG9vayB0aGUgc2FtZSwgYW5kIG9uZSB3b3VsZCBleHBlY3QgdGhl
bSB0byBiZWhhdmUgdGhlIHNhbWUuIEJ1dCB0aGV5IGFyZQogICAgICAgICAgICAgICAgbm90
IHRoZSBzYW1lLiA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+aW50VmVjMTwvY29kZT4gaXMgYSB2
ZWN0b3Igb2YgNDMgdmFsdWUtY29uc3RydWN0ZWQKICAgICAgICAgICAgICAgIGludGVnZXJz
LiA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+aW50VmVjMjwvY29kZT4gaXMgYSB2ZWN0b3Igb2Yg
YSBzaW5nbGUgaW50ZWdlciwgNDMuIFRoZQogICAgICAgICAgICAgICAgd29yZGluZyBvZiB0
aGUgc3RhbmRhcmQgZGljdGF0ZXMgdGhhdCB0aGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmlu
aXRpYWxpemVyX2xpc3Q8L2NvZGU+CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMgYWx3
YXlzIGhhdmUgcHJpb3JpdHkgd2hlbiBtYXRjaGluZyBhZ2FpbnN0IGEgYnJhY2VkLWluaXQt
bGlzdC4gQW5kCiAgICAgICAgICAgICAgICBzaW5jZSB0aGlzIGlzIGEgPGNvZGUgY2xhc3M9
ImxpdGVyYWwiPnZlY3RvciZsdDtpbnQmZ3Q7PC9jb2RlPiwgdGhlCiAgICAgICAgICAgICAg
ICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmluaXRpYWxpemVyX2xpc3Q8L2NvZGU+IGNv
bnN0cnVjdG9yIHdpbGwgYmUgc2VsZWN0ZWQuPC9wPjxwPkluZGVlZCwgdGhlcmUgaXMgYWJz
b2x1dGVseSBubyB3YXkgdG8gY2FsbCB0aGUKICAgICAgICAgICAgICAgICAgICA8Y29kZSBj
bGFzcz0ibGl0ZXJhbCI+c3RkOjp2ZWN0b3ImbHQ7aW50Jmd0Ozo6dmVjdG9yKHNpemVfdHlw
ZSk8L2NvZGU+IGNvbnN0cnVjdG9yIHdpdGggYQogICAgICAgICAgICAgICAgYnJhY2VkLWlu
aXQtbGlzdC4gVGhlcmUgaXMgbm8gd2F5IHRvIGNhbGwgdGhlIGNvbnN0cnVjdG9yIHRoYXQg
dGFrZXMgYQogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5zaXpl
X3R5cGU8L2NvZGU+IGFuZCBhbiBpbnRlZ2VyIGRlZmF1bHQgZWl0aGVyLiBJZiB5b3UgdXNl
IHVuaWZvcm0KICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIHdpdGggYSA8Y29kZSBj
bGFzcz0ibGl0ZXJhbCI+dmVjdG9yJmx0O2ludCZndDs8L2NvZGU+LCB5b3Ugd2lsbCBhbHdh
eXMgYmUgdXNpbmcKICAgICAgICAgICAgICAgIHRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+
aW5pdGlhbGl6ZXJfbGlzdDwvY29kZT4gY29uc3RydWN0b3Igd2l0aCB0aGVzZS48L3A+PHA+
VGhpcyBhbHNvIGhhcHBlbnMgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBzaXplZCBjb25zdHJ1
Y3Rpb24gd2l0aCBhbiBleHBsaWNpdCB2YWx1ZQogICAgICAgICAgICAgICAgdG8gY29weSBm
cm9tOjwvcD48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RkOjp2ZWN0b3ImbHQ7aW50
Jmd0OyBpbnRWZWMxKDQzLCAzKTsgLy80MyBlbGVtZW50IHZlY3RvciBvZiAzJ3MuCnN0ZDo6
dmVjdG9yJmx0O2ludCZndDsgaW50VmVjMns0MywgM307IC8vMiBlbGVtZW50IHZlY3Rvci48
L3ByZT48cD5UaGlzIGlzIG5vdCB2ZXJ5IHVuaWZvcm0gaW5pdGlhbGl6YXRpb24uPC9wPjwv
ZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJWYWx1ZSBJbml0aWFsaXplZCBDb250
YWluZXJzIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRp
dGxlIj48YSBuYW1lPSJkMGU2NSI+PC9hPlZhbHVlIEluaXRpYWxpemVkIENvbnRhaW5lcnM8
L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPkNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY29kZS48
L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmF1dG8gKmxhcmdlQXJyYXkgPSBuZXcg
c3RkOjphcnJheSZsdDtpbnQsIDUwMDAwMDAwJmd0OzsKc3RkOjp2ZWN0b3ImbHQ7aW50Jmd0
OyBsYXJnZVZlY3Rvcig1MDAwMDAwMCk7PC9wcmU+PHA+T25lIG9mIHRoZXNlIHRha2VzIHN1
YnN0YW50aWFsbHkgbG9uZ2VyIHRoYW4gdGhlIG90aGVyLiBUaGV5IHNob3VsZCBub3QuIFRo
ZXkgYm90aAogICAgICAgICAgICAgICAgYWxsb2NhdGUgcm91Z2hseSB0aGUgc2FtZSBhbW91
bnQgb2YgbWVtb3J5LiBZZXQgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZQogICAgICAgICAg
ICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj52ZWN0b3I8L2NvZGU+IHRha2VzIG11
Y2ggbG9uZ2VyLiBXaXRoIGZ1cnRoZXIgcHJvZmlsaW5nLCB3ZSB3b3VsZAogICAgICAgICAg
ICAgICAgYWxzbyBkaXNjb3ZlciB0aGF0IHRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+dmVj
dG9yPC9jb2RlPiBjcmVhdGlvbidzIHJ1bm5pbmcgdGltZSBpcyBsaW5lYXIKICAgICAgICAg
ICAgICAgIGluIHRoZSBudW1iZXIgb2YgZWxlbWVudHMuPC9wPjxwPlRoZSByZWFzb24gZm9y
IHRoaXMgaXMgdGhhdCA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+dmVjdG9yPC9jb2RlPiBpcyBy
ZXF1aXJlZCB0byBpbml0aWFsaXplCiAgICAgICAgICAgICAgICBhbGwgb2YgaXRzIGFyZ3Vt
ZW50cyB3aXRoCiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmFs
bG9jYXRvcl90cmFpdHMmbHQ7QWxsb2NhdG9yJmd0Ozo6Y29uc3RydWN0PC9jb2RlPiBmb3Ig
dGhlIGFsbCwgd2hpY2gKICAgICAgICAgICAgICAgIHdpbGwgZWl0aGVyIGNhbGwgPGNvZGUg
Y2xhc3M9ImxpdGVyYWwiPmEuY29uc3RydWN0PC9jb2RlPiB3aXRoIGFuIGVtcHR5IGFyZ3Vt
ZW50IGxpc3QsIG9yCiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwi
Pm5ldyhtZW1vcnkpIGludCgpPC9jb2RlPi4gQm90aCBvZiB3aGljaCB3aWxsIHBlcmZvcm0g
dmFsdWUKICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9uIHRoZSBjb250ZW50cy48
L3A+PHA+V2hpbGUgdGhlIHJlbGF0aXZlIHRpbWUgb2YgdmFsdWUtaW5pdGlhbGl6aW5nIDUw
IG1pbGxpb24gaW50ZWdlcnMgaXMgbm90IHRoYXQKICAgICAgICAgICAgICAgIGxvbmcsIGNv
bnNpZGVyIHRoZSBmb2xsb3dpbmcgY29kZSBkZXNpZ24uPC9wPjxwcmUgY2xhc3M9InByb2dy
YW1saXN0aW5nIj5pbnQgaW1hZ2VTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OwpzdGQ6OnZl
Y3RvciZsdDt1aW50MzJfdCZndDsgaW1hZ2VEYXRhKGltYWdlU2l6ZSk7CkZldGNoSW1hZ2VE
YXRhKC4uLiwgaW1hZ2VEYXRhLmRhdGEoKSwgaW1hZ2VTaXplKTs8L3ByZT48cD5UaGlzIGlz
IG5vdCB1bmNvbW1vbi4gVGhlIGFib3ZlIG1pbWljcyBiZWhhdmlvciB0aGF0IG1pZ2h0IGJl
IGZvdW5kIGluIGEgdmlkZW8gb3IKICAgICAgICAgICAgICAgIGltYWdlIGRlY29tcHJlc3Np
b24gc3lzdGVtLiBJdCBsb2FkcyBzb21lIGltYWdlIGRhdGEgaW50ZXJuYWxseSwgYW5kIGRl
Y29tcHJlc3NlcyBpdAogICAgICAgICAgICAgICAgaW50byBzdG9yYWdlIHlvdSBwcm92aWRl
LiBUaGVyZSBhcmUgbWFueSBBUElzIHRoYXQgZXhwZWN0IHlvdSB0byBwYXNzIGluIGEgcG9p
bnRlcgogICAgICAgICAgICAgICAgYW5kIHNpemUgaW4gYnl0ZXMsIGFuZCB0aGV5IHdpbGwg
ZmlsbCB0aGVtIGluLiBDKysgdXNlcnMgd2FudCB0byB1c2UgYQogICAgICAgICAgICAgICAg
ICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5zdGQ6OnZlY3RvcjwvY29kZT4gb3IgPGNvZGUg
Y2xhc3M9ImxpdGVyYWwiPnN0ZDo6c3RyaW5nPC9jb2RlPiB0byBhbGxvY2F0ZSBhbmQKICAg
ICAgICAgICAgICAgIG1hbmFnZSB0aGF0IG1lbW9yeS4gSG93ZXZlciwgd2hlbiB0aGV5IGRv
IHNvLCB0aGV5IGFsc28gZ2V0IHBvaW50bGVzcyB2YWx1ZQogICAgICAgICAgICAgICAgaW5p
dGlhbGl6YXRpb24uPC9wPjxwPlRoaXMgb2Z0ZW4gcHJvbXB0cyB1c2VycyB0byBkbyB0aGlz
IGluc3RlYWQ6PC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgaW1hZ2VTaXpl
ID0gd2lkdGggKiBoZWlnaHQgKiA0OwpzdGQ6OnVuaXF1ZV9wdHImbHQ7dWludDMyX3RbXSZn
dDsgcEltYWdlRGF0YXtuZXcgdWludDMyX3RbaW1hZ2VTaXplXX07CkZldGNoSW1hZ2VEYXRh
KC4uLiwgaW1hZ2VEYXRhLmRhdGEoKSwgaW1hZ2VTaXplKTs8L3ByZT48cD5UaGlzIHByb3Zp
ZGVzIHRoZSBwcm9wZXIgbWVtb3J5IG1hbmFnZW1lbnQsIGJ1dCBhYnNvbHV0ZWx5IG5vbmUg
b2YgdGhlIG90aGVyCiAgICAgICAgICAgICAgICBjb252ZW5pZW5jZXMgb2YgPGNvZGUgY2xh
c3M9ImxpdGVyYWwiPnN0ZDo6dmVjdG9yPC9jb2RlPi4gSXQgZG9lc24ndCBldmVuIHN0b3Jl
IHRoZSBzaXplCiAgICAgICAgICAgICAgICBpbnRlcm5hbGx5LjwvcD48L2Rpdj48L2Rpdj48
ZGl2IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iRGVzaWduIE92ZXJ2aWV3Ij48ZGl2IGNsYXNz
PSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6
IGJvdGgiPjxhIG5hbWU9ImQwZTExNSI+PC9hPkRlc2lnbiBPdmVydmlldzwvaDI+PC9kaXY+
PC9kaXY+PC9kaXY+PHA+VGhlIGdlbmVyYWwgaWRlYSB0byBzb2x2ZSBib3RoIHByb2JsZW1z
IGlzIHRvIGludHJvZHVjZSBmdW5jdGlvbnMgd2l0aCBuZXcgYXJndW1lbnRzCiAgICAgICAg
ICAgIHRvIGRlc2lnbmF0ZSB3aGljaCBraW5kcyBvZiB0aGluZ3MgYXJlIGJlaW5nIGNhbGxl
ZC4gUGFydCBvZiB0aGUgcmVhc29uIHRoYXQgdGhlc2UKICAgICAgICAgICAgcHJvcG9zYWxz
IGFyZSBsaW5rZWQgaXMgYmVjYXVzZSB0aGV5IHVzZSB0aGUgc2FtZSBtZWNoYW5pc20sIHNv
IHRoZSBuYW1lcyBhbmQgdHlwZXMgb2YKICAgICAgICAgICAgY29uc3RydWN0cyBhcmUgc2lt
aWxhciBpbiBvcmRlciB0byBhY2tub3dsZWRnZSB0aGUgc2ltaWxhcml0aWVzLjwvcD48cD5U
aGUgZm9sbG93aW5nIG92ZXJ2aWV3IGZvY3VzZXMgb24gPGNvZGUgY2xhc3M9ImxpdGVyYWwi
PnN0ZDo6dmVjdG9yPC9jb2RlPiwgYnV0IHRoZXkgYWxsIG9mIHRoZQogICAgICAgICAgICBz
ZXF1ZW5jZSBjb250YWluZXJzIChleGNlcHQgZm9yIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5h
cnJheTwvY29kZT4sIGJ1dCBpbmNsdWRpbmcKICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNz
PSJsaXRlcmFsIj5iYXNpY19zdHJpbmc8L2NvZGU+KSB3aWxsIGhhdmUgc2ltaWxhciBmdW5j
dGlvbnMuPC9wPjxkaXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJEZWZhdWx0IGFuZCBWYWx1
ZSBJbml0aWFsaXphdGlvbiI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgz
IGNsYXNzPSJ0aXRsZSI+PGEgbmFtZT0iZDBlMTMxIj48L2E+RGVmYXVsdCBhbmQgVmFsdWUg
SW5pdGlhbGl6YXRpb248L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPlRvIGFsbG93IGRlZmF1
bHQgaW5pdGlhbGl6YXRpb24gb2YgdmFsdWVzIGltcGxpZXMgdGhhdCB0aGVyZSBzaG91bGQg
YmUgYW4gZXhwbGljaXQKICAgICAgICAgICAgICAgIHdheSB0byB2YWx1ZS1pbml0aWFsaXpl
IG1lbWJlcnMgdG9vLiBUaGVyZSBhcmUgYSBsb3Qgb2YgZnVuY3Rpb25zIHRoYXQgb25seSB0
YWtlIGEKICAgICAgICAgICAgICAgIHZhbHVlIHRvIGNvcHkgaW50byBlYWNoIHZhbHVlOyBv
bmx5IHRoZSBtYWluIGNvbnN0cnVjdG9ycyBoYXZlIGFuIG92ZXJsb2FkCiAgICAgICAgICAg
ICAgICBzcGVjaWZpY2FsbHkgZm9yIHZhbHVlLWluaXRpYWxpemF0aW9uLiBTbyB3ZSBzb2x2
ZSB0aGlzIHByb2JsZW0gd2hpbGUgYWxzbwogICAgICAgICAgICAgICAgZGlzYW1iaWd1YXRp
bmcgdGhlIGNvbnN0cnVjdG9yLjwvcD48cD5UbyBhbGxvdyBmb3IgZGVmYXVsdCBvciB2YWx1
ZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdmFyaW91cyB0eXBlcywgd2Ugd2lsbCBhZGQgdHdv
CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMsIG9uZSBmb3IgZGVmYXVsdCBpbml0aWFs
aXphdGlvbiBhbmQgb25lIGZvciB2YWx1ZQogICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRp
b246PC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52ZWN0b3Ioc2l6ZV90eXBlIG4s
IHZhbHVlX2luaXRfdCwgY29uc3QgQWxsb2NhdG9yJmFtcDsgPSBBbGxvY2F0b3IoKSk7CnZl
Y3RvcihzaXplX3R5cGUgbiwgZGVmYXVsdF9pbml0X3QsIGNvbnN0IEFsbG9jYXRvciZhbXA7
ID0gQWxsb2NhdG9yKCkpOzwvcHJlPjxwPlRoZSB0eXBlcyA8Y29kZSBjbGFzcz0ibGl0ZXJh
bCI+dmFsdWVfaW5pdF90PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmRlZmF1
bHRfaW5pdF90PC9jb2RlPgogICAgICAgICAgICAgICAgYXJlIG11Y2ggbGlrZSB0aGUgc3Rh
bmRhcmQgdHlwZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+cGllY2V3aXNlX2NvbnN0cnVjdF90
PC9jb2RlPi4gVGhleSBhcmUKICAgICAgICAgICAgICAgIGVtcHR5IDxjb2RlIGNsYXNzPSJs
aXRlcmFsIj5zdHJ1Y3Q8L2NvZGU+cyB1c2VkIHRvIGRpc2FtYmlndWF0ZSBmdW5jdGlvbiBj
YWxscy48L3A+PHA+VGhlc2UgY29uc3RydWN0b3JzIGFyZSBjYWxsZWQgd2l0aCA8Y29kZSBj
bGFzcz0ibGl0ZXJhbCI+Y29uc3RleHByPC9jb2RlPiB2YXJpYWJsZXMgYXMgc2hvd24KICAg
ICAgICAgICAgICAgIGJlbG93OjwvcD48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3Rk
Ojp2ZWN0b3ImbHQ7aW50Jmd0OyBpbnRWZWMxezQzLCBzdGQ6OnZhbHVlX2luaXQpOwpzdGQ6
OnZlY3RvciZsdDtpbnQmZ3Q7IGludFZlYzJ7NDMsIHN0ZDo6ZGVmYXVsdF9pbml0fTs8L3By
ZT48cD5UaGUgbWVhbmluZyBvZiB0aGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPnZhbHVlX2lu
aXQ8L2NvZGU+IGNvbnN0cnVjdG9yIGlzIHRoZSBzYW1lIGFzIHRoZQogICAgICAgICAgICAg
ICAgY29uc3RydWN0b3IgdGhhdCBvbmx5IHRha2VzIGEgPGNvZGUgY2xhc3M9ImxpdGVyYWwi
PnNpemVfdHlwZTwvY29kZT4uIFRoaXMsIHRoZQogICAgICAgICAgICAgICAgICAgIDxjb2Rl
IGNsYXNzPSJsaXRlcmFsIj52YWx1ZV9pbml0PC9jb2RlPiBjYXNlIGZvcm1hbGx5IGRpc2Ft
YmlndWF0ZXMgdGhlIGNvbnN0cnVjdG9yIGZyb20KICAgICAgICAgICAgICAgIGJyYWNlZC1p
bml0LWxpc3RzLiBUaGUgYmVoYXZpb3Igb2YgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmRlZmF1
bHRfaW5pdDwvY29kZT4gaXMgYSBiaXQgbW9yZQogICAgICAgICAgICAgICAgY29tcGxleC48
L3A+PHA+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5hbGxvY2F0b3JfdHJhaXRzJmx0O0Fs
bG9jYXRvciZndDs6OmNvbnN0cnVjdDwvY29kZT4gY2Fubm90CiAgICAgICAgICAgICAgICBk
ZWZhdWx0LWNvbnN0cnVjdCB0aGUgdHlwZXMuIFRoZXJlZm9yZSwgd2Ugd2lsbCBuZWVkIHRv
IGV4dGVuZAogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5hbGxv
Y2F0b3JfdHJhaXRzPC9jb2RlPiB3aXRoIGEgbmV3IGZ1bmN0aW9uOgogICAgICAgICAgICAg
ICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5kZWZhdWx0X2NvbnN0cnVjdDwvY29kZT4u
IFRoaXMgd2lsbCBjYWxsIGVpdGhlcgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNz
PSJsaXRlcmFsIj5hLmRlZmF1bHRfY29uc3RydWN0PC9jb2RlPiBvciBpZiB0aGF0IGlzIG5v
dCBhdmFpbGFibGUsCiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwi
Pjo6bmV3KHApIFQ8L2NvZGU+LCB3aXRob3V0IHRoZSBwYXJlbnRoZXNlcy48L3A+PHA+VmFs
dWUgYW5kIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gb3ZlcmxvYWRzIHdpbGwgYmUgYWRkZWQg
Zm9yIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgICAgIGZ1bmN0aW9uczo8L3A+PGRpdiBj
bGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgY2xhc3M9Iml0ZW1pemVkbGlzdCIgdHlwZT0iZGlz
YyI+PGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+U2l6ZWQgY29uc3RydWN0b3JzLjwvcD48L2xp
PjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5pbnNlcnQ8
L2NvZGU+PC9wPjwvbGk+PGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+PGNvZGUgY2xhc3M9Imxp
dGVyYWwiPnB1c2hfYmFjay9mcm9udDwvY29kZT48L3A+PC9saT48bGkgY2xhc3M9Imxpc3Rp
dGVtIj48cD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+YXBwZW5kPC9jb2RlPjwvcD48L2xpPjxs
aSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5hc3NpZ248L2Nv
ZGU+PC9wPjwvbGk+PGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+PGNvZGUgY2xhc3M9ImxpdGVy
YWwiPnJlc2l6ZTwvY29kZT48L3A+PC9saT48L3VsPjwvZGl2PjxwPk5vdGUgdGhhdCBpbiBh
bGwgY2FzZXMsIHRoZXNlIGFyZSBvdmVybG9hZHMgdGhhdCBhcmUgPHNwYW4gY2xhc3M9ImVt
cGhhc2lzIj48ZW0+YWRkZWQ8L2VtPjwvc3Bhbj4uCiAgICAgICAgICAgICAgICBObyBleGlz
dGluZyBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkLjwvcD48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0
aW9uIiB0aXRsZT0iT3RoZXIgRGlzYW1iaWd1YXRpb24iPjxkaXYgY2xhc3M9InRpdGxlcGFn
ZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPjxhIG5hbWU9ImQwZTIyMyI+PC9hPk90
aGVyIERpc2FtYmlndWF0aW9uPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj48cD48Y29kZSBjbGFz
cz0ibGl0ZXJhbCI+dmFsdWVfaW5pdF90PC9jb2RlPiBpcyBhYmxlIHRvIHNlcnZlIGFzIGEg
d2F5IHRvIGRpc2FtYmlndWF0ZSB0aGUKICAgICAgICAgICAgICAgIHNpemluZyBjb25zdHJ1
Y3RvcnMgdGhhdCBwZXJmb3JtIHZhbHVlIGluaXRpYWxpemF0aW9uLiBIb3dldmVyLCBpdCB3
b3VsZCBiZQogICAgICAgICAgICAgICAgaW5hcHByb3ByaWF0ZSwgZnJvbSBhIG5vbWVuY2xh
dHVyZSBwZXJzcGVjdGl2ZSwgdG8gdXNlIGl0IGZvciBkaXNhbWJpZ3VhdGluZyB0aGlzCiAg
ICAgICAgICAgICAgICBjb25zdHJ1Y3Rvcjo8L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3Rp
bmciPnZlY3RvcihzaXplX3R5cGUgbiwgY29uc3QgVCZhbXA7IHZhbHVlLCBjb25zdCBBbGxv
Y2F0b3ImYW1wOyBhID0gQWxsb2NhdG9yKCkpOzwvcHJlPjxwPklmIDxjb2RlIGNsYXNzPSJs
aXRlcmFsIj5UPC9jb2RlPiBpcyBhbiBpbnRlZ2VyIHR5cGUsIGFuZCB5b3Ugd2lzaCB0byBj
b25zdHJ1Y3QgaXQgZnJvbSB0d28KICAgICAgICAgICAgICAgIGludGVnZXJzLCB0aGVyZSBu
ZWVkcyB0byBiZSBhIHdheSB0byBkaXNhbWJpZ3VhdGUgdGhpcyBjYXNlIGZyb20gYW4gaW5p
dGlhbGl6ZXIgbGlzdAogICAgICAgICAgICAgICAgb2YgaW50ZWdlcnMuIFdlIGRvIHRoaXMg
d2l0aCBhIHRoaXJkIHR5cGUsIHdoaWNoIHByb3ZpZGVzIHRoaXMgY29uc3RydWN0b3IKICAg
ICAgICAgICAgICAgIG92ZXJsb2FkOjwvcD48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+
dmVjdG9yKHNpemVfdHlwZSBuLCBjb25zdCBUJmFtcDsgdmFsdWUsIGRpc2FtYmlndWF0ZV90
LCBjb25zdCBBbGxvY2F0b3ImYW1wOyBhID0gQWxsb2NhdG9yKCkpOzwvcHJlPjxwPlRoZSA8
Y29kZSBjbGFzcz0ibGl0ZXJhbCI+ZGlzYW1iaWd1YXRlX3Q8L2NvZGU+IHR5cGUgaXMgYW5v
dGhlciBlbXB0eQogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5z
dHJ1Y3Q8L2NvZGU+LiBJdCB3aWxsIGhhdmUgYSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+Y29u
c3RleHByPC9jb2RlPiBpbnN0YW5jZQogICAgICAgICAgICAgICAgdmFyaWFibGUgdGhhdCBp
cyBhcyBmb2xsb3dzOjwvcD48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RkOjp2ZWN0
b3ImbHQ7aW50Jmd0OyBpbnRWZWMyezQzLCAyLCBzdGQ6Om5vX2xpc3R9OzwvcHJlPjwvZGl2
PjxkaXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJPdmVybG9hZCBBbWJpZ3VpdHkgUmVzb2x1
dGlvbiI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRs
ZSI+PGEgbmFtZT0iZDBlMjUyIj48L2E+T3ZlcmxvYWQgQW1iaWd1aXR5IFJlc29sdXRpb248
L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPlRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gY3Jl
YXRlIGFtYmlndWl0eSBpbiBmdW5jdGlvbiBvdmVybG9hZHMsIGlmIG9uZSBvZiB0aGUKICAg
ICAgICAgICAgICAgIHNwZWNpYWwgdHlwZXMgaXMgdXNlZCBhcyBhIHRlbXBsYXRlIHBhcmFt
ZXRlci4gPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmRlZmF1bHRfaW5pdF90PC9jb2RlPiBhbmQK
ICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+dmFsdWVfaW5pdF90
PC9jb2RlPiBjYW4gYmUgYW1iaWd1b3VzIGlmIHRoZXkgYXJlIHRoZSB2YWx1ZSB0eXBlLiBB
cwogICAgICAgICAgICAgICAgdmFsdWVzLCB0aGV5IGNyZWF0ZSBhbWJpZ3VpdHkgYmV0d2Vl
biB0aGVzZSBjb25zdHJ1Y3RvcnM6PC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52
ZWN0b3Ioc2l6ZV90eXBlIG4sIGNvbnN0IFQmYW1wOyB2YWx1ZSwgY29uc3QgQWxsb2NhdG9y
JmFtcDsgYSA9IEFsbG9jYXRvcigpKTsKdmVjdG9yKHNpemVfdHlwZSBuLCB2YWx1ZV9pbml0
X3QsIGNvbnN0IEFsbG9jYXRvciZhbXA7IGEgPSBBbGxvY2F0b3IoKSk7CnZlY3RvcihzaXpl
X3R5cGUgbiwgZGVmYXVsdF9pbml0X3QsIGNvbnN0IEFsbG9jYXRvciZhbXA7IGEgPSBBbGxv
Y2F0b3IoKSk7PC9wcmU+PHA+U2ltaWxhciBhbWJpZ3VpdHkgY2FuIG9jY3VyIGZvciBvdGhl
ciBmdW5jdGlvbnMuPC9wPjxwPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5zdGQ6OmRpc2FtYmln
dWF0ZV90PC9jb2RlPiBkb2VzIG5vdCBjcmVhdGUgYW1iaWd1aXR5IGlmIGl0IGlzIHRoZQog
ICAgICAgICAgICAgICAgdmFsdWUgdHlwZS4gSG93ZXZlciwgaXQgY2FuIGNyZWF0ZSB0aGVt
IGlmIGl0IGlzIHRoZSBhbGxvY2F0b3IgdHlwZTo8L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxp
c3RpbmciPnZlY3RvcihzaXplX3R5cGUgbiwgY29uc3QgVCZhbXA7IHZhbHVlLCBzdGQ6OmRp
c2FtYmlndWF0ZV90LCBjb25zdCBBbGxvY2F0b3ImYW1wOyBhID0gQWxsb2NhdG9yKCkpOwp2
ZWN0b3Ioc2l6ZV90eXBlIG4sIGNvbnN0IFQmYW1wOyB2YWx1ZSwgY29uc3QgQWxsb2NhdG9y
JmFtcDsgYSA9IEFsbG9jYXRvcigpKTs8L3ByZT48cD5UaGUgc2ltcGxlc3Qgd2F5IHRvIHBy
ZXZlbnQgdGhpcyBwcm9ibGVtIGlzIHRvIHNpbXBseSBmb3JiaWQgdGhlIHVzZSBvZiBhbnkg
b2YKICAgICAgICAgICAgICAgIHRoZXNlIHR5cGVzIGluIHRoaXMgd2F5LiBBbGwgb2YgdGhl
IGFmZmVjdGVkIGNvbnRhaW5lcnMgd2lsbCBoYXZlCiAgICAgICAgICAgICAgICAgICAgPGNv
ZGUgY2xhc3M9ImxpdGVyYWwiPnN0YXRpY19hc3NlcnQ8L2NvZGU+cyB0aGF0IGRldGVjdCBh
bmQgcHJldmVudCBpbnN0YW50aWF0aW9ucyB3aXRoCiAgICAgICAgICAgICAgICB0aGVzZSB0
eXBlcy4gVG8gbWFrZSBzdXJlIHRoYXQgYWxsIGNhc2VzIGFyZSBhdHRlbmRlZCB0bywgd2Ug
d2lsbCBmb3JiaWQgdGhlIHVzZSBvZgogICAgICAgICAgICAgICAgYW55IG9mIHRoZXNlIHR5
cGVzIGFzIHRoZSB2YWx1ZSB0eXBlLCB0cmFpdHMgdHlwZSAoZm9yCiAgICAgICAgICAgICAg
ICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmJhc2ljX3N0cmluZzwvY29kZT4pLCBvciBh
bGxvY2F0b3IgdHlwZSBmb3IgdGhlc2UgY29udGFpbmVycy48L3A+PC9kaXY+PC9kaXY+PGRp
diBjbGFzcz0ic2VjdGlvbiIgdGl0bGU9IkltcGFjdCBvbiB0aGUgU3RhbmRhcmQiPjxkaXYg
Y2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJj
bGVhcjogYm90aCI+PGEgbmFtZT0iZDBlMjgxIj48L2E+SW1wYWN0IG9uIHRoZSBTdGFuZGFy
ZDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+PHA+VGhpcyB3aWxsIGFkZCB0d28gdHlwZXMgdG8g
dGhlIHN0YW5kYXJkIGxpYnJhcnksIGFsbW9zdCBjZXJ0YWlubHkgaW4gJmx0O3V0aWxpdHkm
Z3Q7IGR1ZQogICAgICAgICAgICB0byBiZWluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBvdGhl
ciBsaWJyYXJpZXMuIEl0IHdpbGwgYWRkIHRocmVlCiAgICAgICAgICAgICAgICA8Y29kZSBj
bGFzcz0ibGl0ZXJhbCI+Y29uc3RleHByPC9jb2RlPiB2YWx1ZXMuIEl0IGFkZHMgYSBuZXcK
ICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5hbGxvY2F0b3JfdHJhaXRz
PC9jb2RlPiBmdW5jdGlvbi48L3A+PHA+SW50byBlYWNoIG9mIHRoZSBzZXF1ZW5jZSBjb250
YWluZXJzIHNhdmUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmFycmF5PC9jb2RlPiAoYW5kIGlu
Y2x1ZGluZwogICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPnN0ZDo6YmFz
aWNfc3RyaW5nPC9jb2RlPiksIHRoaXMgcHJvcG9zYWwgd2lsbCBhZGQgbmV3IGNvbnN0cnVj
dG9yCiAgICAgICAgICAgIG92ZXJsb2FkcywgYXMgd2VsbCBhcyBtb2RpZnkgZXhpc3Rpbmcg
b25lcyBieSBhZGRpbmcgYSBkZWZhdWx0IHBhcmFtZXRlci4gSXQgd2lsbAogICAgICAgICAg
ICByZXF1aXJlIHRoZXNlIHR5cGVzIHRvIGhhdmUgc29tZSA8Y29kZSBjbGFzcz0ibGl0ZXJh
bCI+c3RhdGljX2Fzc2VydDwvY29kZT5zIHRvIHByZXZlbnQgaW1wcm9wZXIKICAgICAgICAg
ICAgdXNhZ2UuPC9wPjxwPkl0IHdpbGwgYWRkIGEgbnVtYmVyIG9mIGNvbnN0cnVjdG9yIGFu
ZCBtZW1iZXIgZnVuY3Rpb24gb3ZlcmxvYWRzLiBJdCB3aWxsCiAgICAgICAgICAgICAgICA8
c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5ub3Q8L2VtPjwvc3Bhbj4gbW9kaWZ5IGFueSBl
eGlzdGluZyBjb25zdHJ1Y3RvcnMsIHNvIG5vIEFCSSBicmVha2FnZSBzaG91bGQKICAgICAg
ICAgICAgb2NjdXIuIEl0IHdpbGwgYWRkIHNvbWUgZmFpbHVyZSBjb25kaXRpb25zIGZvciBp
bnN0YW50aWF0aW5nIGNlcnRhaW4gdGVtcGxhdGVzLCBidXQgdGhpcwogICAgICAgICAgICB3
aWxsIG9ubHkgYmUgZm9yIHR5cGVzIHRoYXQgZGlkIG5vdCBleGlzdCBiZWZvcmVoYW5kLjwv
cD48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iRGVzaWduIERlY2lzaW9ucyI+
PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5
bGU9ImNsZWFyOiBib3RoIj48YSBuYW1lPSJkMGUzMDgiPjwvYT5EZXNpZ24gRGVjaXNpb25z
PC9oMj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iRGlz
YW1iaWd1YXRpb24gb2YgRnVuY3Rpb25zIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+
PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBuYW1lPSJkMGUzMTEiPjwvYT5EaXNhbWJpZ3Vh
dGlvbiBvZiBGdW5jdGlvbnM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPkFkZGluZyBuZXcg
b3ZlcmxvYWRzLCBwYXJ0aWN1bGFybHkgb2YgdGVtcGxhdGUgdHlwZXMsIGFsd2F5cyByYWlz
ZXMgdGhlIHNwZWN0ZXIgb2YKICAgICAgICAgICAgICAgIGFtYmlndW91cyBvdmVybG9hZHMu
IEl0IHdhcyBuZWNlc3NhcnkgdG8gZm9yYmlkIHNvbWUgdXNlcyBvZiB0aGVzZSBjbGFzc2Vz
IHRvCiAgICAgICAgICAgICAgICBwcmV2ZW50IHRoaXMuIEJ5IGZvcmJpZGRpbmcgdGhlIHVz
ZSBvZiBjb250cm9sIHR5cGVzIHN1Y2ggYXMgdGhlc2UsIGl0IGdpdmVzIHVzIHRoZQogICAg
ICAgICAgICAgICAgZnJlZWRvbSB0byBtYWtlIHBvdGVudGlhbGx5IGFtYmlndW91cyBmdW5j
dGlvbnMgYnkgdGFraW5nIGF3YXkgdGhlIGFtYmlndWl0eS48L3A+PHA+VGhlIGRlc2lnbiBh
Ym92ZSBmb3JiaWRzIHRoZSB1c2Ugb2YgdGhlIGNvbnRyb2wgdHlwZXMgaW4gYW55IG9mIHRo
ZXNlIGNvbnRhaW5lcnMuCiAgICAgICAgICAgICAgICBXZSBjb3VsZCBhZG1pdHRlZGx5IGZv
cmJpZCB0aGVtIG9ubHkgaW4gc3BlY2lmaWMgdXNlcyB0aGF0IGNyZWF0ZSBhbWJpZ3VpdHku
CiAgICAgICAgICAgICAgICBIb3dldmVyLCB1c2luZyBlbXB0eSBvYmplY3RzIGxpa2UgdGhp
cyBhcyBhbnkgdGVtcGxhdGUgcGFyYW1ldGVyIG9mIHRoZXNlIGNvbnRhaW5lcnMKICAgICAg
ICAgICAgICAgIGlzIHBvaW50bGVzcy4gQW5kIGlmIHRoZSB1c2VyIHdhbnRzIHRvIGRvIHNv
LCB0aGV5IGNhbiBjcmVhdGUgYW4gZW1wdHkgdHlwZQogICAgICAgICAgICAgICAgdGhlbXNl
bHZlcy4gVGhpcyB3YXksIHdlIGdhaW4gZ3JlYXRlciBjb25zaXN0ZW5jeSBieSBiYW5uaW5n
IGFsbCB1c2VzIG9mIHRoZW0sCiAgICAgICAgICAgICAgICB3aGV0aGVyIHRoZXkgY3JlYXRl
IGFtYmlndWl0eSBvciBub3QuIEl0IGhlbHBzIHRoZSBBUEkgZmVlbCBtb3JlIGNvbnNpc3Rl
bnQuPC9wPjxwPkkgd291bGQgc3VibWl0IHRoYXQgbm90aGluZyBvZiB2YWx1ZSBpcyBsb3N0
IGJ5IGFkZGluZyB0aGlzIHJlc3RyaWN0aW9uLjwvcD48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0
aW9uIiB0aXRsZT0iQUJJIE1pbmltaXphdGlvbiI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48
ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+PGEgbmFtZT0iZDBlMzIwIj48L2E+QUJJIE1p
bmltaXphdGlvbjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+VGhlIGRlY2lzaW9uIHRvIGFk
ZCBuZXcgY29uc3RydWN0b3IgYW5kIGZ1bmN0aW9uIG92ZXJsb2FkcyBpbnN0ZWFkIG9mIHJl
cGxhY2luZwogICAgICAgICAgICAgICAgb25lcyBhbmQgdXNpbmcgZGVmYXVsdCBwYXJhbWV0
ZXJzIHdhcyBtYWRlIHRvIGVuc3VyZSB0aGF0IG5vIEFCSSBicmVha2FnZSB3b3VsZAogICAg
ICAgICAgICAgICAgb2NjdXIuIFRoaXMgcHJvcG9zYWwgb25seSBhZGRzIG5ldyBmdW5jdGlv
bnM7IGl0IGRvZXMgbm90IGNoYW5nZSBhbnkgZXhpc3RpbmcKICAgICAgICAgICAgICAgIG9u
ZXMuPC9wPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJOYW1pbmciPjxkaXYg
Y2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPjxhIG5hbWU9
ImQwZTMyNSI+PC9hPk5hbWluZzwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+T2J2aW91c2x5
LCB0aGUgdXNlIG9mIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj52YWx1ZV9pbml0PC9jb2RlPiBp
cyBwcmltYXJpbHkgdG8gY29udHJhc3Qgd2l0aAogICAgICAgICAgICAgICAgICAgIDxjb2Rl
IGNsYXNzPSJsaXRlcmFsIj5kZWZhdWx0X2luaXQ8L2NvZGU+LCB0aHVzIG1ha2luZyBpdCBj
bGVhcmVyIGV4YWN0bHkgd2hpY2ggaXMKICAgICAgICAgICAgICAgIGhhcHBlbmluZy4gSSdt
IG5vdCB3ZWRkZWQgdG8gdGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5ub19saXN0PC9jb2Rl
PiBuYW1lLCBidXQgSSB0aGluayBhbGwgb2YKICAgICAgICAgICAgICAgIHRoZW0gbmVlZCBz
ZXBhcmF0ZSBuYW1lcyBhbmQgdHlwZXMsIHNvIHRoYXQgaXQncyBjbGVhciB3aGF0IHRoZXkn
cmUgaW50ZW5kZWQgdG8gZG8uCiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Imxp
dGVyYWwiPnZhbHVlX2luaXQ8L2NvZGU+IGNhdXNlcyB2YWx1ZS1pbml0aWFsaXphdGlvbi4g
SXQgcGFpcnMgdXAgd2l0aAogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRl
cmFsIj5kZWZhdWx0X2luaXQ8L2NvZGU+IGZvciBkZWZhdWx0IGluaXRpYWxpemF0aW9uLgog
ICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5ub19saXN0PC9jb2Rl
PiBpcyBqdXN0IHRoZSBnZW5lcmljIHRlcm0gZm9yIGRpc2FtYmlndWF0aW5nIGJldHdlZW4K
ICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+aW5pdGlhbGl6ZXJf
bGlzdDwvY29kZT4gY29uc3RydWN0aW9uIGFuZAogICAgICAgICAgICAgICAgICAgIG5vbi08
Y29kZSBjbGFzcz0ibGl0ZXJhbCI+aW5pdGlhbGl6ZXJfbGlzdDwvY29kZT4gY29uc3RydWN0
aW9uLjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iVGVjaG5p
Y2FsIFNwZWNpZmljYXRpb25zIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48
aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIG5hbWU9ImQwZTM1NCI+
PC9hPlRlY2huaWNhbCBTcGVjaWZpY2F0aW9uczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+PHA+
VGhlc2Ugc3BlY2lmaWNhdGlvbnMgYXJlIHdyaXR0ZW4gYWdhaW5zdCBzZWN0aW9uIE4zMzM3
LjwvcD48ZGl2IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iVXRpbGl0eSI+PGRpdiBjbGFzcz0i
dGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+PGEgbmFtZT0iZDBlMzU5
Ij48L2E+VXRpbGl0eTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+SW4gc2VjdGlvbiAyMC4y
LCBwYXJhZ3JhcGggMiwgYWRkIHRoZSBmb2xsb3dpbmcgYWZ0ZXIgdGhlIGRlY2xhcmF0aW9u
IG9mCiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmRlY2x2YWw8
L2NvZGU+OjwvcD48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Ly8yMC4yLjUKc3RydWN0
IHZhbHVlX2luaXRfdCB7fTsKY29uc3RleHByIHZhbHVlX2luaXRfdCB2YWx1ZV9pbml0Owpz
dHJ1Y3QgZGVmYXVsdF9pbml0X3Qge307CmNvbnN0ZXhwciBkZWZhdWx0X2luaXRfdCBkZWZh
dWx0X2luaXQ7CnN0cnVjdCBkaXNhbWJpZ3VhdGVfdCB7fTsKY29uc3RleHByIGRpc2FtYmln
dWF0ZV90IG5vX2xpc3Q7PC9wcmU+PHA+SW4gc2VjdGlvbiAyMC42LjggW2FsbG9jYXRvci50
cmFpdHNdLCBwYXJhZ3JhcGggMSwgYWRkIHRoZSBmb2xsb3dpbmcgaW50byB0aGUKICAgICAg
ICAgICAgICAgIGRlY2xhcmF0aW9uIG9mIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5hbGxvY2F0
b3JfdHJhaXRzPC9jb2RlPjo8L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnRlbXBs
YXRlICZsdDtjbGFzcyBUJmd0OwpzdGF0aWMgdm9pZCBkZWZhdWx0X2NvbnN0cnVjdChBbGxv
YyZhbXA7IGEsIFQqIHApOzwvcHJlPjxwPkluIHNlY3Rpb24gMjAuNi44LjIsIFthbGxvY2F0
b3IudHJhaXRzLm1lbWJlcnNdLCBhZnRlciBwYXJhZ3JhcGggNSwgYWRkIHRoZQogICAgICAg
ICAgICAgICAgZm9sbG93aW5nOjwvcD48ZGl2IGNsYXNzPSJibG9ja3F1b3RlIj48YmxvY2tx
dW90ZSBjbGFzcz0iYmxvY2txdW90ZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnRl
bXBsYXRlICZsdDtjbGFzcyBUJmd0OwpzdGF0aWMgdm9pZCBkZWZhdWx0X2NvbnN0cnVjdChB
bGxvYyZhbXA7IGEsIFQqIHApOzwvcHJlPjxwPjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVt
PkVmZmVjdHM6PC9lbT48L3NwYW4+IGNhbGxzIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5hLmRl
ZmF1bHRfY29uc3RydWN0KHApPC9jb2RlPgogICAgICAgICAgICAgICAgICAgIGlmIHRoYXQg
Y2FsbCBpcyB3ZWxsLWZvcm1lZDsgb3RoZXJ3aXNlLCBpbnZva2VzIDxjb2RlIGNsYXNzPSJs
aXRlcmFsIj46Om5ldwogICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3QmbHQ7
dm9pZComZ3Q7KHApKSBUPC9jb2RlPi48L3A+PC9ibG9ja3F1b3RlPjwvZGl2PjxwPkluIHNl
Y3Rpb24gMjAuNi45LCBbZGVmYXVsdC5hbGxvY2F0b3JdLCBhZGQgdGhlIGZvbGxvd2luZyB0
byB0aGUgZGVjbGFyYXRpb24gb2YKICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0i
bGl0ZXJhbCI+c3RkOjphbGxvY2F0b3I8L2NvZGU+OjwvcD48cHJlIGNsYXNzPSJwcm9ncmFt
bGlzdGluZyI+dGVtcGxhdGUgJmx0O2NsYXNzIFUmZ3Q7CnN0YXRpYyB2b2lkIGRlZmF1bHRf
Y29uc3RydWN0KEFsbG9jJmFtcDsgYSwgVSogcCk7PC9wcmU+PHA+SW4gc2VjdGlvbiAyMC42
LjkuMSBbYWxsb2NhdG9yLm1lbWJlcnNdLCBhZnRlciBwYXJhZ3JhcGggMTIsIGFkZCB0aGUK
ICAgICAgICAgICAgICAgIGZvbGxvd2luZzo8L3A+PGRpdiBjbGFzcz0iYmxvY2txdW90ZSI+
PGJsb2NrcXVvdGUgY2xhc3M9ImJsb2NrcXVvdGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0
aW5nIj50ZW1wbGF0ZSAmbHQ7Y2xhc3MgVSZndDsKc3RhdGljIHZvaWQgZGVmYXVsdF9jb25z
dHJ1Y3QoQWxsb2MmYW1wOyBhLCBVKiBwKTs8L3ByZT48cD48c3BhbiBjbGFzcz0iZW1waGFz
aXMiPjxlbT5FZmZlY3RzOjwvZW0+PC9zcGFuPiBjYWxscyA8Y29kZSBjbGFzcz0ibGl0ZXJh
bCI+OjpuZXcgKHN0YXRpY19jYXN0Jmx0O3ZvaWQqJmd0OyhwKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgVTwvY29kZT4uPC9wPjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48ZGl2IGNs
YXNzPSJzZWN0aW9uIiB0aXRsZT0iYmFzaWNfc3RyaW5nIj48ZGl2IGNsYXNzPSJ0aXRsZXBh
Z2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBuYW1lPSJkMGU0MTAiPjwvYT5i
YXNpY19zdHJpbmc8L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPkluIHNlY3Rpb24gMjEuNCwg
YWRkIHRoZSBmb2xsb3dpbmcgZGVjbGFyYXRpb25zIHRvCiAgICAgICAgICAgICAgICA8Y29k
ZSBjbGFzcz0ibGl0ZXJhbCI+YmFzaWNfc3RyaW5nPC9jb2RlPiwgaW4gdGhlaXIgYXBwcm9w
cmlhdGUgc2VjdGlvbnM6PC9wPjxkaXYgY2xhc3M9ImJsb2NrcXVvdGUiPjxibG9ja3F1b3Rl
IGNsYXNzPSJibG9ja3F1b3RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+YmFzaWNf
c3RyaW5nKHNpemVfdHlwZSBuLCB2YWx1ZV9pbml0X3QsIGNvbnN0IEFsbG9jYXRvciZhbXA7
IGEgPSBBbGxvY2F0b3IoKSk7PC9wcmU+PHA+UmVxdWlyZXM6IDxjb2RlIGNsYXNzPSJjb2Rl
Ij5uICZsdDsgbnBvczwvY29kZT48L3A+PHA+RWZmZWN0czogQ29uc3RydWN0cyBhbiBvYmpl
Y3Qgb2YgY2xhc3MgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmJhc2ljX3N0cmluZzwvY29kZT4g
YW5kCiAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lcyBpdHMgaW5pdGlhbCBzdHJpbmcg
dmFsdWUgYnkgdmFsdWUtaW5pdGlhbGl6aW5nIGVhY2ggY2hhci1saWtlIG9iamVjdAogICAg
ICAgICAgICAgICAgICAgIHZpYSBhIGNhbGwgdG8gIGZvciBuIGVsZW1lbnRzLCBhcyBpbmRp
Y2F0ZWQgaW4gVGFibGUgWFguPC9wPjxwPlRhYmxlIFhYIGlzIGxpa2UgdGFibGUgNjgsIGV4
Y2VwdCB0aGF0IDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5kYXRhKCk8L2NvZGU+CiAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9InF1b3RlIj4mIzgyMjA7PHNwYW4gY2xhc3M9InF1
b3RlIj5wb2ludHMgYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYW4gYWxsb2NhdGVkIGFycmF5
IG9mIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5uPC9jb2RlPgogICAgICAgICAgICAgICAgICAg
ICAgICBlbGVtZW50cywgZWFjaCBzdG9yaW5nIHRoZSBpbml0aWFsIHZhbHVlCiAgICAgICAg
ICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmNoYXJUKCk8L2NvZGU+PC9zcGFu
PiYjODIyMTs8L3NwYW4+PC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5iYXNpY19z
dHJpbmcoc2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90LCBjb25zdCBBbGxvY2F0b3ImYW1w
OyBhID0gQWxsb2NhdG9yKCkpOzwvcHJlPjxwPlJlcXVpcmVzOiA8Y29kZSBjbGFzcz0iY29k
ZSI+biAmbHQ7IG5wb3M8L2NvZGU+PC9wPjxwPkVmZmVjdHM6IENvbnN0cnVjdHMgYW4gb2Jq
ZWN0IG9mIGNsYXNzIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5iYXNpY19zdHJpbmc8L2NvZGU+
IGFuZAogICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgaXRzIGluaXRpYWwgc3RyaW5n
IHZhbHVlIGJ5IGRlZmF1bHQtaW5pdGlhbGl6aW5nIGVhY2ggY2hhci1saWtlCiAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0IGZvciBuIGVsZW1lbnRzLCBhcyBpbmRpY2F0ZWQgaW4gVGFi
bGUgWFkuPC9wPjxwPlRhYmxlIFhZIGlzIGxpa2UgdGFibGUgNjgsIGV4Y2VwdCB0aGF0IDxj
b2RlIGNsYXNzPSJsaXRlcmFsIj5kYXRhKCk8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAg
PHNwYW4gY2xhc3M9InF1b3RlIj4mIzgyMjA7PHNwYW4gY2xhc3M9InF1b3RlIj5wb2ludHMg
YXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYW4gYWxsb2NhdGVkIGFycmF5IG9mIDxjb2RlIGNs
YXNzPSJsaXRlcmFsIj5uPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50
cywgd2hvJ3MgaW5pdGlhbCB2YWx1ZXMgYXJlIHVuZGVmaW5lZC48L3NwYW4+JiM4MjIxOzwv
c3Bhbj48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmJhc2ljX3N0cmluZyhzaXpl
X3R5cGUgbiwgY2hhclQgYywgZGlzYW1iaWd1YXRlX3QsIGNvbnN0IEFsbG9jYXRvciZhbXA7
IGEgPSBBbGxvY2F0b3IoKSk7PC9wcmU+PHA+RWZmZWN0czogPGNvZGUgY2xhc3M9ImNvZGUi
PmJhc2ljX3N0cmluZyhuLCBjLCBhKTwvY29kZT48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxp
c3RpbmciPnZvaWQgcmVzaXplKHNpemVfdHlwZSBuLCB2YWx1ZV9pbml0X3QpOzwvcHJlPjxw
PkVmZmVjdHM6IDxjb2RlIGNsYXNzPSJjb2RlIj5yZXNpemUobiwgY2hhclQoKSk8L2NvZGU+
PC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkIHJlc2l6ZShzaXplX3R5cGUg
biwgZGVmYXVsdF9pbml0X3QpOzwvcHJlPjxwPlJlcXVpcmVzOiA8Y29kZSBjbGFzcz0iY29k
ZSI+biAmbHQ7PSBtYXhfc2l6ZSgpPC9jb2RlPjwvcD48cD5UaHJvd3M6IDxjb2RlIGNsYXNz
PSJsaXRlcmFsIj5sZW5ndGhfZXJyb3I8L2NvZGU+IGlmIDxjb2RlIGNsYXNzPSJjb2RlIj5u
ICZndDsgbWF4X3NpemUoKTwvY29kZT4uPC9wPjxwPkVmZmVjdHM6IEFsdGVycyB0aGUgbGVu
Z3RoIG9mIHRoZSBzdHJpbmcgZGVzaWduYXRlZCBieQogICAgICAgICAgICAgICAgICAgICAg
ICA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+KnRoaXM8L2NvZGU+IGFzIGZvbGxvd3M6PC9wPjxk
aXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHR5cGU9
ImRpc2MiPjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPklmIDxjb2RlIGNsYXNzPSJjb2RlIj5u
ICZsdDs9IHNpemUoKTwvY29kZT4sIHRoZSBmdW5jdGlvbiByZXBsYWNlcyB0aGUgc3RyaW5n
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ25hdGVkIGJ5IDxjb2RlIGNsYXNz
PSJsaXRlcmFsIj4qdGhpczwvY29kZT4gd2l0aCBhIHN0cmluZyBvZiBsZW5ndGgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+bjwvY29k
ZT4gd2hvc2UgZWxlbWVudHMgYXJlIGEgY29weSBvZiB0aGUgaW5pdGlhbAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxlbWVudHMgb2YgdGhlIG9yaWdpbmFsIHN0cmluZyBkZXNp
Z25hdGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ibGl0
ZXJhbCI+KnRoaXM8L2NvZGU+LjwvcD48L2xpPjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPklm
IDxjb2RlIGNsYXNzPSJjb2RlIj5uICZndDsgc2l6ZSgpPC9jb2RlPiwgdGhlIGZ1bmN0aW9u
IHJlcGxhY2VzIHRoZSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2ln
bmF0ZWQgYnkgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPip0aGlzPC9jb2RlPiB3aXRoIGEgc3Ry
aW5nIG9mIGxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNs
YXNzPSJsaXRlcmFsIj5uPC9jb2RlPiB3aG9zZSBmaXJzdCA8Y29kZSBjbGFzcz0ibGl0ZXJh
bCI+c2l6ZSgpPC9jb2RlPiBlbGVtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nIGRlc2lnbmF0ZWQgYnkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj4qdGhpczwvY29k
ZT4sIGFuZCB3aG9zZSByZW1haW5pbmcgZWxlbWVudHMgYXJlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmRlZmluZWQuPC9wPjwvbGk+PC91bD48L2Rpdj48cHJlIGNsYXNzPSJw
cm9ncmFtbGlzdGluZyI+YmFzaWNfc3RyaW5nJmFtcDsgYXBwZW5kKHNpemVfdHlwZSBuLCB2
YWx1ZV9pbml0X3QpOzwvcHJlPjxwPkVmZmVjdHM6IDxjb2RlIGNsYXNzPSJjb2RlIj5hcHBl
bmQobiwgY2hhclQoKSk8L2NvZGU+PC9wPjxwPlJldHVybnM6IDxjb2RlIGNsYXNzPSJsaXRl
cmFsIj4qdGhpczwvY29kZT48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmJhc2lj
X3N0cmluZyZhbXA7IGFwcGVuZChzaXplX3R5cGUgbiwgZGVmYXVsdF9pbml0X3QpOzwvcHJl
PjxwPkVmZmVjdHM6IEVxdWl2YWxlbnQgdG8gPGNvZGUgY2xhc3M9ImNvZGUiPmFwcGVuZChi
YXNpY19zdHJpbmd7biwKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2luaXRfdHt9fSk8
L2NvZGU+PC9wPjxwPlJldHVybnM6IDxjb2RlIGNsYXNzPSJsaXRlcmFsIj4qdGhpczwvY29k
ZT48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgcHVzaF9iYWNrKHZhbHVl
X2luaXRfdCk7PC9wcmU+PHA+RWZmZWN0czogPGNvZGUgY2xhc3M9ImNvZGUiPnB1c2hfYmFj
ayhjaGFyVCgpKTwvY29kZT48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQg
cHVzaF9iYWNrKGRlZmF1bHRfaW5pdF90KTs8L3ByZT48cD5FZmZlY3RzOiBFcXVpdmFsZW50
IHRvIDxjb2RlIGNsYXNzPSJjb2RlIj5hcHBlbmQoc3RhdGljX2Nhc3QmbHQ7c2l6ZV90eXBl
Jmd0OygxKSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9pbml0X3R7fSk8L2Nv
ZGU+PC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5iYXNpY19zdHJpbmcmYW1wOyBh
c3NpZ24oc2l6ZV90eXBlIG4sIHZhbHVlX2luaXRfdCk7PC9wcmU+PHA+RWZmZWN0czogRXF1
aXZhbGVudCB0byA8Y29kZSBjbGFzcz0iY29kZSI+YXNzaWduKGJhc2ljX3N0cmluZ3tuLAog
ICAgICAgICAgICAgICAgICAgIHZhbHVlX2luaXRfdHt9fSk8L2NvZGU+PC9wPjxwcmUgY2xh
c3M9InByb2dyYW1saXN0aW5nIj5iYXNpY19zdHJpbmcmYW1wOyBhc3NpZ24oc2l6ZV90eXBl
IG4sIGRlZmF1bHRfaW5pdF90KTs8L3ByZT48cD5FZmZlY3RzOiBFcXVpdmFsZW50IHRvIDxj
b2RlIGNsYXNzPSJjb2RlIj5hc3NpZ24oYmFzaWNfc3RyaW5ne24sCiAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdF9pbml0X3R7fX0pPC9jb2RlPjwvcD48cHJlIGNsYXNzPSJwcm9ncmFt
bGlzdGluZyI+YmFzaWNfc3RyaW5nJmFtcDsgaW5zZXJ0KHNpemVfdHlwZSBwb3MsIHNpemVf
dHlwZSBuLCB2YWx1ZV9pbml0X3QpOzwvcHJlPjxwPkVmZmVjdHM6IEVxdWl2YWxlbnQgdG8g
PGNvZGUgY2xhc3M9ImNvZGUiPmluc2VydChwb3MsIGJhc2ljX3N0cmluZ3tuLAogICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZV9pbml0X3R7fX0pPC9jb2RlPjwvcD48cD5SZXR1cm5z
OiA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+KnRoaXM8L2NvZGU+PC9wPjxwcmUgY2xhc3M9InBy
b2dyYW1saXN0aW5nIj5iYXNpY19zdHJpbmcmYW1wOyBpbnNlcnQoc2l6ZV90eXBlIHBvcywg
c2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90KTs8L3ByZT48cD5FZmZlY3RzOiBFcXVpdmFs
ZW50IHRvIDxjb2RlIGNsYXNzPSJjb2RlIj5pbnNlcnQocG9zLCBiYXNpY19zdHJpbmd7biwK
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9pbml0X3R7fX0pPC9jb2RlPjwvcD48
cD5SZXR1cm5zOiA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+KnRoaXM8L2NvZGU+PC9wPjxwcmUg
Y2xhc3M9InByb2dyYW1saXN0aW5nIj5pdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3Ig
cCwgdmFsdWVfaW5pdF90KTs8L3ByZT48cD5SZXF1aXJlczogcCBpcyBhIHZhbGlkIGl0ZXJh
dG9yIG9uICp0aGlzLjwvcD48cD5FZmZlY3RzOiBpbnNlcnRzIGEgY29weSBvZiA8Y29kZSBj
bGFzcz0ibGl0ZXJhbCI+Y2hhclQoKTwvY29kZT4gYmVmb3JlIHRoZSBjaGFyYWN0ZXIKICAg
ICAgICAgICAgICAgICAgICByZWZlcnJlZCB0byBieSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+
cDwvY29kZT4uPC9wPjxwPlJldHVybnM6IEFuIGl0ZXJhdG9yIHdoaWNoIHJlZmVycyB0byB0
aGUgY29weSBvZiB0aGUgaW5zZXJ0ZWQKICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIu
PC9wPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pdGVyYXRvciBpbnNlcnQoY29uc3Rf
aXRlcmF0b3IgcCwgZGVmYXVsdF9pbml0X3QpOzwvcHJlPjxwPlJlcXVpcmVzOiBwIGlzIGEg
dmFsaWQgaXRlcmF0b3Igb24gKnRoaXMuPC9wPjxwPkVmZmVjdHM6IGluc2VydHMgYSBkZWZh
dWx0LWluaXRpYWxpemVkIGNoYXJhY3RlciBiZWZvcmUgdGhlIGNoYXJhY3RlciByZWZlcnJl
ZAogICAgICAgICAgICAgICAgICAgIHRvIGJ5IDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5wPC9j
b2RlPi48L3A+PHA+UmV0dXJuczogQW4gaXRlcmF0b3Igd2hpY2ggcmVmZXJzIHRvIHRoZSBj
b3B5IG9mIHRoZSBpbnNlcnRlZAogICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlci48L3A+
PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPml0ZXJhdG9yIGluc2VydChjb25zdF9pdGVy
YXRvciBwLCBzaXplX3R5cGUgbiwgdmFsdWVfaW5pdF90KTs8L3ByZT48cD5SZXF1aXJlczog
cCBpcyBhIHZhbGlkIGl0ZXJhdG9yIG9uICp0aGlzLjwvcD48cD5FZmZlY3RzOiBpbnNlcnRz
IDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5uPC9jb2RlPiBjb3BpZXMgb2YgPGNvZGUgY2xhc3M9
ImxpdGVyYWwiPmNoYXJUKCk8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHRo
ZSBjaGFyYWN0ZXIgcmVmZXJyZWQgdG8gYnkgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPnA8L2Nv
ZGU+LjwvcD48cD5SZXR1cm5zOiBBbiBpdGVyYXRvciB3aGljaCByZWZlcnMgdG8gdGhlIGZp
cnN0IGluc2VydGVkCiAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJsaXRl
cmFsIj5jaGFyVCgpPC9jb2RlPiBjaGFyYWN0ZXIsIG9yIDxjb2RlIGNsYXNzPSJsaXRlcmFs
Ij5wPC9jb2RlPiBpZiA8Y29kZSBjbGFzcz0iY29kZSI+biA9PQogICAgICAgICAgICAgICAg
ICAgICAgICAwPC9jb2RlPi48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPml0ZXJh
dG9yIGluc2VydChjb25zdF9pdGVyYXRvciBwLCBzaXplX3R5cGUgbiwgZGVmYXVsdF9pbml0
X3QpOzwvcHJlPjxwPlJlcXVpcmVzOiBwIGlzIGEgdmFsaWQgaXRlcmF0b3Igb24gKnRoaXMu
PC9wPjxwPkVmZmVjdHM6IGluc2VydHMgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPm48L2NvZGU+
IGRlZmF1bHQtY29uc3RydWN0ZWQgY2hhcmFjdGVycyBiZWZvcmUKICAgICAgICAgICAgICAg
ICAgICB0aGUgY2hhcmFjdGVyIHJlZmVycmVkIHRvIGJ5IDxjb2RlIGNsYXNzPSJsaXRlcmFs
Ij5wPC9jb2RlPi48L3A+PHA+UmV0dXJuczogQW4gaXRlcmF0b3Igd2hpY2ggcmVmZXJzIHRv
IHRoZSBmaXJzdCBpbnNlcnRlZCBkZWZhdWx0LWNvbnN0cnVjdGVkCiAgICAgICAgICAgICAg
ICAgICAgY2hhcmFjdGVyLCBvciA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+cDwvY29kZT4gaWYg
PGNvZGUgY2xhc3M9ImNvZGUiPm4gPT0gMDwvY29kZT4uPC9wPjxwcmUgY2xhc3M9InByb2dy
YW1saXN0aW5nIj5iYXNpY19zdHJpbmcmYW1wOyByZXBsYWNlKHNpemVfdHlwZSBwb3MxLCBz
aXplX3R5cGUgbjEsIHNpemVfdHlwZSBuMiwgdmFsdWVfaW5pdF90KTs8L3ByZT48cD5FZmZl
Y3RzOiBFcXVpdmFsZW50IHRvIDxjb2RlIGNsYXNzPSJjb2RlIj5yZXBsYWNlKHBvczEsIG4x
LCBiYXNpY19zdHJpbmd7bjIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2luaXRf
dHt9fSk8L2NvZGU+LjwvcD48cD5SZXR1cm5zOiA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+KnRo
aXM8L2NvZGU+LjwvcD48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+YmFzaWNfc3RyaW5n
JmFtcDsgcmVwbGFjZShzaXplX3R5cGUgcG9zMSwgc2l6ZV90eXBlIG4xLCBzaXplX3R5cGUg
bjIsIGRlZmF1bHRfaW5pdF90KTs8L3ByZT48cD5FZmZlY3RzOiBFcXVpdmFsZW50IHRvIDxj
b2RlIGNsYXNzPSJjb2RlIj5yZXBsYWNlKHBvczEsIG4xLCBiYXNpY19zdHJpbmd7bjIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfaW5pdF90e319KTwvY29kZT4uPC9wPjxw
PlJldHVybnM6IDxjb2RlIGNsYXNzPSJsaXRlcmFsIj4qdGhpczwvY29kZT4uPC9wPjxwcmUg
Y2xhc3M9InByb2dyYW1saXN0aW5nIj5iYXNpY19zdHJpbmcmYW1wOyByZXBsYWNlKGNvbnN0
X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMiwgc2l6ZV90eXBlIG4sIHZhbHVlX2lu
aXRfdCk7PC9wcmU+PHA+UmVxdWlyZXM6IDxjb2RlIGNsYXNzPSJjb2RlIj5bYmVnaW4oKSxp
MSk8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iY29kZSI+W2kxLGkyKTwvY29kZT4gYXJlIHZh
bGlkCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLjwvcD48cD5FZmZlY3RzOiBDYWxscyA8
Y29kZSBjbGFzcz0iY29kZSI+cmVwbGFjZShpMSAtIGJlZ2luKCksIGkyIC0gaTEsIGJhc2lj
X3N0cmluZ3tuLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9pbml0X3R7fX0pPC9j
b2RlPi48L3A+PHA+UmV0dXJuczogPGNvZGUgY2xhc3M9ImxpdGVyYWwiPip0aGlzPC9jb2Rl
Pi48L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmJhc2ljX3N0cmluZyZhbXA7IHJl
cGxhY2UoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyLCBzaXplX3R5cGUg
biwgZGVmYXVsdF9pbml0X3QpOzwvcHJlPjxwPlJlcXVpcmVzOiA8Y29kZSBjbGFzcz0iY29k
ZSI+W2JlZ2luKCksaTEpPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImNvZGUiPltpMSxpMik8
L2NvZGU+IGFyZSB2YWxpZAogICAgICAgICAgICAgICAgICAgIHJhbmdlcy48L3A+PHA+RWZm
ZWN0czogQ2FsbHMgPGNvZGUgY2xhc3M9ImNvZGUiPnJlcGxhY2UoaTEgLSBiZWdpbigpLCBp
MiAtIGkxLCBiYXNpY19zdHJpbmd7biwKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dF9pbml0X3R7fX0pPC9jb2RlPi48L3A+PHA+UmV0dXJuczogPGNvZGUgY2xhc3M9ImxpdGVy
YWwiPip0aGlzPC9jb2RlPi48L3A+PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PjxkaXYgY2xh
c3M9InNlY3Rpb24iIHRpdGxlPSJDb250YWluZXIgcmVxdWlyZW1lbnRzIj48ZGl2IGNsYXNz
PSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBuYW1lPSJkMGU3
MjciPjwvYT5Db250YWluZXIgcmVxdWlyZW1lbnRzPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj48
cD5JbiBzZWN0aW9uIDIzLjIuMSwgW2NvbnRhaW5lci5yZXF1aXJlbWVudHMuZ2VuZXJhbF0s
IGNoYW5nZSB0aGUgZmlyc3Qgc2VudGVuY2Ugb2YKICAgICAgICAgICAgICAgIHBhcmFncmFw
aCA0IHRvIHJlYWQ6PC9wPjxkaXYgY2xhc3M9ImJsb2NrcXVvdGUiPjxibG9ja3F1b3RlIGNs
YXNzPSJibG9ja3F1b3RlIj48cD5Gb3IgdGhlIGNvbXBvbmVudHMgYWZmZWN0ZWQgYnkgdGhp
cyBzdWJjbGF1c2UgdGhhdCBkZWNsYXJlIGFuCiAgICAgICAgICAgICAgICAgICAgICAgIDxj
b2RlIGNsYXNzPSJsaXRlcmFsIj5hbGxvY2F0b3JfdHlwZTwvY29kZT4sIG9iamVjdHMgc3Rv
cmVkIGluIHRoZXNlIGNvbXBvbmVudHMgc2hhbGwKICAgICAgICAgICAgICAgICAgICBiZSBj
b25zdHJ1Y3RlZCB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xh
c3M9ImxpdGVyYWwiPmFsbG9jYXRvcl90cmFpdHMmbHQ7YWxsb2NhdG9yX3R5cGUmZ3Q7Ojpj
b25zdHJ1Y3Q8L2NvZGU+IG9yCiAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNz
PSJsaXRlcmFsIj5hbGxvY2F0b3JfdHJhaXRzJmx0O2FsbG9jYXRvcl90eXBlJmd0Ozo6ZGVm
YXVsdF9jb25zdHJ1Y3Q8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zIGFu
ZCBkZXN0cm95ZWQgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNs
YXNzPSJsaXRlcmFsIj5hbGxvY2F0b3JfdHJhaXRzJmx0O2FsbG9jYXRvcl90eXBlJmd0Ozo6
ZGVzdHJveTwvY29kZT4gZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAoMjAuNi44LjIp
LjwvcD48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiIgdGl0
bGU9ImRlcXVlIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9
InRpdGxlIj48YSBuYW1lPSJkMGU3NDciPjwvYT5kZXF1ZTwvaDM+PC9kaXY+PC9kaXY+PC9k
aXY+PHA+SW4gc2VjdGlvbiAyMy4zLjMuMSwgW2RlcXVlLm92ZXJ2aWV3XSwgcGFyYWdyYXBo
IDIsIGFkZCB0aGUgZm9sbG93aW5nIGRlY2xhcmF0aW9ucwogICAgICAgICAgICAgICAgdG8g
PGNvZGUgY2xhc3M9ImxpdGVyYWwiPmRlcXVlPC9jb2RlPjo8L3A+PGRpdiBjbGFzcz0iYmxv
Y2txdW90ZSI+PGJsb2NrcXVvdGUgY2xhc3M9ImJsb2NrcXVvdGUiPjxwcmUgY2xhc3M9InBy
b2dyYW1saXN0aW5nIj5kZXF1ZShzaXplX3R5cGUgbiwgdmFsdWVfaW5pdF90LCBjb25zdCBB
bGxvY2F0b3ImYW1wOyA9IEFsbG9jYXRvcigpKTsKZGVxdWUoc2l6ZV90eXBlIG4sIGRlZmF1
bHRfaW5pdF90LCBjb25zdCBBbGxvY2F0b3ImYW1wOyA9IEFsbG9jYXRvcigpKTsKZGVxdWUo
c2l6ZV90eXBlIG4sIGNvbnN0IFQmYW1wOyB2YWx1ZSwgZGlzYW1iaWd1YXRlX3QsIGNvbnN0
IEFsbG9jYXRvciZhbXA7IGEgPSBBbGxvY2F0b3IoKSk7CnZvaWQgYXNzaWduKHNpemVfdHlw
ZSBuLCB2YWx1ZV9pbml0X3QpOwp2b2lkIGFzc2lnbihzaXplX3R5cGUgbiwgZGVmYXVsdF9p
bml0X3QpOwp2b2lkIHJlc2l6ZShzaXplX3R5cGUgc3osIHZhbHVlX2luaXRfdCk7CnZvaWQg
cmVzaXplKHNpemVfdHlwZSBzeiwgZGVmYXVsdF9pbml0X3QpOwp2b2lkIHB1c2hfZnJvbnQo
dmFsdWVfaW5pdF90KTsKdm9pZCBwdXNoX2Zyb250KGRlZmF1bHRfaW5pdF90KTsKdm9pZCBw
dXNoX2JhY2sodmFsdWVfaW5pdF90KTsKdm9pZCBwdXNoX2JhY2soZGVmYXVsdF9pbml0X3Qp
OwppdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBu
LCB2YWx1ZV9pbml0X3QpOwppdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRp
b24sIHNpemVfdHlwZSBuLCBkZWZhdWx0X2luaXRfdCk7PC9wcmU+PC9ibG9ja3F1b3RlPjwv
ZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJmb3J3YXJkX2xpc3QiPjxk
aXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPjxhIG5h
bWU9ImQwZTc1OCI+PC9hPmZvcndhcmRfbGlzdDwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+
SW4gc2VjdGlvbiAyMy4zLjQuMSwgW2ZvcndhcmRsaXN0Lm92ZXJ2aWV3XSwgcGFyYWdyYXBo
IDMsIGFkZCB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbnMgdG8g
PGNvZGUgY2xhc3M9ImxpdGVyYWwiPmZvcndhcmRfbGlzdDwvY29kZT46PC9wPjxkaXYgY2xh
c3M9ImJsb2NrcXVvdGUiPjxibG9ja3F1b3RlIGNsYXNzPSJibG9ja3F1b3RlIj48cHJlIGNs
YXNzPSJwcm9ncmFtbGlzdGluZyI+Zm9yd2FyZF9saXN0KHNpemVfdHlwZSBuLCB2YWx1ZV9p
bml0X3QsIGNvbnN0IEFsbG9jYXRvciZhbXA7ID0gQWxsb2NhdG9yKCkpOwpmb3J3YXJkX2xp
c3Qoc2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90LCBjb25zdCBBbGxvY2F0b3ImYW1wOyA9
IEFsbG9jYXRvcigpKTsKZm9yd2FyZF9saXN0KHNpemVfdHlwZSBuLCBjb25zdCBUJmFtcDsg
dmFsdWUsIGRpc2FtYmlndWF0ZV90LCBjb25zdCBBbGxvY2F0b3ImYW1wOyBhID0gQWxsb2Nh
dG9yKCkpOwp2b2lkIGFzc2lnbihzaXplX3R5cGUgbiwgdmFsdWVfaW5pdF90KTsKdm9pZCBh
c3NpZ24oc2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90KTsKdm9pZCBwdXNoX2Zyb250KHZh
bHVlX2luaXRfdCk7CnZvaWQgcHVzaF9mcm9udChkZWZhdWx0X2luaXRfdCk7Cml0ZXJhdG9y
IGluc2VydF9hZnRlcihjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgc2l6ZV90eXBlIG4sIHZh
bHVlX2luaXRfdCk7Cml0ZXJhdG9yIGluc2VydF9hZnRlcihjb25zdF9pdGVyYXRvciBwb3Np
dGlvbiwgc2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90KTsKdm9pZCByZXNpemUoc2l6ZV90
eXBlIHN6LCB2YWx1ZV9pbml0X3QpOwp2b2lkIHJlc2l6ZShzaXplX3R5cGUgc3osIGRlZmF1
bHRfaW5pdF90KTs8L3ByZT48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0i
c2VjdGlvbiIgdGl0bGU9Imxpc3QiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2
PjxoMyBjbGFzcz0idGl0bGUiPjxhIG5hbWU9ImQwZTc2OSI+PC9hPmxpc3Q8L2gzPjwvZGl2
PjwvZGl2PjwvZGl2PjxwPkluIHNlY3Rpb24gMjMuMy41LjEsIFtsaXN0Lm92ZXJ2aWV3XSwg
cGFyYWdyYXBoIDIsIGFkZCB0aGUgZm9sbG93aW5nIGRlY2xhcmF0aW9ucwogICAgICAgICAg
ICAgICAgdG8gPGNvZGUgY2xhc3M9ImxpdGVyYWwiPmxpc3Q8L2NvZGU+OjwvcD48ZGl2IGNs
YXNzPSJibG9ja3F1b3RlIj48YmxvY2txdW90ZSBjbGFzcz0iYmxvY2txdW90ZSI+PHByZSBj
bGFzcz0icHJvZ3JhbWxpc3RpbmciPmxpc3Qoc2l6ZV90eXBlIG4sIHZhbHVlX2luaXRfdCwg
Y29uc3QgQWxsb2NhdG9yJmFtcDsgPSBBbGxvY2F0b3IoKSk7Cmxpc3Qoc2l6ZV90eXBlIG4s
IGRlZmF1bHRfaW5pdF90LCBjb25zdCBBbGxvY2F0b3ImYW1wOyA9IEFsbG9jYXRvcigpKTsK
bGlzdChzaXplX3R5cGUgbiwgY29uc3QgVCZhbXA7IHZhbHVlLCBkaXNhbWJpZ3VhdGVfdCwg
Y29uc3QgQWxsb2NhdG9yJmFtcDsgYSA9IEFsbG9jYXRvcigpKTsKdm9pZCBhc3NpZ24oc2l6
ZV90eXBlIG4sIHZhbHVlX2luaXRfdCk7CnZvaWQgYXNzaWduKHNpemVfdHlwZSBuLCBkZWZh
dWx0X2luaXRfdCk7CnZvaWQgcmVzaXplKHNpemVfdHlwZSBzeiwgdmFsdWVfaW5pdF90KTsK
dm9pZCByZXNpemUoc2l6ZV90eXBlIHN6LCBkZWZhdWx0X2luaXRfdCk7CnZvaWQgcHVzaF9m
cm9udCh2YWx1ZV9pbml0X3QpOwp2b2lkIHB1c2hfZnJvbnQoZGVmYXVsdF9pbml0X3QpOwp2
b2lkIHB1c2hfYmFjayh2YWx1ZV9pbml0X3QpOwp2b2lkIHB1c2hfYmFjayhkZWZhdWx0X2lu
aXRfdCk7Cml0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBwb3NpdGlvbiwgc2l6ZV90
eXBlIG4sIHZhbHVlX2luaXRfdCk7Cml0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBw
b3NpdGlvbiwgc2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90KTs8L3ByZT48L2Jsb2NrcXVv
dGU+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiIgdGl0bGU9InZlY3RvciI+PGRp
diBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+PGEgbmFt
ZT0iZDBlNzgwIj48L2E+dmVjdG9yPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj48cD5JbiBzZWN0
aW9uIDIzLjMuNi4xLCBbdmVjdG9yLm92ZXJ2aWV3XSwgcGFyYWdyYXBoIDIsIGFkZCB0aGUg
Zm9sbG93aW5nCiAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbnMgdG8gPGNvZGUgY2xhc3M9
ImxpdGVyYWwiPnZlY3RvcjwvY29kZT46PC9wPjxkaXYgY2xhc3M9ImJsb2NrcXVvdGUiPjxi
bG9ja3F1b3RlIGNsYXNzPSJibG9ja3F1b3RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGlu
ZyI+dmVjdG9yKHNpemVfdHlwZSBuLCB2YWx1ZV9pbml0X3QsIGNvbnN0IEFsbG9jYXRvciZh
bXA7ID0gQWxsb2NhdG9yKCkpOwp2ZWN0b3Ioc2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90
LCBjb25zdCBBbGxvY2F0b3ImYW1wOyA9IEFsbG9jYXRvcigpKTsKdmVjdG9yKHNpemVfdHlw
ZSBuLCBjb25zdCBUJmFtcDsgdmFsdWUsIGRpc2FtYmlndWF0ZV90LCBjb25zdCBBbGxvY2F0
b3ImYW1wOyBhID0gQWxsb2NhdG9yKCkpOwp2b2lkIGFzc2lnbihzaXplX3R5cGUgbiwgdmFs
dWVfaW5pdF90KTsKdm9pZCBhc3NpZ24oc2l6ZV90eXBlIG4sIGRlZmF1bHRfaW5pdF90KTsK
dm9pZCByZXNpemUoc2l6ZV90eXBlIHN6LCB2YWx1ZV9pbml0X3QpOwp2b2lkIHJlc2l6ZShz
aXplX3R5cGUgc3osIGRlZmF1bHRfaW5pdF90KTsKdm9pZCBwdXNoX2JhY2sodmFsdWVfaW5p
dF90KTsKdm9pZCBwdXNoX2JhY2soZGVmYXVsdF9pbml0X3QpOwppdGVyYXRvciBpbnNlcnQo
Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuLCB2YWx1ZV9pbml0X3QpOwpp
dGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuLCBk
ZWZhdWx0X2luaXRfdCk7PC9wcmU+PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PjwvZGl2Pjxk
aXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJBY2tub3dsZWRnZW1lbnRzIj48ZGl2IGNsYXNz
PSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6
IGJvdGgiPjxhIG5hbWU9ImQwZTc5MSI+PC9hPkFja25vd2xlZGdlbWVudHM8L2gyPjwvZGl2
PjwvZGl2PjwvZGl2PjxwPk5ldmluICI6LSkiIExpYmVyLCBmb3IgcG9pbnRpbmcgb3V0IHRo
ZSBhbWJpZ3VpdHkgaXNzdWUgd2l0aCBvdmVybG9hZGVkIGZ1bmN0aW9ucywgYXMKICAgICAg
ICAgICAgd2VsbCBhcyB0aGUgYWxsb2NhdG9yIHJhbWlmaWNhdGlvbnMgb2YgdGhlIHByb3Bv
c2FsLjwvcD48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIiB0aXRsZT0iUmVmZXJlbmNlcyI+
PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5
bGU9ImNsZWFyOiBib3RoIj48YSBuYW1lPSJkMGU3OTYiPjwvYT5SZWZlcmVuY2VzPC9oMj48
L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0i
aXRlbWl6ZWRsaXN0IiB0eXBlPSJkaXNjIj48bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48YSBj
bGFzcz0ibGluayIgaHJlZj0iaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2lzb2NwcC5v
cmcvZm9ydW0vIyF0b3BpYy9zdGQtcHJvcG9zYWxzL1FOSFlUQmNqQWI0IiB0YXJnZXQ9Il90
b3AiPk1vcmUgdW5pZm9ybSBpbml0aWFsaXphdGlvbiB0aHJlYWQgYXQgaXNvY3BwLm9yZzwv
YT48L3A+PC9saT48bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48YSBjbGFzcz0ibGluayIgaHJl
Zj0iaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2lzb2NwcC5vcmcvZm9ydW0vIyF0b3Bp
Yy9zdGQtcHJvcG9zYWxzLzRCSERJWGdDY0w4IiB0YXJnZXQ9Il90b3AiPkRlZmF1bHQgaW5p
dGlhbGl6YXRpb24gdGhyZWFkIGF0IGlzb2NwcC5vcmc8L2E+PC9wPjwvbGk+PGxpIGNsYXNz
PSJsaXN0aXRlbSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9Imh0dHBzOi8vZ3JvdXBzLmdv
b2dsZS5jb20vZm9ydW0vIyF0b3BpYy9jb21wLnN0ZC5jKysvU3VUUnpSM1MxbXciIHRhcmdl
dD0iX3RvcCI+UmVxdWVzdCBmb3Igc3RkOjp2ZWN0b3IgYW5kIHBvc3NpYmx5IG90aGVyczog
bWluaW1hbCBpbml0YWxpemF0aW9uIGF0CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAu
c3RkLmMrKzwvYT48L3A+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0
bWw+
--------------080207070201000809040602--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Fri, 23 Nov 2012 16:36:17 -0800 (PST)
Raw View
------=_Part_691_22838805.1353717377194
Content-Type: text/plain; charset=ISO-8859-1
Proofreading fail:
This phrase in the Impact on the Standard section:
as well as modify existing ones by adding a default parameter
Ignore it.
On Friday, November 23, 2012 4:26:40 PM UTC-8, Nicol Bolas wrote:
>
> I made some posts a few days ago about adding default initialization in
> containers, as well as disambiguating constructors so that you can use
> uniform initialization with certain container types (vector<int> {32, 2}
> being a confounding example).
>
> Here is a more formal proposal for the idea. It explicitly states every
> function that will be added. I made sure to specify things such that no
> ABI breakage would occur (ie: new constructors are added, but no
> constructor signatures or behavior is changed). It also explains how
> unusual constructs (like vector<default_init_t>) will be dealt with.
>
> Feel free to comment on it.
>
--
------=_Part_691_22838805.1353717377194
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Proofreading fail:<br><br>This phrase in the Impact on the Standard section=
:<br><br><span style=3D"background-color: rgb(255, 255, 0);">as well as mod=
ify existing ones by adding a default parameter</span><br><br>Ignore it.<br=
><br>On Friday, November 23, 2012 4:26:40 PM UTC-8, Nicol Bolas wrote:<bloc=
kquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-l=
eft: 1px #ccc solid;padding-left: 1ex;">I made some posts a few days ago ab=
out adding default initialization in=20
<br>containers, as well as disambiguating constructors so that you can use=
=20
<br>uniform initialization with certain container types (vector<int> =
{32, 2}=20
<br>being a confounding example).
<br>
<br>Here is a more formal proposal for the idea. It explicitly states every=
=20
<br>function that will be added. I made sure to specify things such that no=
=20
<br>ABI breakage would occur (ie: new constructors are added, but no=20
<br>constructor signatures or behavior is changed). It also explains how=20
<br>unusual constructs (like vector<default_init_t>) will be dealt wi=
th.
<br>
<br>Feel free to comment on it.
<br></blockquote>
<p></p>
-- <br />
<br />
<br />
<br />
------=_Part_691_22838805.1353717377194--
.