It turns out that one needs 35 round constants to correctly schedule a
32-bit key, not just 32. It further turns out that Clang orders the
various constant tables differently from GCC, which leads to the two
implementations producing different, but both incorrect, answers.
This is all very embarrassing. Fortunately, nobody will use a 32-bit
key and expect anything useful to come of it, and no larger key size is
affected. I think the main effect is that a bunch of the mode test
vectors needed changing.
static octet s[256], si[256];
static uint32 t[4][256], ti[4][256];
static uint32 u[4][256];
static octet s[256], si[256];
static uint32 t[4][256], ti[4][256];
static uint32 u[4][256];
/*----- Main code ---------------------------------------------------------*/
/*----- Main code ---------------------------------------------------------*/
fputs("\
/* --- The round constants --- */\n\
\n\
fputs("\
/* --- The round constants --- */\n\
\n\
-const octet square_rcon[32] = {\n\
+const octet square_rcon[35] = {\n\
", stdout);
for (i = 0; i < sizeof(rc); i++) {
printf("0x%02x", rc[i]);
", stdout);
for (i = 0; i < sizeof(rc); i++) {
printf("0x%02x", rc[i]);
extern const octet square_s[256], square_si[256];
extern const uint32 square_t[4][256], square_ti[4][256];
extern const uint32 square_u[4][256];
extern const octet square_s[256], square_si[256];
extern const uint32 square_t[4][256], square_ti[4][256];
extern const uint32 square_u[4][256];
-extern const octet square_rcon[32];
+extern const octet square_rcon[35];
#define S square_s
#define SI square_si
#define S square_s
#define SI square_si
square-cmac {
f260d7bc
""
square-cmac {
f260d7bc
""
- 29984a33657f622352c1ee581eab804e;
+ a6c67fdb36ee9d8552f4112e08d64d76;
- cdc5e3485007695cdeb53ce1e8cec39e;
+ df74a9ab4bb73ba0904abebbc8aafd31;
48b75511
95e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003
48b75511
95e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003
- 7fdd1689e5a004d05b0bc92e3ecc8f16;
+ 93b8e5f20003a16bbc160e0010c09ad2;
062365b0
a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd
062365b0
a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd
- 95f37b226b5f157fb68c9b235085799a;
+ fc6bc3e49f756681f782dabfaecabdab;
739a3d1f337f29549e6b0d27
""
c48de9e2768ea55c731b65c22052aebd;
739a3d1f337f29549e6b0d27
""
c48de9e2768ea55c731b65c22052aebd;
14ad568f
86edd1dc9268eeee533285
""
a6
0a
14ad568f
86edd1dc9268eeee533285
""
a6
0a
ed810c9b
689daaa9060d2d4b60
03062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd
739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a
ed810c9b
689daaa9060d2d4b60
03062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd
739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a
- 2de5299d997f5a95d32115f84b8cbc072043580e27bb6ace6654173512e0d464ce4358899c43ac2befe5cbe68155797b
- 217a8c66edf6aad2f17f555c8936028b;
+ 2de5299de77f5a9551211586c48cc2fb2043580e59bb6acee454174b9de0aa98ce435889e243ac2b6de5cb980e550787
+ 890c514f7759ae037140eef723181c48;
21635c6d
62c9269029df3e6057
acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a8
94476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57b
21635c6d
62c9269029df3e6057
acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a8
94476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57b
- f88c7d34053cc7278c3e3b09715ab3dec3aa050aa70aa6dcd560a9ea58ddd10857b9bcffb98e2af8a3c851f60f540ab8872af0df1d
- a65b843ead57238ecd6bf0eea46d6fbe;
+ f88c7d347b3cc7270e3e3b77fe5acd22c3aa050ad90aa6dc5760a994d7ddaff457b9bcffc78e2af821c8518880547444872af0df63
+ 06f53d976392e9e86ac221394b5fb07c;
b3a4f3ebbbb18ac6c95a97a4
8030370c33d090c54215ab
""
b3a4f3ebbbb18ac6c95a97a4
8030370c33d090c54215ab
""
- 66848361a1d85500e3efc4889f3c2bd1;
+ 68950a6ce18037350d23d4b89f253b27;
- 3e14f9c0f9b208db9a52730d00525dc6;
+ aff75e00b2b5ec870ee51a74b87f658b;
- 1b81e7698ff5e258ea2e8f75b7bcfd88;
+ d62f0eac68b965fbb852442a082b390e;
- c256dd01d1ee4db1387ef0f0b3d43b57;
+ 3b4a842254e17ddd4906899551af908c;
d1dff7da
c5c9941d26d0c6eb14ad568f86edd1dc
9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137
120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080c
d1dff7da
c5c9941d26d0c6eb14ad568f86edd1dc
9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137
120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080c
- cd9fbedf0befc513ec208493902b99f4e304654e0460d29920804d69dc150fa3e31d86a755ba930d0211fee9b7ca5f9f
- f01b0b0089bf48fedc2c21556a1b644a;
+ 792f3471e561f7f3c2da13d0ea08d8b4299c8514c61fc51896804fe26089afebe792f88719672f75b3656f491e894635
+ 0515fe199fc47f8f105e5ce90fa181ea;
c07df059
1d8fa21f2dd88374d8cde8e160ad10
997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da
1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b54
c07df059
1d8fa21f2dd88374d8cde8e160ad10
997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da
1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b54
- b88f48021b69e18d9457120fc11ebdd467c0b1119b5ab0bd16a5c3aa70e263d3ab841cbe6bba4fd02c94690dd143746294f825c26f
- e0efd3bd220277de49de30272939c21c;
+ 19a55efbd17a2244fe3c555e336fc60c40e085e44dde6f28ea6e3194127b46e45cb6245c82a396f1f29f784edcb0055d3f04e30eb0
+ 074a5996cc3961dfceed8fe3d2863452;
2cde52ebfda19d0ccc520f21
""
""
2cde52ebfda19d0ccc520f21
""
""
- 66ac17c939ebd05ca617e77ba83201e9;
+ 66ac17c947ebd05c2417e70527327f15;
- 8361e8e723233ce477ef9132624bfb9e;
+ a793a26107dd3c18ba0431c52f2708af;
- 29a7e874d6054c42dcc1ada2e6f38cf8;
+ 19d3533dcde0922c2d3ffc53bb921da8;
- d439d2be5e01a0d767739abd80dbc293;
+ d51f111bc7c1b32ab76788e279cd208c;
d1dff7da
c5c9941d26d0c6eb14ad568f86edd1dc
9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137
120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080c
d1dff7da
c5c9941d26d0c6eb14ad568f86edd1dc
9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137
120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080c
- f36d7d44b8637a2a560a8e89a7a5a5c754de68194a47bb2befdf2384e91eb38cc70807a42a687eb3113c9c223e1c8763
- e13b8f67d62247d887180b4cfb90eb6b;
+ 3c011823aab23337e5a5c1d3bc7422b6216ffbea8135a4e2ffb11dfb68c2a14e746ffc5b48f0551c9f22642faf9835d8
+ 35aaf9095f76e809798699ffbe1c0b0a;
c07df059
1d8fa21f2dd88374d8cde8e1
60ad10997a21635c6d62c9269029df3e6057ac
c87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27
c07df059
1d8fa21f2dd88374d8cde8e1
60ad10997a21635c6d62c9269029df3e6057ac
c87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27
- 863f1602c0fb45b1a3264e8140b5addd0a82feb9b5e632fc539b3ed83667eecbf32c65dcacec865ea475c3506d61d00db1ba24288ba1a13ef1
- 58de876618ed18d0aab09ef9acd06bae;
+ 863f1602befb45b121264effcfb5d3210a82feb9cbe632fcd19b3ea6b9679037f32c65dcd2ec865e2675c32ee261aef1b1ba2428f5a1a13e73
+ 80d044d5151c9bd4360850268cf9b6f6;
043eb621
b7f65b000961040ef2f9b2fc5fa450
727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6
b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c
043eb621
b7f65b000961040ef2f9b2fc5fa450
727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6
b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c
- 1e559d1bc26402ae885ebcb0946a573d44df5d59476510247197bc816467f5386887c5543f3a2256e26f44a91b31afcb7bcc85b2dc
- 83783d53918eff6b310540ac8c1c5d85;
+ 8eade4d2955ca654b8aab9e25092f2ec8885f08960d1692a8c09bec546d8fd396dc75e52f6331a96391fa8e4a7d18b25bc86ae6aab
+ cca26d676181ec28242129be174ef96c;
03d4de1600157846b710ee72
""
""
03d4de1600157846b710ee72
""
""
- 4ec5c312526c730e41458aca324ae0a0;
+ 9517fb39f874f5eb9492ab804cac53a0;
dff7dac5
c9941d26d0c6eb14ad568f86edd1dc92
68
""
""
dff7dac5
c9941d26d0c6eb14ad568f86edd1dc92
68
""
""
- d0cc24f9084261cdaf4393e7b250701b;
+ f250f3dd82723801fae0678035528efe;
eeee5332
85a6ed810c9b689daaa9060d2d4b6003
""
06
eeee5332
85a6ed810c9b689daaa9060d2d4b6003
""
06
- 72
- 1e1671f47f5bd8b32ebb09c019105281;
+ 7e
+ 9d05909f6a5484b677be057af1ea2a8a;
2365b0a5
4364c76c160f11896c4794846ecfa14a
""
7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a613651
2365b0a5
4364c76c160f11896c4794846ecfa14a
""
7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a613651
- 11e134a63441fc0951b37098764822d6eaa47187fe96a2f3658563cc612c857f0dd5d4e056c820a3670828dd7f5a9d1c
- 86893621402b0a64fded1b34d47504fb;
+ 90236cc04b3ce7ab2c782d22fb93b02ae0583bb026f837c28a6e4ae22b533878255b39b158962faf8814c99423e5fa64
+ 29a472eb0282c912127b000174003c50;
2061f708
0cc07df0591d8fa21f2dd88374d8cde8
e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da14
35dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450
2061f708
0cc07df0591d8fa21f2dd88374d8cde8
e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da14
35dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450
- 1599b31480519c999bbc9fd4fb1a24676071040c16ff4a6834cdaf46c51ccbb9522cfde0e2df2867871cabd4aa73c33a
- e8e411a4ac803610a4f2a8e1b6aabba9;
+ f16cf340bff7a524dd6b369039ef6eb7f1e0bae5814c79864964a2cb624b56041fe2c7f997b5d3760324b40197e72a0d
+ fab36fdf2f2c4ded8846e9d22e6ac9a8;
727a9b54
2cde52ebfda19d0ccc520f215eb57bb3
""
a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758
727a9b54
2cde52ebfda19d0ccc520f215eb57bb3
""
a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758
- 384781d5a43f9e0d692787efd9cbbff3f8cc6e154544695653e495e63b3da9730b781b214f5c8f6d940542c76c24f0acacfcf099c0
- 5fa2cade7fa22e8df91b9f91593f9d3a;
+ 2469ec52037cd3e95b25de4c6ef7be38887e49d789f649a91cb0301fc2a94d80377a623f24afb58e9428b5c089cb6eecd6a7408678
+ 357e06fe7770804cccb09d3f80cad777;
fe2b69ac
26afa3349829b94586306fed54154f8f
28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d
57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689a
fe2b69ac
26afa3349829b94586306fed54154f8f
28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d
57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689a
- 4c8c3874f73c8504b64bbe612589c103a462720d244c3092221b6c7b31a162aebefaea934d2ac8eb9e03f8f480aa1407d58a8a8e0f
- 03fa1ede942984e0ae4f30946f7e0201;
+ d0a3845096db507a5f0fd48124160df0b71c43dcbcdb4383629901895b30f400b59087532c0357816645f6d972c8ec143524b1b628
+ 6ef130cca6a884d3a8a04d06ae1ad5fc;
ef66f5306ceb0c6b08ac8b0a
22260c571b4a42bb8fdb233bfa6a5cfb
""
ef66f5306ceb0c6b08ac8b0a
22260c571b4a42bb8fdb233bfa6a5cfb
""
square-pmac1 {
f260d7bc
""
square-pmac1 {
f260d7bc
""
- aec43cacfa9e76ed9f6c0176974d1111;
+ aec43cac849e76ed1d6c0108184d6fed;
- 38e2ce3d69f8fb21ed28599d77607fe8;
+ 38e2ce3d17f8fb216f2859e3f8600114;
48b75511
95e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003
48b75511
95e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003
- 7c8785ab3dcb7d71ba3d6fcf7ba32376;
+ 65c61b1f4a19d8c1a15e7f7f77fed761;
062365b0
a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd
062365b0
a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd
- b21eb39143554c29a104eb7ca8d10ca8;
+ 0df810432393db82d08f39204917e303;
739a3d1f337f29549e6b0d27
""
8a5016e4834fa9fe8ef64746a89189ce;
739a3d1f337f29549e6b0d27
""
8a5016e4834fa9fe8ef64746a89189ce;
- b1669cbf9b59f73b4288eb0761332190;
+ 43ecf932f2a50f9a85f7dedbee4a09f2;
7dd1dff7
dac5c9941d26d0c6eb14ad568f86
ed
""
""
7dd1dff7
dac5c9941d26d0c6eb14ad568f86
ed
""
""
- 780716f09513ecb8dd6f322f3901fd27;
+ 4e23472f7776db3c194a95e9523bfb69;
d1dc9268
eeee533285a6ed810c9b689daaa9
""
06
d1dc9268
eeee533285a6ed810c9b689daaa9
""
06
- b8
- 1fcf843450fa4d3da50d8de6525119eb;
+ 06
+ 80f022fdba9a783af386696a7468a7d0;
0d2d4b60
03062365b0a54364c76c16
""
0f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d
0d2d4b60
03062365b0a54364c76c16
""
0f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d
- 33f91dd536f3667b220ac4fa9ef6bec830fc052968f5c3c78141ad56254dbe7fff02e85ea5a278bce0c9a5037caa31f0
- 11621f557ad6c52a82e8d9495bb284e2;
+ ec00fcf09bc64fb96c5630b05426c0f3e11c4e5e278f64dd5391ee47cb3765af3407824e449c2f3ad2e53b1d7a754391
+ 838c24cc6117a97999b82d8a6f49927f;
27a4ba23
4085406a6136512061f7080cc0
7df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3
b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7
27a4ba23
4085406a6136512061f7080cc0
7df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3
b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7
- 1859d78e9ad0fbc8bf76a97f08e6de088994238974dce458f7dc145948b8ba9f8b8f52c82a1ff60046350eeec8936379
- 350f84d218392b1282daa7db5ebc4e5e;
+ 688100f96e36393c78db3753d70228a939eb45ddb3692356fad4b74ade71fea04546dccc6896115975a92e7d715e329b
+ a00f680ac9305870d77686138a56be0d;
f65b0009
61040ef2f9b2fc5fa450727a9b54
""
2cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aa
f65b0009
61040ef2f9b2fc5fa450727a9b54
""
2cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aa
- 664cabfb69a25342a0bcc17049c316c78c412df3efbf75cc192b936dccf87b3c094d51468c20911a477cd6a214c403ff99abec313a
- 09b989eae5e6973b675f06ab4b9ad1e7;
+ 47cba1883ecfcb1c960a4af93ca6a30d74cd55635368c2523b675910d02e63ec2f6255396d7a9325d8bce6913293860c952f3755c3
+ 1c31d84f0f6360eb2dd47910f1375c61;
d2605fae
e2b03fb648e27fff63102758fe2b
69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d8
91f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9
d2605fae
e2b03fb648e27fff63102758fe2b
69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d8
91f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9
- 9f53984003391daa1fe81c1e9385d1d902f330b930b225a8164f06adeaff820d08dfceeba9ae1a9639d556bba8ad6563186d022240
- 64d960c38db07c9ede67bd56b122544e;
+ d8a4afa64f98f4dc2a74ac259523c9201f96b07b7521a3c6a25b40b62c52fb1e65a993715cc737afc6e84b8ad7eb31386ee8bc8941
+ 05c0bdead7d29c226d28e8d257555b3e;
156308cdec3f768281e040a9
b9a222bd689aef66f5306ceb0c6b
""
156308cdec3f768281e040a9
b9a222bd689aef66f5306ceb0c6b
""
16 47b0a29f45c1b000f1a0c27eee7f42e7;
12 7a80e7d6e556778f77a327928ff4dc35;
8 886bfcb71cd24995911ed011b231d99e;
16 47b0a29f45c1b000f1a0c27eee7f42e7;
12 7a80e7d6e556778f77a327928ff4dc35;
8 886bfcb71cd24995911ed011b231d99e;
- 4 d0b2597b73f284932af5a5db0fd1fb3d;
+ 4 6554bcd7716933559def79025d3c06ba;
16 5c3d0dfbee0d8977a7cee660;
12 6057212ee2684bb36520d44b;
8 5f0f721b8171461d242bb883;
16 5c3d0dfbee0d8977a7cee660;
12 6057212ee2684bb36520d44b;
8 5f0f721b8171461d242bb883;
- 4 127b569653ace9af8aac7f47;
+ 4 bd7b3db643c64178da4896a5;
16 4184125b37fbd3fc;
12 258e75d36b5359b3;
8 bd8c4a18f64be7cf;
16 4184125b37fbd3fc;
12 258e75d36b5359b3;
8 bd8c4a18f64be7cf;