diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..70eea15 Binary files /dev/null and b/.DS_Store differ diff --git a/T1/.DS_Store b/T1/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/T1/.DS_Store differ diff --git a/T2/tp/exercice-1/Diagramme_blocs.png b/T2/tp/exercice-1/Diagramme_blocs.png new file mode 100644 index 0000000..e9d1835 Binary files /dev/null and b/T2/tp/exercice-1/Diagramme_blocs.png differ diff --git a/T2/tp/exercice-1/diagrams/.DS_Store b/T2/tp/exercice-1/diagrams/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/T2/tp/exercice-1/diagrams/.DS_Store differ diff --git a/T2/tp/exercice-1/diagrams/conception-Exercice Principal.drawio.svg b/T2/tp/exercice-1/diagrams/conception-Exercice Principal.drawio.svg new file mode 100644 index 0000000..f2fde30 --- /dev/null +++ b/T2/tp/exercice-1/diagrams/conception-Exercice Principal.drawio.svg @@ -0,0 +1,4 @@ + + + +

MessageAdder


- consumer: pthread_t

- currentSum: MSG_BLOCK
- consumedCount: Integer

- semaphore : pthread_sem_t


- sum()

+ messageAdderInit()

+ messageAdderJoin()

MessageAdder...

MultitaskingAccumulator


+ main()

MultitaskingAccumulator...
1
1
1
1

AcquisitionManager


- producers[4]: pthread_t

- m1: pthread_mutex_t

- producedCount: Integer

- sem[4]: pthread_sem_t

- buffer[13]: MSG_BLOCK

- tabIndiceOcc[13]: int

- tabIndiceLibre[13]: int


- produce()

- buffer_write(value)

- buffer_read() : MSG_BLOCK

 + acquisitionManagerInit()

+ acquisitionManagerJoin()
+ verifyChecksum()

AcquisitionManager...
1
1

DisplayManager


display: pthread_t


- display()

+ displayManagerInit()

+ displayManagerJoin()

DisplayManager...
«dataType»
MSG_BLOCK
«dataType»...
MultitaskingAccumulator
MultitaskingAccumulator
Display
Display
SensorManager
SensorManager
Text
Text

«interface»
ISensor




+ getInput(int i): MSG_BLOCK

«interface»...
ISensor
ISensor

«interface»
IDisplay




+ messageDisplay(MSG_BLOCK mBlock)

+ print(Integer producedCount, Integer consumedCount)

«interface»...
«dataType»
MSG_BLOCK
«dataType»...
IDisplay
IDisplay
MultitaskingAccumulator
MultitaskingAccumulator
MessageAdder
MessageAdder
DisplayManager
DisplayManager
AcquisitionManager
AcquisitionManager
IAcquisitionManager
IAcquisitio...
«interface»IAcquisitionManager+ getProducedCount(): Integer+ getMessage(): MSG_BLOCK«interface»IMessageAdder+ getCurrentSum(): MSG_BLOCK+ getConsumedCount(): Integer
IAcquisitionManager
IAcquisitionManager
IMessageAdder
IMessageAdd...
«dataType»
MSG_BLOCK
«dataType»...
ISensor
ISensor
IDisplay
IDisplay
«interface»IAcquisitionManager+ getProducedCount(): Integer+ getMessage():MSG_BLOCK«interface»IMessageAdder+ getCurrentSum(): MSG_BLOCK+ getConsumedCount(): Integer
Implement
Implement
Implement
Implement
Use
Use
Use
Use
Use
Use

«interface»
ISensor




+ getInput(int i): MSG_BLOCK

«interface»...

«interface»
IDisplay




+ messageDisplay(MSG_BLOCK mBlock)

+ print(Integer producedCount, Integer consumedCount)

«interface»...
Use
Use
Use
Use

Msg




- messageAdd()

- messageCheck()

Msg...
producer1:pthread_t
producer1:pthread_t
producer2:pthread_t
producer2:pthread_t
consumer:pthread_t
consumer:pthread_t
messageAdd()
messageAdd()
m1: pthread_mutex_t
m1: pthread_mutex_t
pthread_mutex_lock()
pthread_mutex_lock()
return
return
produce()
produce()
Exigence 2 & 3
Exigence 2 & 3
"allocate"
"allocate"
acquisitionManager
acquisitionManager
return
return
pthread_mutex_unlock()
pthread_mutex_unlock()
pthread_mutex_lock()
pthread_mutex_lock()
getMessage()
getMessage()
return
return
return
return
sum()
sum()
sum()
sum()
pthread_mutex_unlock()
pthread_mutex_unlock()
return
return
[Clock Name]
[Clock N...
[Task Name]
[Task Na...
[Task Name]
[Task Na...
[Task Name]
[Task Na...
[Task Name]
[Task Na...
[Task Name]
[Task Na...
[Task Name]
[Task Na...
Exigence 1
Exigence 1
"allocate"
"allocate"
"allocate"
"allocate"
"allocate"
"allocate"
Exigence 5
Exigence 5
"allocate"
"allocate"
"allocate"
"allocate"
Exigence 4
Exigence 4
"allocate"
"allocate"
"allocate"
"allocate"
Text is not SVG - cannot display
\ No newline at end of file diff --git a/T2/tp/exercice-1/diagrams/conception.drawio b/T2/tp/exercice-1/diagrams/conception.drawio old mode 100755 new mode 100644 index 23dbd33..2d6d06d --- a/T2/tp/exercice-1/diagrams/conception.drawio +++ b/T2/tp/exercice-1/diagrams/conception.drawio @@ -1 +1 @@ -7Vxbd5s4EP41Pqd9MAdx5zFOmqaX3dNtttvtUw4xiqHFiAoR2/vrVzLCBqHYmAK2k/ohQYOQ0MynTzMj2SP9cr58i70k+AP5MBppqr8c6VcjjX4Ml/5jkhWXqDqXzHDo5zKwFdyG/0EuVLk0C32YVioShCISJlXhFMUxnJKKzMMYLarVHlBU7TXxZrAmuJ16UV36NfRJkEsdzd7Kb2A4C4qegcXHN/eKynwkaeD5aFES6W9G+iVGiORX8+UljJj2Cr0Y2T/X7+/M4MEJPnjv9KkKLr1x3tj1IY9shoBhTFo3PX335e8bdfV2cjH5+eVn8PX28es3/oj66EUZ19dIsyLayeSeXszYBQkw9Pw7MNIvRmzc+W3az6ZGwqsQrieyKpRPVZawy2wefQwfYBTGkNWHOJxDAjG9E3Hxp61ssghCAm8Tb8oeXVBcUllA5hEt0beYUKQQjz6CN+Uo8pI0vF/3qlIJhtMMp+Ej/AzTHJBMijLCerrcAE1dj6ORarkJHiEmcFkCFlf1W4joy+MVrcLvjk0NKAX4+NwZA1BgabGFIjC4LCjB0Cgqehz+s00PWxPTC27lAywOJBYXrFbSdYLCmKxfwZyMzCvBeAiTAM1Q7EVl89VVuhN6jVVqmRVt6oZElxJV6h1o0n5Ib/yPs8SOnQUm8/fR1TV4PpoEejNNOn1pUnsumtSOjUn9uWjSUJtpsguelM/u5wNKdzhQSgcg06TgZMyz9dj2eRh5td9exsbLoKSs2I28DNuoW9wEfZn8ZHhIO1SljladPODIjC7z0M9Tk/ZwjC4dgPEkDaWJF1dUav3MWFQ3eaAkMM4nN6MmoCVLxlBMZ+qaP8ZpTiDsbozw3Is29++96Y8ZRlnsjyl3IJxXwrP7V5rhrHmODkNdB9jFtam+3vZdcF+NKytkeBeh6Y9Xr2WkWZLlAyzET8OHGTeksfNFFM5iKrtHhKA5vQFj/4IF40zGelyLqFH+5QS3LnxrxXbEwzO4C3icS6BfCfTrsMMw8gil41IlOYr4o5/YXClxqWFYNGJTtx+jyqsuUJXSXVWr9pCiDE8hb1SA6uYt26PXrKEXQ5Lh+FfNiRJIb018Lw2gz5+jt3kixznYnEc3k2O7SpHDKZrNMVazTb1xwKZmpTUx6OnZzNYuX0nCUJQCyNjL7cv4ZUqNRFl9L0mJLJNg5Ge0kpRHBISxPqvOEn+BK5zTeI9ZlSLA2kxKScTlDOnc2g2cW+pHNlLsC3ZkbdGwci/WlJi2Py/WORXfyz5Un3ZVm1Yz1wuofWnSfS6aNGSoHJJvgCwg2LVCnIIPW3VZs3iX09qNd3puTovZzM2QeSz2nqaecH668lhAPQ8+lGcKlyFhEciYOuaaywXrKERxLZuXr5ZFjMIKq1KhRB8tFrfcQqO9kfsQ2BIQoINGCJCAyVQVU2zMPGLUI83CnnPQPqV/CTxKwH5ilGhZoivvWC050DCtPU31zYGyfOe5LMrfqVZe1GJcR57VdvWtI09sqm/k1bOaZbvenWaSaG/Ozz0WFBx7Z5Kv8UpqmIJbZouxVXcr5+R75K4+XEd//mXefLqNfPPbu1WTkz0pnHtJgDDcv/FGq9Yw9IKzFVqjZIVsy82wOwgMpe6mbHuj7xB7J/LabhQ5Zl2VQ+641TPtZ6pIHTiNNFkMsHNNypLZ56nJhnuXXWBSOoBz9C/pmnHHHId+fcsiBwAUulaXMwCaaxycAdjsabKMglXe12QCVS8k2xbXpVW51F1WYVdOuv+sgr5nN9Rosxta68cCilFuxhUWVlUHCii9RrPMRldO1NNHBk572iUoJS8qpKvnwBq62xJA7mmoZ8j93uffmnQnAdniznzT2Ey0cK2hniOzQ7f4T4VUFl7YM6lUll/DKa+/qmLbVpvlt/APaAOaVd0icPUBtwh2fRljgLmkK6YmwL7tlhNdst3yRzgxYxuu4jjHWrHrxzFOkz7LGbBdJ/kHgIaQy7A1oyWv1hoalldlpzXOgVd9mBKMVsOESari2EaFBoHu9kyDw2dxLTHL1pjbxIYaniRsgWHprJedJus7Y9JNTtTSnjDBsb7AU6eDIxxLKKckgKKC9hkJoGyyD/m8Ne1hsxG7ks5793OGylrUmIAGEL9wHFinvo7tlHwdS2xdPHvY3Ron/1ZafVvnHFF9auuHKfiwFvVh3ZagqRFhQz+7M4gc43vJHe2rWba4/pq9Jd5pcfvbDbnytz+Bob/5Hw==7V1Zc5vIFv41rsp9EEUvbI+Wkkkyk0wySSazvExhCdvEklAkFNv59bdBIOjuA7QQmy3ZVYnVQg06W5/l69MXZLJ4eL12V7fvg5k3v8D67OGCvLzAGBPLYv9FI4+7EWQguhu5WfuzZCwb+Oz/9JJBPRnd+jNvw10YBsE89Ff84DRYLr1pyI2563Vwz192Hcz5u67cG08a+Dx15/LoX/4svN2N2oaejb/x/Jvb9M5IT95ZuOnFycDm1p0F97kh8uqCTNZBEO7+WjxMvHlEvZQuu8/9UvDu/sHW3jJU+cDy5def5h+Xd/rkneV98L9M/vt2OSK7WX64823yhZOHDR9TCngzRpDkZbAOb4ObYOnOX2Wj43WwXc686DY6e5Vd8y4IVmwQscFvXhg+Jtx1t2HAhm7DxTx5V/4qybfbBNv1NHmO61fvRmT0gJzLL78G1o+HH+abTyOcSFPorm+8sOSLJhNGXyZ3h4RSr71g4YXrR3bB2pu7of+D576bCNHN/rrko5frtfuYu2AV+Mtwk5v5YzTALkgUgj1vIg2JPmCd8Eyr/AC18x9gf+yeIX2V+zLZUCwJsFSUUpUTC3PO6DteccJhft9G4jteMPL7ywtyyd7VVw/s35ir+m58FEZyEL1Hc++F3kM4cuf+TfK5KWO+t87mZH/dJP/Hd75KB957mw1Tu8vZLL58vrvolyvxA2xsJY7drqPnT61MeitUfNda33fuXYe5LyzOPdrZq812wb5AfNkqvF177uy/sOzZW3uU7TpSvM/bxe7C959f/zd+92Hy257ya/DOK3c285c3RbfOjZcQYDZhxiN5wrdMAG44ng6Xf+zZX/yva26lc29W7jIbiz+f04m3Sz/kno2/PONptbq08yXEB/6V2bzsgaueTFiefnjr0Gfr9eXOkryMbc04sSsvd88yDthV1/N49b32I1s4vg6YxO/kCOHk9S/uwp9HdvaNN//hRbPyy9R+BdfL1qzogbyH0kUmNe6U2pqFOPuOKNaM3ch95m8gJ7vwNu9uUKN4hcqtETWWAGvQS8CWeYChu7lj9udyOt0utmzVDp7mapDog5vXgWcr8aaZCXJevk0dEm69JeEmhiTcSCKzt5xdRgFE5PauvCVPGPZmnpYb5n+G6dUz310Ey9mX20gmdm+l19J04JeYJ7upKv1rgbUi/6+CMAwWEUfZpJNgzvQg+gJEj3/ih2VE+zvhYvzin+iFho309cuH/LsvH9NXD374d/qY7O/dx4zkVfah6MVjlZRU+/KW7MuDFxpU0ZlPpY43sUnMc5inL3vmpmy8sS5I7O47J58sc/OpXT3Zji7SZE05/cQ5LaUAZdvqXbjxIISbOpI82rVlm0hzUaIk2geH19Tmo2WkG1V6J4TXiPtAO+G1Mejw+nL6fetv/NAPlu/dpXvzhIPs1TqYbafeenNhjOmF8XIAwfYC8Q+x2DJG9fMoCXUOjMBbC6i9BeMSlrjExvshz9X2+pqRwhgjsn8oKTXyFMS/ME/hLqLAYXm1We3DEFdSfj6bIAfn7YVE8rMUJwrGuzDEv36c3HrTu5LszDMKpoD0wSgtTOSCK5wsgnxwJS7njQVXpry6nYIfmfMd/8m5lbAfWRSRVQVkHfifpnGY/6lr1EAm73U5emteKEJCxusYN3T/oBV+aDZZemFwfb3xWgnDTDk3MSDn8KW/Wc3dx6fsGM52X+EAX3AQjx0t6Mmj91F4GGe3Bx2DPp/kXD/ITBpBQPWg2+yqacoWbIIvLsczN3S/PK686NW4pBKVpfkBd/uqkJOt5q0tIbHgyH4WQgCZjQaovHq3/cN6+KbT+9+8268/8avQ/3VkFy4T9aokxcRsgn4ImzwBRxgQ1H3KM09BcY1ujIJyvlOiApOjVfTnNFisgmX8/XdQlhQLZKcDexAQBSlWykJlMsqFEwwQDDfkfaUuY8Ixi5+gEQ8IJEuqRoBo7yrZwKIiOjSx3ZYWj8R7ySkAXxpvVwccW0EF9nFZJyqAEEDqTnVgz+yzEvB0wYVKMPN/HKEDvCrtxj57y02wlp16CDjChuMH6GjdMPDwlEYBNNmy0uBDCXkiSgMVVgTOHA1WzaWuloy1u5Ek5aScoyllaz5HA1+YeNgNo1llRiIs+L1MIdXKgI2xFEqHtMjSW3d+PfHX07nM2Cxpl+Xp1NJ2WULTjHOU6+BujyZXxj+XuZBDkhhDlBirY4kBwk9RYtg0/moTsfj+1g+9zys3pvL92l3xklEY1kPxP5QeThMJSYYt5T50qZBhvo5/ojTKrurNBo1xXIkau5vVbq/Dtf8Qyf147W38n+5V/PWaCnkR0S2Rk8DSC6UWWlt5oaC3a/u+T/hfNAyKKvWPKzU8Xbvb13C9bw3HUIB4Yho+89fsAj9YxmK6jtSxGa3XsSlyt2etxwpB6pN3AVqDWh7lNnRoVMTkiKpRgeZCVXMdjDdr3ITJbu0XFr5Lch3F9LygSuZGLGAs/Nlsty1PMBmylYmmY5qQlLYai9mJEP+NsC1ZEFoSfjZvQSCXsLeaalwL8aM3r6NFSbUY8naXpXmSNVfV2tygHjm6llmJt8vVNnyxMzH+/0q2yA2z6NiMRjtiKKBDm5Qgr4A0sEMJVmp5h9JeRQ63os2QiYhkMmUyWQCVSGuWr7hM+IQsn1y3OZu+rnZoJrR/kTN5+mI8D6Z3yoiLtp90tWYy9WKPXRaAzZhpTgZs5vcdDw4j2ogZQql3WWatCYZQoa1ZawIEcU8dFCIXp8BlsVNYCJFLIJn57GlZ1A0xpdD3sgjsdWsLPQMbj0boSi3K09VyALpChT7aBPgLpGw6cX/F0T1vz8VRnjNQGq0RWE1BQ5b62JqG+Ep0fh3c92aqss5N7I2AeYD71g56sJ05Ee2AQB1Ngs6q0DU96IdBePcF1A8IO9yefigAOFrWD3IoFU9EP4q3pRyHRyvebgyGlbWxZ42tKUNTGQW4Q8sqYxxKxBNRGaiFksCZHtBopYpQWTlMmV1ZOqTJjG2XDlksqWFqODoyiUMoFXIfGKvtF2yM6R1DVAaCVztSqNDQhMq2NdvIiRXmhUrvWKgUtqo8d8BLayu62GF1nwPtC+9iKKRQnt66oariRjudeiUVp5hqDrJ1gi3btJmyC+tGxypuQNmZE1NxNUxbQ2pPTSE51LvaK+SGOvMc1MBqx0FgjzQopCM7gRxeTsTUuSoujYpbiMWJegelIb1jpGUpvvrIxnwdhTlIxx3Joc6Lj2pgc2gPPXGjdtpSsKmOeOVUPC9/HS1/xKACm4FEVqd7O3SFbZWDXv+6NlEdLYAE1zM88kSSZREmaqgLKC24T8sWDABeQLltQaJrYTCasgFYsAFEtgGdwjIQ1PqhADTIjC2K1EqFyJt7fzF3Y18jXgKSd5Tg9Du8xvTWn8/euY/BNqLBJnSnd+mr8W2w9n+yad090CjXlY7q3BWfo08mBiG2/97HlK9IGHrvPnAXvnM3YTIwDeZzd7Xxr/ZfYweXGyfN6uKLKuBODcmQ2D/XBJYRCBfcWj0EgT0tEiz3xzwy8MX/xKanqUztr0+QDS8A2Pf+2kg+de7D8J+w4vOeReIQ552KZKiiTeFOSjfMJfKXN+/ia+ISTjLyKVfVyQEVb/3ZLG6+uA5CNyzcKjJmX28SxXfMj8GTqCNq9jp2bVZsJZ4ES/ZdXD+WL4/J6r23CdUlDx3QCCRtIq0oaq1hnRDUCaLKXPFgmeEYKmI/b0Mldfo2LEl8wP5Tlt2a+EBoh8TyTPaHMpUan/3leVRzmWE7GyRlg6SOBEl778nb3ECJatEgyWCAoTuhe5MttOyvBOm16IUCO4tKzXaf9KNEBDn2jK1Gadw+XKh/S/g5AjTf7hb9byiAgQadQ2lrw3uaz21/IztNj2BJQflUbESmvpFdFLCRaailTBqrSspolr73WBpiI1GT9mzwTMDeDVzpuuky0VWGcmQLHWnMuhpniZ0jVBWuuyIdcHhQ3xu8LIo0QnboOxNjR9h9CCmojbX4St1Gjmnh1NfuxkGBMHrnLGMrwXsNAy92HIScKqjfJxLPy2tQYCD8XQMpRTikP0frNaJ1qt5MuyR9CMmVuJg0J1YQ0O+cPuzdAgnOBAKqYuB+BaeBROH135/mk/n25suHL+Op8dl+1NH7ERTUtZEmPJuYUhOzV9ejEoKQ5LRoYhRAFbnQ4irq68FIMnM3t3G0gkpCjBhCw4UoYa1Drbo9ZTj1n6uRXcqbDaC9X8eGNCJYgtZuh4f1ipmayyG8u/p+F+L5z5e/0vVDOKdvbj44I7kc+3axmnsLb9lDu7u5e+XNx2xtuokjcgi5pWwOiuoDcY+ZpTdNzdVFovPFK46u6brN71JDjYiRrjlCiwhsaukBfR30YwdPum3L/IBmBJfbkb3NinlA84YrGrFRle2KXn301j4jVSSex57SBxinMpegF9OECdEspGc/IpJQq3tEHxKRW91aKjmP90wsVaqFR1sqXaOWxee3cTNCRZFmO93ZJXk3+58br8w0JaeUCuaHM1SVtkjRFKELzn3CVf5TlltWPkug9ORJBc/IVjQ/e7Gx7bJz6Y62SELIRmsngJ2KiRqCqIpFb5IkI4qeS7x+VAZpbem00gJNkoPTDjSpYlVvdgFuSgcMaiNweWtFJQTUNhKB+8oqYVZM1JBKiKqX3qdCxB94Uu71Q3jINjVARov0rwH5vf+6nV9QUBRrdOvVKh8p3YoiWHaZt7pvRXiwXkTTOvsfm9dsgjXqmPt7Co/dmMrwi4jexT4HABLwBDsKn3upn3up99Odl7JIB/N+wAj0BMBu6mmhvIVMcXFL1Cek1+dO4edO4e12Cn/e1kksFhCgozAB9wW3dnjL3hPs1sGu2M1bt9h1vBddHZoaqoWrLKvH5/RQm4FpuT9O6mP3Sh1y09AIzm6abpRo2iMXuydQYyiJGlOuw7WiRVma85+83lRGqVyM2poSqVd/DdX8zpMKWpGAKBe34TZXYVm+/PrT/OPyTp+8s7wP/pfJf98ugVpwjz6mtNtkc3P2G7t95HwL7FHmSV7OZi/yR7MUnEPfkeNY+qiTW296V/mww3UaG0fP4aivXv5HwDUADuXed+ThvA0cRfP9+29O8O/mo29P7j5MkbX99MdrwAglYcCaEeRyFd6uPXf2n1zyTbsobxfzd/61N/dj2NsqlyadJ8O51GlVr6JpBJdkH1nvX+chjztU5HS73rDF5JOXqG28hWQbRnea7Oq3DfLPsOT8hGNE6IjsB8sshM5zJE0gskEWKjTZzdFYrq/nmZZtxsmzTSZlqSwp01foOmgBnnZL3TLA58eFuoDPujCi4nYgBUWAbFl7iiDDO5OsxfrMPiQWBR1oK4nRKb/S+nL/luvgcy6EfTmWqWS5mkgLwZSEDqR4kpRENlUiJTGPJ+Xb2ZiO//zXvdvi62/h5PeV4f0FHbDOO+ICWYeDfVNGtKmyscSvdZhba2QBOX+kHdYdzuu1rON5BT6lbD8WaBe9pNZ+sWUkOVWbn2RODl6105P0ulkFBmO6ioChhfS1Mb8IqLmvYgeExiwX2EGpDUoChkaNuMWURKKcQu0X22p8Az6wDOXjbUpUygOWg5LDLq+SjXpjAORfUEHhUsm2buWSyTFGH5dnlNmLWsClsjAznywu0+fW+xxQEQZqW62dUgB+URnqtvbC7Xp5rEwkpQZx30eSzLJzMsFkAGHngnBQOKdDmQCqcGWy07pMGLooE2LirCCnDxQHhKLZyHKcTsUr9dXkdMRBXuh6ZyubSYdJKmcA3Sy6tNJEJtKrB//GWzKxxZFvw9433UWcMY7/ZSNEoh7fkKbCy2uCkEhsyzxyINRTW9tjYVKqHLqSWanp3N1s/OmFQt0TlVokzs5FLz66IbNNy3gE6/xm2twGkP0CeWxttFSwqk/hqoHnhdIs6djRPbd0u0hJ6xRIEXM7HAOT3b88xnZk2q114IKZggERTWtU7pz5Um7o5atWg43VqwPwIqNSZ0MtsdPNFse2v9eEHbTI1HSh00MjsA2YJnKC11XoRHQSob6o9ANI75LBRPbk6Kwk1MkdSvDS42kJx/YKx6f2FtuT8myh6UjBveL5Kk30BobJKddMO4vdcpvso+a6wib7GKtw8HakzO9yHMrFg45DasaDgkNzhBwcuehE8qPn0sl81o05xBqhGZpRbXcR5DcZmm1ndzH42jSLq3kkh5JLVWPlg+VVwZRG/EqbXGUa/iobHR/dd3OAgpHHBRZkEA93e4VKtzRTUwDZohs1tWkNlqWqzOZ2WZDbHI77XLPUVaJbhauXrlGH8rCtFChyrDPNV81G4nam9hxpCqSWVJLbHZiYbCXjdyDYplVzHasV/au2lNkLiY6FM3P37Dw6oBeaIY3s9ADuxs2RlD1N7lSyaJZ/ohOIfykHOw0+aiQCFRKq4A6jtvCgRCHQ6MzTAGjb+mH3DhI5IsR06m5ExURtJ8vkGIfruDvc1b3an0yFtIkeTm2t7kgzhYk7XODlXP45vu2w3kl6K4JbYuMw9QDYFgue4lQtFzxTt6ZPoY0klCswMceOHCOxSEM24SW20wo9URVZ3JXIMopYuaDdwqLYIWaU7bpCbFnibFgTs7Jty7FcptjELamrV9xCPqu7lOKm9ZGdwtQ6qNEbnz/f//zx7f61QWbhN+dBv/v8Adhi1Cc5LKs7yEIwXl563x3/8euHN7/9fPnh3/nlPbTjSi39UhNaVt92dIXaEU+jHNl1T9UeIUcMlhXP1a6h/CB3e1zDMlAYFkBhNqUDdJI6Ey9JJnRLSSbA9uGaIU5mQHjq5tea2V+Lye+v7n7ebL5+++a73799fb8YUYVwPQq3Vuqm9HCAATLS0DYtlwLF5/01XIGvicP/QMIcBmZKTm0oXXpK6Z9XCvBCUqODQoswIdPRhHylYWm2YSGKk38FD0zVAouiUDFtc9YYpLpsjVuVgsEyFxHeSOmkGe5Wzdsyew87z+P5shezICdTMcNSW4MquVsxbcvMVdjN8gyZ61CNEmSnv5ivEVoWxxCxCqDK6PKbEFvLW2yjW5OtgnR4fmwnjqmZiJjpr9EG28tv0i/bFcp1z5Dt2DEiohuOnvy2ou4Vd+mX8Sr1xufHeMRYkmOIbrei8BV36ZfxCm1rOo3Q0NAjNFPLiwQlNevSopdXMW3LUgA1WhalYD73V5uI+xWg/Pw5jBcRsD36OVxSDtgAbmu55ZSk9V5uC5eW0z/2i2WBYddwIbJZIivH5URk2FerKpfPAJYx/6xxXWqcSpuA4aocYjpn51Qu3RI2WJ3rOJ6pXOYcRd1MxWQgyol0XbNw9mvyTZqfp6aqBEWD1VRsO7weDn117DgSqXZIqaqq1jgAs82gVkcaNXK/fPnteaqqSjQzWFUljq7l8oFo6JqqEjR0qqmmqqYOK8YkOtZybLdPYE0FuqpcGONJjJXB+u/uwovwyqI0ydCkTbgO7rxUSxMRyytuMqSOoYaMAo+jb17/OTHT8qFsCrHuRcGBHoyMSV/czSnyKC21YjhbN1QWAnHPqbMQ64b2hDgIuDSnzkED8YuXDCUdFAc79pMG4tUA+AgWiubZ1pAnUzFt2+AX0JM5bf3ENqdbZNDqeWDDteernsTkYwKhtXdd9ayYtm31xGf1FNWTmHzvaSDRMCgFPV18Ic2dHchnBSglXBwiQOnrKmvFtG0rK1ATO3VlpcSC0J9D1VWFOttBbV6FJGzS9KnNyqZuRV1E9iUuwqfNqa3hPDtSbzPHD8vQ8ml3wwT4wXusaYTQPDs6xvNVZl6Vd2QPwcY+y70YQD+KJ6ahhGkozufLeTf2iWno0Ioo0E71p7CVCrGY0zBzxTMeXfs8dVmhVj5sXY7OKDJJhiQSvNEnpcoU8F5FbhRsAj2MmgdvDUU21WheOXgy27zPLx+ihg2uPrmvUPbiYgJd8xoV+l/inwOEnhawqdQSDoukQJLkoEVo3xjoou1j1htiVuUymEpZ5TKYXjiQZXBEHc0iNNtr4Ig5eCg1e3CDBxNrJO85C3tZsMVnmPRuk35A65d68ozO8tx3hKZhJ7/A83ImgliE6ZU36NiazaGZ+TiwwoFoW5gPgy6DB8IUSVmdg2IKzkjLxF75EJiOApWBSfSIaJaVw1BbiM8wNVSGwZaW7++lE6HYQ2iNoumhvWyRQTQTwCsmD+EIqwQV9Oe4ttu/vg7JX3/Ov01m9t3ff5tvfm7+soBWFLmDqtLWOkcdSVVxdENVJ1r5hOguj6QCaXbYatrTiVQ1DqQq7aAPtFkqE6jqA6r6NTpscdQ1S+jxh83aDb6QHR/EYKBodyvCvF6PTKe1dl8gE6DI+0keSFWzo36x2hZbmqd4HhX4PRvwj87miRZIS1fmCTFfwLJyh5XzAmWTupbKMalk97o2T1AV7uTNU/l5H8/HPB22nw00T4eZGusgW1PH9PVhnwrEpSP75FDBK7dFb/uQY40EcWzx/E6Q5lAF+OTNkfX8zBF8zpLE/FwAbEjM7jwAdsRO0Z3GvyDJ5JzBwRa8fQfzMKtfz4KXCdTgA2Bk4SYDYF1cEVp0KkG6Q1mZU7Lixap6AlZcpXnM2SQNPOh1CG4n5rXE42i6tk1QSubkbRM9EdskZztyHiaVmN19iYXogqb172IehgLtyZ7jvuw50NdjkC4mIagdg450nS/fdm7RwaaFJ2/SnRMx6ehJhMCDN0/95jARQYIRsSnVchg+pyYonsXWpiOYJ3GlbNs8naPhQrU9BfvkyOaoq9ORDzUhJcc+ypyqy5WUC5YiWPFgYJcAK97fqCZ4i71cB5FqZpcz3//2fTDzoiv+Dw== \ No newline at end of file +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 \ No newline at end of file