├── .gitattributes ├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── custom.md │ └── feature_request.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CPU Scheduling Algorithms.sln ├── CPU Scheduling Algorithms ├── App.config ├── CPU Scheduling Algorithms.csproj ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── QueueExtension.cs ├── Resources │ ├── 22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png │ ├── 99f76b3de162688defe73255366828e2.jpg │ └── commuist.ico └── TextBoxStreamWriter.cs ├── LICENSE ├── Pics ├── FCFS.jpg ├── Priority_nonPr.jpg ├── Priority_pr.jpg ├── RR.jpg ├── SJF_nonPr.jpg └── SJF_pr.jpg └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | ok. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | [Contributing] 4 | 5 | If you want to contribute to this project, please contact with me by email or facebook <3 6 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31605.320 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPU Scheduling Algorithms", "CPU Scheduling Algorithms\CPU Scheduling Algorithms.csproj", "{1F088284-C921-4395-BE46-EE2EFFA6CF77}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {1F088284-C921-4395-BE46-EE2EFFA6CF77}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {C4402D13-48F7-4A84-B4CE-0C468F4A69D8} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/CPU Scheduling Algorithms.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1F088284-C921-4395-BE46-EE2EFFA6CF77} 8 | WinExe 9 | CPU_Scheduling_Algorithms 10 | CPU Scheduling Algorithms 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | true 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | true 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | Form 53 | 54 | 55 | Form1.cs 56 | 57 | 58 | 59 | 60 | 61 | 62 | Form1.cs 63 | 64 | 65 | ResXFileCodeGenerator 66 | Resources.Designer.cs 67 | Designer 68 | 69 | 70 | True 71 | Resources.resx 72 | True 73 | 74 | 75 | SettingsSingleFileGenerator 76 | Settings.Designer.cs 77 | 78 | 79 | True 80 | Settings.settings 81 | True 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace CPU_Scheduling_Algorithms 3 | { 4 | partial class MainForm 5 | { 6 | /// 7 | /// Required designer variable. 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// Clean up any resources being used. 13 | /// 14 | /// true if managed resources should be disposed; otherwise, false. 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | this.components = new System.ComponentModel.Container(); 33 | System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); 34 | System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); 35 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); 36 | this.txtConsole = new System.Windows.Forms.TextBox(); 37 | this.CountTime = new System.Windows.Forms.Label(); 38 | this.label2 = new System.Windows.Forms.Label(); 39 | this.label3 = new System.Windows.Forms.Label(); 40 | this.ClearBtn = new System.Windows.Forms.Button(); 41 | this.GanttChartPanel = new System.Windows.Forms.Panel(); 42 | this.deleteBtn = new System.Windows.Forms.Button(); 43 | this.addBtn = new System.Windows.Forms.Button(); 44 | this.dataGridView1 = new System.Windows.Forms.DataGridView(); 45 | this.stt = new System.Windows.Forms.DataGridViewTextBoxColumn(); 46 | this.CotThoiGianDen = new System.Windows.Forms.DataGridViewTextBoxColumn(); 47 | this.CotThoiGianXuLy = new System.Windows.Forms.DataGridViewTextBoxColumn(); 48 | this.panel1 = new System.Windows.Forms.Panel(); 49 | this.PreemptiveBtn = new System.Windows.Forms.RadioButton(); 50 | this.NonPreemptiveBtn = new System.Windows.Forms.RadioButton(); 51 | this.label4 = new System.Windows.Forms.Label(); 52 | this.RunBtn = new System.Windows.Forms.Button(); 53 | this.label1 = new System.Windows.Forms.Label(); 54 | this.menuStrip1 = new System.Windows.Forms.MenuStrip(); 55 | this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); 56 | this.FCFS_menu = new System.Windows.Forms.ToolStripMenuItem(); 57 | this.SJF_menu = new System.Windows.Forms.ToolStripMenuItem(); 58 | this.Priority_menu = new System.Windows.Forms.ToolStripMenuItem(); 59 | this.RR_menu = new System.Windows.Forms.ToolStripMenuItem(); 60 | this.chọnThuậtToánTạiĐâyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 61 | this.panel2 = new System.Windows.Forms.Panel(); 62 | this.Algorithm = new System.Windows.Forms.TextBox(); 63 | this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); 64 | this.qInput = new System.Windows.Forms.NumericUpDown(); 65 | this.label5 = new System.Windows.Forms.Label(); 66 | this.RRPanel = new System.Windows.Forms.Panel(); 67 | ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 68 | this.panel1.SuspendLayout(); 69 | this.menuStrip1.SuspendLayout(); 70 | this.panel2.SuspendLayout(); 71 | ((System.ComponentModel.ISupportInitialize)(this.qInput)).BeginInit(); 72 | this.RRPanel.SuspendLayout(); 73 | this.SuspendLayout(); 74 | // 75 | // txtConsole 76 | // 77 | this.txtConsole.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 78 | | System.Windows.Forms.AnchorStyles.Left) 79 | | System.Windows.Forms.AnchorStyles.Right))); 80 | this.txtConsole.BackColor = System.Drawing.SystemColors.ActiveCaptionText; 81 | this.txtConsole.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 82 | this.txtConsole.ForeColor = System.Drawing.Color.Lime; 83 | this.txtConsole.Location = new System.Drawing.Point(42, 446); 84 | this.txtConsole.Margin = new System.Windows.Forms.Padding(4); 85 | this.txtConsole.Multiline = true; 86 | this.txtConsole.Name = "txtConsole"; 87 | this.txtConsole.ReadOnly = true; 88 | this.txtConsole.ScrollBars = System.Windows.Forms.ScrollBars.Both; 89 | this.txtConsole.Size = new System.Drawing.Size(810, 143); 90 | this.txtConsole.TabIndex = 22; 91 | this.txtConsole.WordWrap = false; 92 | // 93 | // CountTime 94 | // 95 | this.CountTime.AutoSize = true; 96 | this.CountTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 97 | this.CountTime.Location = new System.Drawing.Point(97, 394); 98 | this.CountTime.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 99 | this.CountTime.Name = "CountTime"; 100 | this.CountTime.Size = new System.Drawing.Size(16, 18); 101 | this.CountTime.TabIndex = 18; 102 | this.CountTime.Text = "0"; 103 | // 104 | // label2 105 | // 106 | this.label2.AutoSize = true; 107 | this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 108 | this.label2.Location = new System.Drawing.Point(46, 394); 109 | this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 110 | this.label2.Name = "label2"; 111 | this.label2.Size = new System.Drawing.Size(45, 18); 112 | this.label2.TabIndex = 16; 113 | this.label2.Text = "Time:"; 114 | // 115 | // label3 116 | // 117 | this.label3.AutoSize = true; 118 | this.label3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 119 | this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 120 | this.label3.Location = new System.Drawing.Point(42, 282); 121 | this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 122 | this.label3.Name = "label3"; 123 | this.label3.Size = new System.Drawing.Size(97, 20); 124 | this.label3.TabIndex = 27; 125 | this.label3.Text = "Gantt Chart"; 126 | // 127 | // ClearBtn 128 | // 129 | this.ClearBtn.BackColor = System.Drawing.Color.Red; 130 | this.ClearBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 131 | this.ClearBtn.Location = new System.Drawing.Point(196, 231); 132 | this.ClearBtn.Margin = new System.Windows.Forms.Padding(4); 133 | this.ClearBtn.Name = "ClearBtn"; 134 | this.ClearBtn.Size = new System.Drawing.Size(84, 52); 135 | this.ClearBtn.TabIndex = 26; 136 | this.ClearBtn.Text = "Reset"; 137 | this.toolTip1.SetToolTip(this.ClearBtn, "Nút làm lại cuộc đời"); 138 | this.ClearBtn.UseVisualStyleBackColor = false; 139 | this.ClearBtn.Click += new System.EventHandler(this.ClearBtn_Click); 140 | // 141 | // GanttChartPanel 142 | // 143 | this.GanttChartPanel.AutoScroll = true; 144 | this.GanttChartPanel.AutoScrollMargin = new System.Drawing.Size(5000, 0); 145 | this.GanttChartPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 146 | this.GanttChartPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 147 | this.GanttChartPanel.Location = new System.Drawing.Point(42, 305); 148 | this.GanttChartPanel.Margin = new System.Windows.Forms.Padding(4); 149 | this.GanttChartPanel.Name = "GanttChartPanel"; 150 | this.GanttChartPanel.Size = new System.Drawing.Size(810, 84); 151 | this.GanttChartPanel.TabIndex = 25; 152 | // 153 | // deleteBtn 154 | // 155 | this.deleteBtn.Location = new System.Drawing.Point(768, 115); 156 | this.deleteBtn.Margin = new System.Windows.Forms.Padding(4); 157 | this.deleteBtn.Name = "deleteBtn"; 158 | this.deleteBtn.Size = new System.Drawing.Size(84, 42); 159 | this.deleteBtn.TabIndex = 24; 160 | this.deleteBtn.Text = "Remove"; 161 | this.deleteBtn.UseVisualStyleBackColor = true; 162 | this.deleteBtn.Click += new System.EventHandler(this.deleteBtn_Click); 163 | // 164 | // addBtn 165 | // 166 | this.addBtn.Location = new System.Drawing.Point(768, 68); 167 | this.addBtn.Margin = new System.Windows.Forms.Padding(4); 168 | this.addBtn.Name = "addBtn"; 169 | this.addBtn.Size = new System.Drawing.Size(84, 42); 170 | this.addBtn.TabIndex = 23; 171 | this.addBtn.Text = "Add"; 172 | this.addBtn.UseVisualStyleBackColor = true; 173 | this.addBtn.Click += new System.EventHandler(this.addBtn_Click); 174 | // 175 | // dataGridView1 176 | // 177 | dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; 178 | dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; 179 | dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 180 | dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; 181 | dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; 182 | dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; 183 | dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; 184 | this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; 185 | this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 186 | this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 187 | this.stt, 188 | this.CotThoiGianDen, 189 | this.CotThoiGianXuLy}); 190 | dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; 191 | dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; 192 | dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 193 | dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; 194 | dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; 195 | dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; 196 | dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; 197 | this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2; 198 | this.dataGridView1.Location = new System.Drawing.Point(286, 68); 199 | this.dataGridView1.Margin = new System.Windows.Forms.Padding(4); 200 | this.dataGridView1.Name = "dataGridView1"; 201 | this.dataGridView1.RowHeadersWidth = 51; 202 | this.dataGridView1.RowTemplate.Height = 24; 203 | this.dataGridView1.Size = new System.Drawing.Size(474, 216); 204 | this.dataGridView1.TabIndex = 19; 205 | // 206 | // stt 207 | // 208 | this.stt.HeaderText = "Tiến trình"; 209 | this.stt.MinimumWidth = 6; 210 | this.stt.Name = "stt"; 211 | this.stt.ReadOnly = true; 212 | this.stt.Width = 50; 213 | // 214 | // CotThoiGianDen 215 | // 216 | this.CotThoiGianDen.HeaderText = "Thời gian đến"; 217 | this.CotThoiGianDen.MinimumWidth = 6; 218 | this.CotThoiGianDen.Name = "CotThoiGianDen"; 219 | this.CotThoiGianDen.Width = 125; 220 | // 221 | // CotThoiGianXuLy 222 | // 223 | this.CotThoiGianXuLy.HeaderText = "Thời gian xử lý"; 224 | this.CotThoiGianXuLy.MinimumWidth = 6; 225 | this.CotThoiGianXuLy.Name = "CotThoiGianXuLy"; 226 | this.CotThoiGianXuLy.Width = 130; 227 | // 228 | // panel1 229 | // 230 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 231 | this.panel1.Controls.Add(this.PreemptiveBtn); 232 | this.panel1.Controls.Add(this.NonPreemptiveBtn); 233 | this.panel1.Enabled = false; 234 | this.panel1.Location = new System.Drawing.Point(116, 113); 235 | this.panel1.Margin = new System.Windows.Forms.Padding(4); 236 | this.panel1.Name = "panel1"; 237 | this.panel1.Size = new System.Drawing.Size(163, 76); 238 | this.panel1.TabIndex = 21; 239 | // 240 | // PreemptiveBtn 241 | // 242 | this.PreemptiveBtn.AutoSize = true; 243 | this.PreemptiveBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 244 | this.PreemptiveBtn.Location = new System.Drawing.Point(17, 40); 245 | this.PreemptiveBtn.Margin = new System.Windows.Forms.Padding(4); 246 | this.PreemptiveBtn.Name = "PreemptiveBtn"; 247 | this.PreemptiveBtn.Size = new System.Drawing.Size(133, 20); 248 | this.PreemptiveBtn.TabIndex = 3; 249 | this.PreemptiveBtn.Text = "Không độc quyền"; 250 | this.PreemptiveBtn.UseVisualStyleBackColor = true; 251 | // 252 | // NonPreemptiveBtn 253 | // 254 | this.NonPreemptiveBtn.AutoSize = true; 255 | this.NonPreemptiveBtn.Checked = true; 256 | this.NonPreemptiveBtn.Location = new System.Drawing.Point(17, 14); 257 | this.NonPreemptiveBtn.Margin = new System.Windows.Forms.Padding(4); 258 | this.NonPreemptiveBtn.Name = "NonPreemptiveBtn"; 259 | this.NonPreemptiveBtn.Size = new System.Drawing.Size(97, 21); 260 | this.NonPreemptiveBtn.TabIndex = 2; 261 | this.NonPreemptiveBtn.TabStop = true; 262 | this.NonPreemptiveBtn.Text = "Độc quyền"; 263 | this.NonPreemptiveBtn.UseVisualStyleBackColor = true; 264 | // 265 | // label4 266 | // 267 | this.label4.AutoSize = true; 268 | this.label4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 269 | this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 270 | this.label4.Location = new System.Drawing.Point(42, 422); 271 | this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 272 | this.label4.Name = "label4"; 273 | this.label4.Size = new System.Drawing.Size(58, 20); 274 | this.label4.TabIndex = 28; 275 | this.label4.Text = "Result"; 276 | // 277 | // RunBtn 278 | // 279 | this.RunBtn.Location = new System.Drawing.Point(768, 231); 280 | this.RunBtn.Margin = new System.Windows.Forms.Padding(4); 281 | this.RunBtn.Name = "RunBtn"; 282 | this.RunBtn.Size = new System.Drawing.Size(84, 52); 283 | this.RunBtn.TabIndex = 20; 284 | this.RunBtn.Text = "Run"; 285 | this.RunBtn.UseVisualStyleBackColor = true; 286 | this.RunBtn.Click += new System.EventHandler(this.startBtn_Click); 287 | // 288 | // label1 289 | // 290 | this.label1.AutoSize = true; 291 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 292 | this.label1.Location = new System.Drawing.Point(378, 31); 293 | this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 294 | this.label1.Name = "label1"; 295 | this.label1.Size = new System.Drawing.Size(173, 29); 296 | this.label1.TabIndex = 17; 297 | this.label1.Text = "Định Thời CPU"; 298 | // 299 | // menuStrip1 300 | // 301 | this.menuStrip1.BackColor = System.Drawing.Color.LightSkyBlue; 302 | this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); 303 | this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 304 | this.toolStripMenuItem1, 305 | this.chọnThuậtToánTạiĐâyToolStripMenuItem}); 306 | this.menuStrip1.Location = new System.Drawing.Point(0, 0); 307 | this.menuStrip1.Name = "menuStrip1"; 308 | this.menuStrip1.Size = new System.Drawing.Size(903, 31); 309 | this.menuStrip1.TabIndex = 33; 310 | this.menuStrip1.Text = "menuStrip1"; 311 | // 312 | // toolStripMenuItem1 313 | // 314 | this.toolStripMenuItem1.BackColor = System.Drawing.Color.DeepSkyBlue; 315 | this.toolStripMenuItem1.Checked = true; 316 | this.toolStripMenuItem1.CheckState = System.Windows.Forms.CheckState.Checked; 317 | this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 318 | this.FCFS_menu, 319 | this.SJF_menu, 320 | this.Priority_menu, 321 | this.RR_menu}); 322 | this.toolStripMenuItem1.Font = new System.Drawing.Font("Segoe UI", 10F); 323 | this.toolStripMenuItem1.ForeColor = System.Drawing.Color.Black; 324 | this.toolStripMenuItem1.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; 325 | this.toolStripMenuItem1.Name = "toolStripMenuItem1"; 326 | this.toolStripMenuItem1.Size = new System.Drawing.Size(155, 27); 327 | this.toolStripMenuItem1.Text = "Chọn Thuật Toán"; 328 | // 329 | // FCFS_menu 330 | // 331 | this.FCFS_menu.DoubleClickEnabled = true; 332 | this.FCFS_menu.Name = "FCFS_menu"; 333 | this.FCFS_menu.Size = new System.Drawing.Size(193, 28); 334 | this.FCFS_menu.Text = "FCFS"; 335 | this.FCFS_menu.Click += new System.EventHandler(this.FCFS_menu_Click); 336 | // 337 | // SJF_menu 338 | // 339 | this.SJF_menu.Name = "SJF_menu"; 340 | this.SJF_menu.Size = new System.Drawing.Size(193, 28); 341 | this.SJF_menu.Text = "SJF"; 342 | this.SJF_menu.Click += new System.EventHandler(this.SJF_menu_Click); 343 | // 344 | // Priority_menu 345 | // 346 | this.Priority_menu.Name = "Priority_menu"; 347 | this.Priority_menu.Size = new System.Drawing.Size(193, 28); 348 | this.Priority_menu.Text = "Priority"; 349 | this.Priority_menu.Click += new System.EventHandler(this.Priority_menu_Click); 350 | // 351 | // RR_menu 352 | // 353 | this.RR_menu.Name = "RR_menu"; 354 | this.RR_menu.Size = new System.Drawing.Size(193, 28); 355 | this.RR_menu.Text = "Round Robin"; 356 | this.RR_menu.Click += new System.EventHandler(this.RR_menu_Click); 357 | // 358 | // chọnThuậtToánTạiĐâyToolStripMenuItem 359 | // 360 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Enabled = false; 361 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Name = "chọnThuậtToánTạiĐâyToolStripMenuItem"; 362 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.ShowShortcutKeys = false; 363 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Size = new System.Drawing.Size(216, 27); 364 | this.chọnThuậtToánTạiĐâyToolStripMenuItem.Text = "<---- Chọn thuật toán tại đây"; 365 | // 366 | // panel2 367 | // 368 | this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 369 | this.panel2.Controls.Add(this.Algorithm); 370 | this.panel2.Location = new System.Drawing.Point(116, 65); 371 | this.panel2.Margin = new System.Windows.Forms.Padding(4); 372 | this.panel2.Name = "panel2"; 373 | this.panel2.Size = new System.Drawing.Size(163, 42); 374 | this.panel2.TabIndex = 34; 375 | // 376 | // Algorithm 377 | // 378 | this.Algorithm.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 379 | this.Algorithm.ForeColor = System.Drawing.Color.Black; 380 | this.Algorithm.Location = new System.Drawing.Point(14, 8); 381 | this.Algorithm.Margin = new System.Windows.Forms.Padding(4); 382 | this.Algorithm.Name = "Algorithm"; 383 | this.Algorithm.ReadOnly = true; 384 | this.Algorithm.Size = new System.Drawing.Size(134, 24); 385 | this.Algorithm.TabIndex = 0; 386 | this.Algorithm.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 387 | // 388 | // qInput 389 | // 390 | this.qInput.Location = new System.Drawing.Point(80, 2); 391 | this.qInput.Name = "qInput"; 392 | this.qInput.Size = new System.Drawing.Size(83, 23); 393 | this.qInput.TabIndex = 35; 394 | this.qInput.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 395 | // 396 | // label5 397 | // 398 | this.label5.AutoSize = true; 399 | this.label5.Location = new System.Drawing.Point(4, 4); 400 | this.label5.Name = "label5"; 401 | this.label5.Size = new System.Drawing.Size(66, 17); 402 | this.label5.TabIndex = 36; 403 | this.label5.Text = "Quantum"; 404 | // 405 | // RRPanel 406 | // 407 | this.RRPanel.Controls.Add(this.qInput); 408 | this.RRPanel.Controls.Add(this.label5); 409 | this.RRPanel.Location = new System.Drawing.Point(116, 192); 410 | this.RRPanel.Name = "RRPanel"; 411 | this.RRPanel.Size = new System.Drawing.Size(164, 32); 412 | this.RRPanel.TabIndex = 37; 413 | this.RRPanel.Visible = false; 414 | // 415 | // MainForm 416 | // 417 | this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); 418 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 419 | this.ClientSize = new System.Drawing.Size(903, 590); 420 | this.Controls.Add(this.panel2); 421 | this.Controls.Add(this.menuStrip1); 422 | this.Controls.Add(this.txtConsole); 423 | this.Controls.Add(this.CountTime); 424 | this.Controls.Add(this.label2); 425 | this.Controls.Add(this.label3); 426 | this.Controls.Add(this.ClearBtn); 427 | this.Controls.Add(this.GanttChartPanel); 428 | this.Controls.Add(this.deleteBtn); 429 | this.Controls.Add(this.addBtn); 430 | this.Controls.Add(this.dataGridView1); 431 | this.Controls.Add(this.panel1); 432 | this.Controls.Add(this.label4); 433 | this.Controls.Add(this.RunBtn); 434 | this.Controls.Add(this.label1); 435 | this.Controls.Add(this.RRPanel); 436 | this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 437 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 438 | this.MainMenuStrip = this.menuStrip1; 439 | this.Margin = new System.Windows.Forms.Padding(4); 440 | this.Name = "MainForm"; 441 | this.Text = "Nhóm Đảng Viên"; 442 | this.Load += new System.EventHandler(this.MainForm_Load); 443 | ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); 444 | this.panel1.ResumeLayout(false); 445 | this.panel1.PerformLayout(); 446 | this.menuStrip1.ResumeLayout(false); 447 | this.menuStrip1.PerformLayout(); 448 | this.panel2.ResumeLayout(false); 449 | this.panel2.PerformLayout(); 450 | ((System.ComponentModel.ISupportInitialize)(this.qInput)).EndInit(); 451 | this.RRPanel.ResumeLayout(false); 452 | this.RRPanel.PerformLayout(); 453 | this.ResumeLayout(false); 454 | this.PerformLayout(); 455 | 456 | } 457 | 458 | #endregion 459 | 460 | private System.Windows.Forms.TextBox txtConsole; 461 | private System.Windows.Forms.Label CountTime; 462 | private System.Windows.Forms.Label label2; 463 | private System.Windows.Forms.Label label3; 464 | private System.Windows.Forms.Button ClearBtn; 465 | private System.Windows.Forms.Panel GanttChartPanel; 466 | private System.Windows.Forms.Button deleteBtn; 467 | private System.Windows.Forms.Button addBtn; 468 | private System.Windows.Forms.DataGridView dataGridView1; 469 | private System.Windows.Forms.Panel panel1; 470 | private System.Windows.Forms.RadioButton PreemptiveBtn; 471 | private System.Windows.Forms.RadioButton NonPreemptiveBtn; 472 | private System.Windows.Forms.Label label4; 473 | private System.Windows.Forms.Button RunBtn; 474 | private System.Windows.Forms.Label label1; 475 | private System.Windows.Forms.MenuStrip menuStrip1; 476 | private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; 477 | private System.Windows.Forms.ToolStripMenuItem FCFS_menu; 478 | private System.Windows.Forms.ToolStripMenuItem SJF_menu; 479 | private System.Windows.Forms.ToolStripMenuItem Priority_menu; 480 | private System.Windows.Forms.ToolStripMenuItem RR_menu; 481 | private System.Windows.Forms.Panel panel2; 482 | private System.Windows.Forms.TextBox Algorithm; 483 | private System.Windows.Forms.DataGridViewTextBoxColumn stt; 484 | private System.Windows.Forms.DataGridViewTextBoxColumn CotThoiGianDen; 485 | private System.Windows.Forms.DataGridViewTextBoxColumn CotThoiGianXuLy; 486 | private System.Windows.Forms.ToolStripMenuItem chọnThuậtToánTạiĐâyToolStripMenuItem; 487 | private System.Windows.Forms.ToolTip toolTip1; 488 | private System.Windows.Forms.NumericUpDown qInput; 489 | private System.Windows.Forms.Label label5; 490 | private System.Windows.Forms.Panel RRPanel; 491 | } 492 | } 493 | 494 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.IO; 8 | using System.Linq; 9 | using System.Text; 10 | using System.Threading.Tasks; 11 | using System.Windows.Forms; 12 | 13 | namespace CPU_Scheduling_Algorithms 14 | { 15 | public partial class MainForm : System.Windows.Forms.Form 16 | { 17 | public MainForm() 18 | { 19 | InitializeComponent(); 20 | } 21 | private void MainForm_Load(object sender, EventArgs e) 22 | { 23 | TextBoxWriter writer = new TextBoxWriter(txtConsole); 24 | Console.SetOut(writer); 25 | GanttChartPanel.Invalidate(); 26 | GanttChartPanel.Controls.Clear(); 27 | label2.Hide(); 28 | //RRPanel.Visible = false; 29 | CountTime.Hide(); 30 | txtConsole.Clear(); 31 | txtConsole.Refresh(); 32 | } 33 | //============================================================================================================================= 34 | //Struct 35 | public struct RGB 36 | { 37 | public int x, y, z; 38 | } 39 | public struct Process 40 | { 41 | public string id; 42 | public int arrival_time, burst_time, turnaround_time, exit_time, waiting_time, service_time, priority, remaining_time, i; 43 | } 44 | class ProcessInList 45 | { 46 | public Process Value { get; set; } 47 | } 48 | //============================================================================================================================= 49 | //Controller 50 | private void GanttChartPanel_Scroll(object sender, ScrollEventArgs e) 51 | { 52 | GanttChartPanel.Update(); 53 | } 54 | private void FCFS_menu_Click(object sender, EventArgs e) 55 | { 56 | Algorithm.Text = "FCFS"; 57 | if (dataGridView1.Columns["Priority"] != null) 58 | { 59 | dataGridView1.Columns.Remove("Priority"); 60 | } 61 | RRPanel.Visible = false; 62 | panel1.Enabled = false; 63 | MainForm_Load(sender, e); 64 | } 65 | 66 | private void SJF_menu_Click(object sender, EventArgs e) 67 | { 68 | Algorithm.Text = "SJF"; 69 | if (dataGridView1.Columns["Priority"] != null) 70 | { 71 | dataGridView1.Columns.Remove("Priority"); 72 | } 73 | RRPanel.Visible = false; 74 | panel1.Enabled = true; 75 | MainForm_Load(sender, e); 76 | } 77 | 78 | private void Priority_menu_Click(object sender, EventArgs e) 79 | { 80 | Algorithm.Text = "Priority"; 81 | if (dataGridView1.Columns["Priority"] == null) 82 | { 83 | dataGridView1.Columns.Add("Priority", "Độ ưu tiên"); 84 | } 85 | RRPanel.Visible = false; 86 | panel1.Enabled = true; 87 | MainForm_Load(sender, e); 88 | } 89 | 90 | private void RR_menu_Click(object sender, EventArgs e) 91 | { 92 | Algorithm.Text = "Round Robin"; 93 | if (dataGridView1.Columns["Priority"] != null) 94 | { 95 | dataGridView1.Columns.Remove("Priority"); 96 | } 97 | RRPanel.Show(); 98 | panel1.Enabled = false; 99 | MainForm_Load(sender, e); 100 | } 101 | private void startBtn_Click(object sender, EventArgs e) 102 | { 103 | Process[] process = new Process[100]; 104 | int i = 0; 105 | int flag = 0; 106 | 107 | //Refresh 108 | this.Refresh(); 109 | txtConsole.Clear(); 110 | txtConsole.Refresh(); 111 | GanttChartPanel.Controls.Clear(); 112 | 113 | //Check type of Algorithm 114 | if (dataGridView1.RowCount <= 1) 115 | { 116 | //MessageBox.Show("Vui lòng nhập dữ liệu trước khi chạy!!!!"); 117 | MessageBox.Show("Vui lòng nhập dữ liệu trước khi chạy!!!!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification); 118 | return; 119 | } 120 | if (Algorithm.Text == "SJF") 121 | { 122 | if (NonPreemptiveBtn.Checked == true) 123 | { 124 | flag = 0; 125 | Console.Write("SJF độc quyền"); 126 | } 127 | else 128 | { 129 | flag = 1; 130 | Console.Write("SJF không độc quyền"); 131 | } 132 | } 133 | if (Algorithm.Text == "FCFS") 134 | { 135 | flag = 2; 136 | Console.Write("FCFS"); 137 | txtConsole.AppendText(Environment.NewLine);//<=== FIX ERROR: STACK OVERFLOW OF Console.Write(); 138 | } 139 | if (Algorithm.Text == "Priority") 140 | { 141 | if (NonPreemptiveBtn.Checked == true) 142 | { 143 | flag = 3; 144 | Console.Write("Priority độc quyền"); 145 | } 146 | else 147 | { 148 | flag = 4; 149 | Console.Write("Priority không độc quyền"); 150 | } 151 | } 152 | if (Algorithm.Text == "Round Robin") 153 | { 154 | flag = 5; 155 | if (qInput.Value <= 0) 156 | { 157 | MessageBox.Show("Quantum phải lớn hơn 0!!!!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification); 158 | return; 159 | } 160 | Console.Write("RR"); 161 | } 162 | 163 | //Take data from GridView 164 | if (Algorithm.Text == "Priority") 165 | { 166 | for (int row = 0; row < dataGridView1.Rows.Count; row++) 167 | { 168 | for (int col = 0; col < dataGridView1.Rows[row].Cells.Count; col++) 169 | { 170 | if (col == 0) 171 | { 172 | process[i].id = dataGridView1.Rows[row].Cells[col].Value.ToString(); 173 | } 174 | if (col == 1) 175 | { 176 | process[i].arrival_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString()); 177 | } 178 | if (col == 2) 179 | { 180 | process[i].burst_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString()); 181 | } 182 | if (dataGridView1.Rows[row].Cells[col].Value != null) 183 | { 184 | if (col == 3) 185 | { 186 | process[i++].priority = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString()); 187 | } 188 | } 189 | else 190 | { 191 | MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu đầu vào!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification); 192 | return; 193 | } 194 | } 195 | } 196 | } 197 | else 198 | { 199 | for (int row = 0; row < dataGridView1.Rows.Count; row++) 200 | { 201 | for (int col = 0; col < dataGridView1.Rows[row].Cells.Count; col++) 202 | { 203 | if (col == 0) 204 | { 205 | process[i].id = dataGridView1.Rows[row].Cells[col].Value.ToString(); 206 | } 207 | if (col == 1) 208 | { 209 | process[i].arrival_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString()); 210 | } 211 | if (col == 2) 212 | { 213 | process[i++].burst_time = int.Parse(dataGridView1.Rows[row].Cells[col].Value.ToString()); 214 | } 215 | } 216 | } 217 | } 218 | 219 | 220 | //Run function 221 | GanttChart(process, dataGridView1.Rows.Count, flag); 222 | } 223 | private void GanttChart(Process[] a, int n, int choose) 224 | { 225 | Graphics g = GanttChartPanel.CreateGraphics(); 226 | Pen p = new Pen(Color.Black); 227 | Font f = new Font("Microsoft Sans Serif", 10); 228 | 229 | CountTime.Text = "" + 0; 230 | label2.Show(); 231 | CountTime.Show(); 232 | CountTime.Refresh(); 233 | label2.Refresh(); 234 | 235 | switch (choose) 236 | { 237 | case 0://SJF 238 | SJF(a, n); 239 | break; 240 | case 1://SRTF 241 | SRTF(a, n); 242 | break; 243 | case 2://FCFS 244 | FCFS(a, n); 245 | break; 246 | case 3://Piority Non-Preemptive 247 | Priority_NonPreemptive(a, n); 248 | break; 249 | case 4://Piority Preemptive 250 | Priority_Preemptive(a, n); 251 | break; 252 | case 5://RR 253 | RoundRobin(a, n); 254 | break; 255 | } 256 | } 257 | 258 | private void ClearBtn_Click(object sender, EventArgs e) 259 | { 260 | MainForm_Load(sender, e); 261 | GanttChartPanel.Controls.Clear(); 262 | GanttChartPanel.Refresh(); 263 | txtConsole.Clear(); 264 | txtConsole.Refresh(); 265 | } 266 | 267 | private void addBtn_Click(object sender, EventArgs e) 268 | { 269 | this.Refresh(); 270 | 271 | dataGridView1.AutoGenerateColumns = false; 272 | dataGridView1.AllowUserToAddRows = false; 273 | dataGridView1.Columns[1].ReadOnly = false; 274 | if (Algorithm.Text == "Priority") 275 | { 276 | dataGridView1.Rows.Insert(dataGridView1.Rows.Count, new object[] { "P" + (dataGridView1.Rows.Count + 1), dataGridView1.Rows.Count, dataGridView1.Rows.Count + 1, dataGridView1.Rows.Count + 1 }); 277 | } 278 | else 279 | { 280 | dataGridView1.Rows.Insert(dataGridView1.Rows.Count, new object[] { "P" + (dataGridView1.Rows.Count + 1), dataGridView1.Rows.Count, dataGridView1.Rows.Count + 1 }); 281 | 282 | } 283 | 284 | } 285 | 286 | private void deleteBtn_Click(object sender, EventArgs e) 287 | { 288 | GanttChartPanel.Refresh(); 289 | dataGridView1.AllowUserToAddRows = false; 290 | if (dataGridView1.Rows.Count != 2 && dataGridView1.Rows.Count != 0) 291 | { 292 | dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1); 293 | } 294 | else 295 | { 296 | return; 297 | } 298 | } 299 | private void NonPreemptiveBtn_CheckedChanged(object sender, EventArgs e) 300 | { 301 | dataGridView1.Refresh(); 302 | } 303 | 304 | //============================================================================================================================= 305 | //===============================================[ F U N C T I O N S ]========================================================= 306 | /* 307 | 308 | - A u t h o r - 309 | __ __ _ _ ___ 310 | \ \ / / | \| | | \ 311 | \ V / | .` | | |) | 312 | _\_/_ |_|\_| |___/ 313 | _| """"|_|"""""|_|"""""| 314 | "`-0-0-'"`-0-0-'"`-0-0-' 315 | 316 | 317 | */ 318 | //============================================================================================================================= 319 | //SJF độc quyền 320 | public static void swap(ref T a, ref T b) 321 | { 322 | T tmp = a; 323 | a = b; 324 | b = tmp; 325 | } 326 | public static void arrangeArrival(Process[] a, int n) 327 | { 328 | for (int i = 0; i < n - 1; i++) 329 | { 330 | for (int j = i + 1; j < n; j++) 331 | { 332 | if (a[i].arrival_time > a[j].arrival_time) 333 | { 334 | swap(ref a[i], ref a[j]); 335 | } 336 | } 337 | } 338 | } 339 | public static void completionTime(Process[] a, int n) 340 | { 341 | int temp, min_idx = -1; 342 | //Calculate first process 343 | a[0].exit_time = a[0].arrival_time + a[0].burst_time; 344 | a[0].turnaround_time = a[0].exit_time - a[0].arrival_time; 345 | a[0].waiting_time = a[0].turnaround_time - a[0].burst_time; 346 | //Calculate all process left 347 | for (int i = 1; i < n; i++) 348 | { 349 | temp = a[i - 1].exit_time; 350 | int low = a[i].burst_time; 351 | //Find min 352 | for (int j = i; j < n; j++) 353 | { 354 | if (temp >= a[j].arrival_time && low >= a[j].burst_time) 355 | { 356 | low = a[j].burst_time; 357 | min_idx = j; 358 | } 359 | } 360 | //Calculate min process 361 | a[min_idx].exit_time = temp + a[min_idx].burst_time; 362 | a[min_idx].turnaround_time = a[min_idx].exit_time - a[min_idx].arrival_time; 363 | a[min_idx].waiting_time = a[min_idx].turnaround_time - a[min_idx].burst_time; 364 | //Swap 365 | swap(ref a[min_idx], ref a[i]); 366 | } 367 | } 368 | public static double averageWaitingTime(Process[] a, int n) 369 | { 370 | double sum = 0; 371 | for (int i = 0; i < n; i++) 372 | { 373 | sum += a[i].waiting_time; 374 | } 375 | return sum / n; 376 | } 377 | public static void sortPID(Process[] a, int n) 378 | { 379 | for (int i = 0; i < n - 1; i++) 380 | { 381 | for (int j = i + 1; j < n; j++) 382 | { 383 | int compare = String.Compare(a[i].id, a[j].id); 384 | if (compare > 0) 385 | { 386 | swap(ref a[i], ref a[j]); 387 | } 388 | } 389 | } 390 | } 391 | public static double sumOfTime(Process[] a, int n) 392 | { 393 | double sum = 0; 394 | for (int i = 0; i < n; i++) 395 | { 396 | sum += a[i].burst_time; 397 | } 398 | return sum; 399 | } 400 | public void SJF(Process[] a, int n) 401 | { 402 | Random rand = new Random(); 403 | RGB[] colorProcess = new RGB[100]; 404 | int xx, yy, zz, i; 405 | arrangeArrival(a, n); 406 | completionTime(a, n); 407 | 408 | for (i = 0; i < n; i++) 409 | { 410 | //Random color 411 | xx = rand.Next(50, 255); 412 | yy = rand.Next(50, 255); 413 | zz = rand.Next(50, 255); 414 | 415 | colorProcess[i].x = xx; 416 | colorProcess[i].y = yy; 417 | colorProcess[i].z = zz; 418 | } 419 | 420 | for (i = 0; i < n; i++) 421 | { 422 | a[i].turnaround_time = a[i].exit_time - a[i].arrival_time; 423 | a[i].waiting_time = a[i].turnaround_time - a[i].burst_time; 424 | } 425 | int count = 0, remain = 0; 426 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular); 427 | for (i = 0; i < n; i++) 428 | { 429 | 430 | TextBox txb1 = new TextBox(); 431 | if (a[i].burst_time == 1) 432 | { 433 | txb1.Location = new Point(count * 20, 2); 434 | txb1.Multiline = true; 435 | txb1.Font = font; 436 | txb1.Text = " " + a[i].id; 437 | txb1.Text += "\r\n"; 438 | txb1.Text += "\r\n" + count; 439 | txb1.BorderStyle = 0; 440 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 441 | txb1.AutoSize = false; 442 | txb1.ReadOnly = true; 443 | txb1.Margin = new Padding(0, 0, 0, 0); 444 | txb1.Size = new Size(19, 50); 445 | GanttChartPanel.Controls.Add(txb1); 446 | count++; 447 | } 448 | else 449 | { 450 | remain = a[i].burst_time; 451 | txb1.Location = new Point(count * 20, 2); 452 | txb1.Multiline = true; 453 | txb1.Font = font; 454 | txb1.Text = " " + a[i].id; 455 | txb1.Text += "\r\n"; 456 | txb1.Text += "\r\n" + count; 457 | txb1.BorderStyle = 0; 458 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 459 | txb1.AutoSize = false; 460 | txb1.ReadOnly = true; 461 | txb1.Margin = new Padding(0, 0, 0, 0); 462 | txb1.Size = new Size(20, 50); 463 | GanttChartPanel.Controls.Add(txb1); 464 | count++; 465 | remain--; 466 | } 467 | while (remain != 0) 468 | { 469 | if (remain == 1) 470 | { 471 | TextBox txb = new TextBox(); 472 | txb.Location = new Point(count * 20, 2); 473 | txb.Multiline = true; 474 | txb.Font = font; 475 | txb.Text = " "; 476 | txb.BorderStyle = 0; 477 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 478 | txb.AutoSize = false; 479 | txb.ReadOnly = true; 480 | txb.Margin = new Padding(0, 0, 0, 0); 481 | txb.Size = new Size(19, 50); 482 | GanttChartPanel.Controls.Add(txb); 483 | count++; 484 | remain--; 485 | } 486 | else 487 | { 488 | TextBox txb = new TextBox(); 489 | txb.Location = new Point(count * 20, 2); 490 | txb.Multiline = true; 491 | txb.Font = font; 492 | txb.Text = " "; 493 | txb.BorderStyle = 0; 494 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 495 | txb.AutoSize = false; 496 | txb.ReadOnly = true; 497 | txb.Margin = new Padding(0, 0, 0, 0); 498 | txb.Size = new Size(20, 50); 499 | GanttChartPanel.Controls.Add(txb); 500 | count++; 501 | remain--; 502 | } 503 | //Count time 504 | CountTime.Text = "" + count; 505 | CountTime.Refresh(); 506 | } 507 | //Count time 508 | CountTime.Text = "" + count; 509 | CountTime.Refresh(); 510 | } 511 | 512 | sortPID(a, n); 513 | txtConsole.AppendText(Environment.NewLine); 514 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n"); 515 | for (i = 0; i < n; i++) 516 | { 517 | txtConsole.AppendText(Environment.NewLine); 518 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time); ; 519 | } 520 | txtConsole.AppendText(Environment.NewLine); 521 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n)); 522 | 523 | } 524 | //==================================================== 525 | //SJF không độc quyền 526 | public void SRTF(Process[] a, int n) 527 | { 528 | Random rand = new Random(); 529 | int[] processGantt = new int[100]; 530 | RGB[] colorStandar = new RGB[100]; 531 | RGB[] colorProcess = new RGB[100]; 532 | int xx, yy, zz; 533 | 534 | int[] x = new int[100]; 535 | int i, smallest, count = 0, time, end; 536 | double avg = 0, tt = 0; 537 | 538 | //Define color of Process 539 | for (i = 0; i < n; i++) 540 | { 541 | //Random color 542 | xx = rand.Next(70, 255); 543 | yy = rand.Next(70, 255); 544 | zz = rand.Next(50, 255); 545 | //Red - Green - Black 546 | colorStandar[i].x = xx; 547 | colorStandar[i].y = yy; 548 | colorStandar[i].z = zz; 549 | } 550 | 551 | for (i = 0; i < n; i++) 552 | x[i] = a[i].burst_time; 553 | //--------------------------- 554 | //Calulating.. 555 | x[9] = 9999; //Declare Max 556 | for (time = 0; count != n; time++) 557 | { 558 | smallest = 9; 559 | for (i = 0; i < n; i++) 560 | { 561 | if (a[i].arrival_time <= time && x[i] < x[smallest] && x[i] > 0) 562 | { 563 | processGantt[time] = i; 564 | colorProcess[time] = colorStandar[i]; 565 | smallest = i; 566 | } 567 | 568 | } 569 | x[smallest]--; 570 | if (x[smallest] == 0) 571 | { 572 | count++; 573 | 574 | end = time + 1; 575 | a[smallest].exit_time = end; 576 | a[smallest].turnaround_time = end - a[smallest].arrival_time; 577 | } 578 | } 579 | 580 | for (i = 0; i < n; i++) 581 | { 582 | a[i].waiting_time = a[i].turnaround_time - a[i].burst_time; 583 | } 584 | 585 | for (i = 0; i < n; i++) 586 | { 587 | avg = avg + a[i].waiting_time; 588 | tt = tt + a[i].turnaround_time; 589 | } 590 | //--------------------------- 591 | //Drawing... 592 | label2.Visible = true; 593 | CountTime.Visible = true; 594 | count = 0; 595 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular); 596 | 597 | for (i = 0; i <= time; i++) 598 | { 599 | 600 | if (i == time) 601 | { 602 | TextBox txb = new TextBox(); 603 | txb.Location = new Point(i * 20, 2); 604 | txb.Multiline = true; 605 | txb.Font = font; 606 | txb.Text = string.Format(" "); 607 | txb.Text += "\r\n"; 608 | txb.Text += "\r\n" + i; 609 | txb.BorderStyle = 0; 610 | txb.BackColor = System.Drawing.Color.FromArgb(255, 60, 90, 190); 611 | txb.AutoSize = false; 612 | txb.ReadOnly = true; 613 | txb.Margin = new Padding(0, 0, 0, 0); 614 | txb.Size = new Size(15, 50); 615 | GanttChartPanel.Controls.Add(txb); 616 | } 617 | else 618 | { 619 | if (i == 0) 620 | { 621 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50); 622 | } 623 | else 624 | { 625 | if (processGantt[i] != processGantt[i - 1]) 626 | { 627 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50); 628 | } 629 | else 630 | { 631 | TextBox txb = new TextBox(); 632 | txb.Location = new Point(i * 20, 2); 633 | txb.Multiline = true; 634 | txb.Font = font; 635 | txb.Text = string.Format(" "); 636 | txb.BorderStyle = 0; 637 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 638 | txb.AutoSize = false; 639 | txb.ReadOnly = true; 640 | txb.Margin = new Padding(0, 0, 0, 0); 641 | txb.Size = new Size(20, 50); 642 | GanttChartPanel.Controls.Add(txb); 643 | } 644 | } 645 | } 646 | 647 | //Count time 648 | CountTime.Text = "" + i; 649 | CountTime.Refresh(); 650 | 651 | } 652 | //Show result 653 | txtConsole.AppendText(Environment.NewLine); 654 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n"); 655 | for (i = 0; i < n; i++) 656 | { 657 | txtConsole.AppendText(Environment.NewLine); 658 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time); 659 | } 660 | txtConsole.AppendText(Environment.NewLine); 661 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n)); 662 | } 663 | 664 | public void FCFS(Process[] a, int n) 665 | { 666 | arrangeArrival(a, n); 667 | 668 | // waiting time for first process is 0 669 | a[0].service_time = a[0].arrival_time; 670 | a[0].waiting_time = 0; 671 | 672 | // calculating waiting time 673 | for (int i = 1; i < n; i++) 674 | { 675 | a[i].service_time = a[i - 1].service_time + a[i - 1].burst_time; 676 | a[i].waiting_time = a[i].service_time - a[i].arrival_time; 677 | if (a[i].waiting_time < 0) 678 | { 679 | a[i].waiting_time = 0; 680 | } 681 | } 682 | // calculating turnaround time 683 | for (int i = 0; i < n; i++) 684 | { 685 | a[i].turnaround_time = a[i].burst_time + a[i].waiting_time; 686 | } 687 | 688 | drawProcess(a, n); 689 | 690 | //Show result 691 | txtConsole.AppendText(Environment.NewLine); 692 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n"); 693 | for (int i = 0; i < n; i++) 694 | { 695 | txtConsole.AppendText(Environment.NewLine); 696 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time); 697 | } 698 | txtConsole.AppendText(Environment.NewLine); 699 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n)); 700 | } 701 | public static void arrangePriority(Process[] a, int n) 702 | { 703 | for (int i = 1; i < n - 1; i++) 704 | { 705 | for (int j = i + 1; j < n; j++) 706 | { 707 | if (a[i].priority > a[j].priority) 708 | { 709 | swap(ref a[i], ref a[j]); 710 | } 711 | } 712 | } 713 | } 714 | public void Priority_NonPreemptive(Process[] a, int n) 715 | { 716 | Random rand = new Random(); 717 | RGB[] colorProcess = new RGB[100]; 718 | int xx, yy, zz, i; 719 | 720 | arrangePriority(a, n); 721 | // waiting time for first process is 0 722 | a[0].service_time = a[0].arrival_time; 723 | a[0].waiting_time = 0; 724 | // calculating waiting time 725 | for (i = 1; i < n; i++) 726 | { 727 | a[i].service_time = a[i - 1].service_time + a[i - 1].burst_time; 728 | a[i].waiting_time = a[i].service_time - a[i].arrival_time; 729 | if (a[i].waiting_time < 0) 730 | { 731 | a[i].waiting_time = 0; 732 | } 733 | } 734 | // calculating turnaround time 735 | for (i = 0; i < n; i++) 736 | { 737 | a[i].turnaround_time = a[i].burst_time + a[i].waiting_time; 738 | } 739 | 740 | for (i = 0; i < n; i++) 741 | { 742 | //Random color 743 | xx = rand.Next(50, 255); 744 | yy = rand.Next(50, 255); 745 | zz = rand.Next(50, 255); 746 | 747 | colorProcess[i].x = xx; 748 | colorProcess[i].y = yy; 749 | colorProcess[i].z = zz; 750 | } 751 | 752 | int count = 0, remain = 0; 753 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular); 754 | for (i = 0; i < n; i++) 755 | { 756 | 757 | TextBox txb1 = new TextBox(); 758 | if (a[i].burst_time == 1) 759 | { 760 | txb1.Location = new Point(count * 20, 2); 761 | txb1.Multiline = true; 762 | txb1.Font = font; 763 | txb1.Text = " " + a[i].id; 764 | txb1.Text += "\r\n"; 765 | txb1.Text += "\r\n" + count; 766 | txb1.BorderStyle = 0; 767 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 768 | txb1.AutoSize = false; 769 | txb1.ReadOnly = true; 770 | txb1.Margin = new Padding(0, 0, 0, 0); 771 | txb1.Size = new Size(19, 50); 772 | GanttChartPanel.Controls.Add(txb1); 773 | count++; 774 | } 775 | else 776 | { 777 | remain = a[i].burst_time; 778 | txb1.Location = new Point(count * 20, 2); 779 | txb1.Multiline = true; 780 | txb1.Font = font; 781 | txb1.Text = " " + a[i].id; 782 | txb1.Text += "\r\n"; 783 | txb1.Text += "\r\n" + count; 784 | txb1.BorderStyle = 0; 785 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 786 | txb1.AutoSize = false; 787 | txb1.ReadOnly = true; 788 | txb1.Margin = new Padding(0, 0, 0, 0); 789 | txb1.Size = new Size(20, 50); 790 | GanttChartPanel.Controls.Add(txb1); 791 | count++; 792 | remain--; 793 | } 794 | while (remain != 0) 795 | { 796 | if (remain == 1) 797 | { 798 | TextBox txb = new TextBox(); 799 | txb.Location = new Point(count * 20, 2); 800 | txb.Multiline = true; 801 | txb.Font = font; 802 | txb.Text = " "; 803 | txb.BorderStyle = 0; 804 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 805 | txb.AutoSize = false; 806 | txb.ReadOnly = true; 807 | txb.Margin = new Padding(0, 0, 0, 0); 808 | txb.Size = new Size(19, 50); 809 | GanttChartPanel.Controls.Add(txb); 810 | count++; 811 | remain--; 812 | } 813 | else 814 | { 815 | TextBox txb = new TextBox(); 816 | txb.Location = new Point(count * 20, 2); 817 | txb.Multiline = true; 818 | txb.Font = font; 819 | txb.Text = " "; 820 | txb.BorderStyle = 0; 821 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 822 | txb.AutoSize = false; 823 | txb.ReadOnly = true; 824 | txb.Margin = new Padding(0, 0, 0, 0); 825 | txb.Size = new Size(20, 50); 826 | GanttChartPanel.Controls.Add(txb); 827 | count++; 828 | remain--; 829 | } 830 | //Count time 831 | CountTime.Text = "" + count; 832 | CountTime.Refresh(); 833 | } 834 | //Count time 835 | CountTime.Text = "" + count; 836 | CountTime.Refresh(); 837 | } 838 | 839 | sortPID(a, n); 840 | txtConsole.AppendText(Environment.NewLine); 841 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n"); 842 | for (i = 0; i < n; i++) 843 | { 844 | txtConsole.AppendText(Environment.NewLine); 845 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time); ; 846 | } 847 | txtConsole.AppendText(Environment.NewLine); 848 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n)); 849 | } 850 | private void Priority_Preemptive(Process[] a, int n) 851 | { 852 | int i, smallest, count = 0, time, end; 853 | int[] x = new int[100]; 854 | int[] y = new int[100]; 855 | 856 | Random rand = new Random(); 857 | int[] processGantt = new int[100]; 858 | RGB[] colorStandar = new RGB[100]; 859 | RGB[] colorProcess = new RGB[100]; 860 | int xx, yy, zz; 861 | 862 | for (i = 0; i < n; i++) 863 | { 864 | x[i] = a[i].burst_time; 865 | y[i] = a[i].priority; 866 | } 867 | 868 | //Define color of Process 869 | for (i = 0; i < n; i++) 870 | { 871 | //Random color 872 | xx = rand.Next(70, 255); 873 | yy = rand.Next(70, 255); 874 | zz = rand.Next(50, 255); 875 | //Red - Green - Black 876 | colorStandar[i].x = xx; 877 | colorStandar[i].y = yy; 878 | colorStandar[i].z = zz; 879 | } 880 | 881 | 882 | //------------------------- 883 | //Declare max 884 | x[9] = 1000; 885 | y[9] = 10; 886 | 887 | for (time = 0; count != n; time++) 888 | { 889 | smallest = 9; 890 | 891 | for (i = 0; i < n; i++) 892 | { 893 | if (a[i].arrival_time <= time && y[i] < y[smallest] && x[i] > 0) 894 | { 895 | smallest = i; 896 | processGantt[time] = i; 897 | colorProcess[time] = colorStandar[i]; 898 | } 899 | } 900 | x[smallest]--; 901 | if (x[smallest] == 0)//Process already done 902 | { 903 | count++; 904 | 905 | end = time + 1; 906 | a[smallest].exit_time = end; 907 | a[smallest].turnaround_time = end - a[smallest].arrival_time; 908 | } 909 | 910 | for (i = 0; i < n; i++) 911 | { 912 | a[i].waiting_time = a[i].turnaround_time - a[i].burst_time; 913 | } 914 | } 915 | 916 | 917 | //--------------------------- 918 | //Drawing... 919 | label2.Visible = true; 920 | CountTime.Visible = true; 921 | count = 0; 922 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular); 923 | 924 | for (i = 0; i <= time; i++) 925 | { 926 | 927 | if (i == time) 928 | { 929 | TextBox txb = new TextBox(); 930 | txb.Location = new Point(i * 20, 2); 931 | txb.Multiline = true; 932 | txb.Font = font; 933 | txb.Text = string.Format(" "); 934 | txb.Text += "\r\n"; 935 | txb.Text += "\r\n" + i; 936 | txb.BorderStyle = 0; 937 | txb.BackColor = System.Drawing.Color.FromArgb(255, 60, 90, 190); 938 | txb.AutoSize = false; 939 | txb.ReadOnly = true; 940 | txb.Margin = new Padding(0, 0, 0, 0); 941 | txb.Size = new Size(15, 50); 942 | GanttChartPanel.Controls.Add(txb); 943 | } 944 | else 945 | { 946 | if (i == 0) 947 | { 948 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50); 949 | } 950 | else 951 | { 952 | if (processGantt[i] != processGantt[i - 1]) 953 | { 954 | drawProcess(processGantt, colorProcess, font, i, i, 20, 50); 955 | } 956 | else 957 | { 958 | TextBox txb = new TextBox(); 959 | txb.Location = new Point(i * 20, 2); 960 | txb.Multiline = true; 961 | txb.Font = font; 962 | txb.Text = string.Format(" "); 963 | txb.BorderStyle = 0; 964 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 965 | txb.AutoSize = false; 966 | txb.ReadOnly = true; 967 | txb.Margin = new Padding(0, 0, 0, 0); 968 | txb.Size = new Size(20, 50); 969 | GanttChartPanel.Controls.Add(txb); 970 | } 971 | } 972 | } 973 | 974 | //Count time 975 | CountTime.Text = "" + i; 976 | CountTime.Refresh(); 977 | 978 | } 979 | //Show result 980 | float S_wait = 0, S_turnarround = 0; 981 | txtConsole.AppendText(Environment.NewLine); 982 | Console.Write("Process ID\tWaiting Time\tTunarround Time"); 983 | for (i = 0; i < n; i++) 984 | { 985 | txtConsole.AppendText(Environment.NewLine); 986 | //Console.Write(" {0}\t {1,10}\t\t{2,-10}\t {3,-20}", a[i].id, a[i].arrival_time, a[i].burst_time, a[i].priority); 987 | Console.Write(" {0}\t\t", a[i].id); 988 | Console.Write(" {0}\t\t{1}", a[i].waiting_time, a[i].turnaround_time); 989 | S_wait += (float)a[i].waiting_time; 990 | S_turnarround += (float)a[i].turnaround_time; 991 | } 992 | txtConsole.AppendText(Environment.NewLine); 993 | Console.Write("Average waiting time: {0}", S_wait / n); 994 | txtConsole.AppendText(Environment.NewLine); 995 | Console.Write("Average turnarround time: {0}", S_turnarround / n); 996 | } 997 | 998 | public int NextArrivalTime(Process[] a, int current, int n) 999 | { 1000 | for (int i = current + 1; i < n; i++) 1001 | { 1002 | if (a[i].arrival_time > a[current].arrival_time) 1003 | { 1004 | return i; 1005 | } 1006 | } 1007 | return -1; 1008 | } 1009 | public int totalTime(Process[] a, int n) 1010 | { 1011 | int S = 0; 1012 | for (int i = 0; i < n; i++) 1013 | { 1014 | S += a[i].burst_time; 1015 | } 1016 | return S; 1017 | } 1018 | 1019 | public void RoundRobin(Process[] a, int n) 1020 | { 1021 | int quantum = (int)qInput.Value; 1022 | 1023 | Random rand = new Random(); 1024 | int[] processGantt = new int[99999]; 1025 | int[] processTime = new int[99999]; 1026 | int[] processLength = new int[99999]; 1027 | RGB[] colorStandar = new RGB[99999]; 1028 | RGB[] colorProcess = new RGB[99999]; 1029 | int xx, yy, zz; 1030 | 1031 | int i, count = 0, time; 1032 | double avg = 0, tt = 0; 1033 | 1034 | for (i = 0; i < n; i++) 1035 | { 1036 | a[i].i = i; 1037 | a[i].remaining_time = a[i].burst_time; 1038 | } 1039 | 1040 | //Define color of Process 1041 | for (i = 0; i < n; i++) 1042 | { 1043 | 1044 | do 1045 | { 1046 | //Random color 1047 | xx = rand.Next(0, 255); 1048 | yy = rand.Next(0, 255); 1049 | zz = rand.Next(0, 255); 1050 | } while (xx == yy && yy == zz || (xx + yy + zz) / 3 <= 100); 1051 | 1052 | //Red - Green - Black 1053 | colorStandar[i].x = xx; 1054 | colorStandar[i].y = yy; 1055 | colorStandar[i].z = zz; 1056 | } 1057 | 1058 | //--------------------------- 1059 | // sort arrvial time 1060 | arrangeArrival(a, n); 1061 | //--------------------------- 1062 | //Calulating.. 1063 | i = 0; 1064 | int current_pos, last_pos = -1; 1065 | a[i].waiting_time = 0; 1066 | current_pos = a[i].arrival_time; 1067 | int next_arrival_pos = NextArrivalTime(a, i, n); 1068 | 1069 | LinkedList list = new LinkedList();//Sử dụng giống Queue :V 1070 | list.AddLast(a[i]); 1071 | for (int tmp = i + 1; tmp < n; tmp++) 1072 | { 1073 | if (a[tmp].arrival_time == a[i].arrival_time) 1074 | { 1075 | list.AddLast(a[tmp]); 1076 | } 1077 | } 1078 | 1079 | string seq = ""; 1080 | Console.Write(""); 1081 | while (list.Count() != 0) 1082 | { 1083 | Process current = list.First();//check first position 1084 | last_pos = current.i;//Store last position 1085 | seq += (last_pos + 1) + "->";//Test sequence 1086 | 1087 | //Store infomations to draw Grantt chart 1088 | processGantt[current_pos] = last_pos + 1;//Seq 1089 | processTime[current_pos] = current_pos;//Time line 1090 | colorProcess[current_pos] = colorStandar[last_pos];//Color for each process 1091 | 1092 | 1093 | list.RemoveFirst(); 1094 | next_arrival_pos = NextArrivalTime(a, i, n);//Find next process 1095 | if (next_arrival_pos != -1) 1096 | { 1097 | if (current.remaining_time <= quantum) 1098 | { 1099 | current_pos += current.remaining_time; 1100 | current.waiting_time = current_pos - current.burst_time - current.arrival_time; 1101 | current.turnaround_time = current.burst_time + current.waiting_time; 1102 | 1103 | i++; 1104 | if (i >= n) 1105 | { 1106 | break; 1107 | } 1108 | list.AddLast(a[i]); 1109 | } 1110 | else 1111 | { 1112 | current_pos += quantum; 1113 | current.remaining_time -= quantum; 1114 | if (a[next_arrival_pos].arrival_time == current_pos) 1115 | { 1116 | for (int z = 0; z < n; z++) 1117 | { 1118 | if (current_pos > a[z].arrival_time && z != next_arrival_pos) 1119 | { 1120 | list.AddLast(a[z]); 1121 | i = z; 1122 | } 1123 | } 1124 | list.AddLast(current); 1125 | list.AddLast(a[next_arrival_pos]); 1126 | i = next_arrival_pos; 1127 | for (int z = next_arrival_pos + 1; z < n; z++) 1128 | { 1129 | if (a[z].arrival_time == a[next_arrival_pos].arrival_time) 1130 | { 1131 | list.AddLast(a[z]); 1132 | i = z; 1133 | } 1134 | } 1135 | } 1136 | else 1137 | { 1138 | if (a[next_arrival_pos].arrival_time < current_pos) 1139 | { 1140 | list.AddLast(a[next_arrival_pos]); 1141 | i = next_arrival_pos; 1142 | for (int z = next_arrival_pos + 1; z < n; z++) 1143 | { 1144 | if (a[z].arrival_time < current_pos) 1145 | { 1146 | list.AddLast(a[z]); 1147 | i = z; 1148 | } 1149 | } 1150 | list.AddLast(current); 1151 | 1152 | } 1153 | } 1154 | } 1155 | } 1156 | else 1157 | { 1158 | if (current.remaining_time <= quantum) 1159 | { 1160 | current_pos += current.remaining_time; 1161 | current.waiting_time = current_pos - current.burst_time - current.arrival_time; 1162 | current.turnaround_time = current.burst_time + current.waiting_time; 1163 | } 1164 | else 1165 | { 1166 | current_pos += quantum; 1167 | current.remaining_time -= quantum; 1168 | list.AddLast(current); 1169 | } 1170 | } 1171 | 1172 | a[last_pos] = current; 1173 | } 1174 | //Tính toán các thời gian trung bình 1175 | for (i = 0; i < n; i++) 1176 | { 1177 | avg = avg + a[i].waiting_time; 1178 | tt = tt + a[i].turnaround_time; 1179 | } 1180 | //--------------------------- 1181 | //Drawing... 1182 | label2.Visible = true; 1183 | CountTime.Visible = true; 1184 | count = 0; 1185 | Font font = new Font("Microsoft Sans Serif", 9f, FontStyle.Regular); 1186 | time = totalTime(a, n); 1187 | int last_color = -1; 1188 | for (i = 0; i <= time; i++) 1189 | { 1190 | if (processTime[i] == i) 1191 | { 1192 | TextBox txb = new TextBox(); 1193 | txb.Location = new Point(i * 22 + 2, 2); 1194 | txb.Name = string.Format("P{0}", i); 1195 | txb.Tag = string.Format("[{0}]", i); 1196 | txb.Multiline = true; 1197 | txb.BorderStyle = 0; 1198 | txb.Font = font; 1199 | txb.Text = string.Format("P{0}", processGantt[i]); 1200 | txb.Text += "\r\n"; 1201 | txb.Text += "\r\n" + i; 1202 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 1203 | txb.AutoSize = false; 1204 | txb.ReadOnly = true; 1205 | txb.Margin = new Padding(0, 0, 0, 0); 1206 | txb.Size = new Size(22, 50); 1207 | GanttChartPanel.Controls.Add(txb); 1208 | last_color = i; 1209 | } 1210 | else 1211 | { 1212 | TextBox txb = new TextBox(); 1213 | txb.Location = new Point(i * 22, 2); 1214 | txb.Multiline = true; 1215 | txb.Font = font; 1216 | txb.Text = string.Format(" "); 1217 | txb.BorderStyle = 0; 1218 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[last_color].x, colorProcess[last_color].y, colorProcess[last_color].z); 1219 | txb.AutoSize = false; 1220 | txb.ReadOnly = true; 1221 | txb.Margin = new Padding(0, 0, 0, 0); 1222 | txb.Size = new Size(22, 50); 1223 | GanttChartPanel.Controls.Add(txb); 1224 | } 1225 | 1226 | //Count time 1227 | CountTime.Text = "" + i; 1228 | CountTime.Refresh(); 1229 | } 1230 | //Show result 1231 | txtConsole.AppendText(Environment.NewLine); 1232 | Console.Write("Process ID\tWaiting Time\tTurnaround Time\n"); 1233 | for (i = 0; i < n; i++) 1234 | { 1235 | txtConsole.AppendText(Environment.NewLine); 1236 | Console.Write("{0}\t\t{1}\t\t{2}", a[i].id, a[i].waiting_time, a[i].turnaround_time); 1237 | } 1238 | txtConsole.AppendText(Environment.NewLine); 1239 | Console.Write("\nAverage waiting time: {0}", averageWaitingTime(a, n)); 1240 | } 1241 | 1242 | public void drawProcess(Process[] a, int n) 1243 | { 1244 | Font font = new Font("Microsoft Sans Serif", 10); 1245 | RGB[] colorProcess = new RGB[100]; 1246 | Random rand = new Random(); 1247 | int count = 0, i, remain = 0; 1248 | //Define color of Process 1249 | for (i = 0; i < n; i++) 1250 | { 1251 | //Random color 1252 | //Red - Green - Black 1253 | colorProcess[i].x = rand.Next(70, 255); 1254 | colorProcess[i].y = rand.Next(70, 255); 1255 | colorProcess[i].z = rand.Next(50, 255); 1256 | } 1257 | for (i = 0; i < n; i++) 1258 | { 1259 | 1260 | TextBox txb1 = new TextBox(); 1261 | if (a[i].burst_time == 1) 1262 | { 1263 | txb1.Location = new Point(count * 20, 2); 1264 | txb1.Multiline = true; 1265 | txb1.Font = font; 1266 | txb1.Font = font; 1267 | txb1.Text = " " + a[i].id; 1268 | txb1.Text += "\r\n"; 1269 | txb1.Text += "\r\n" + count; 1270 | txb1.BorderStyle = 0; 1271 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 1272 | txb1.AutoSize = false; 1273 | txb1.ReadOnly = true; 1274 | txb1.Margin = new Padding(0, 0, 0, 0); 1275 | txb1.Size = new Size(19, 50); 1276 | GanttChartPanel.Controls.Add(txb1); 1277 | count++; 1278 | } 1279 | else 1280 | { 1281 | remain = a[i].burst_time; 1282 | txb1.Location = new Point(count * 20, 2); 1283 | txb1.Multiline = true; 1284 | txb1.Font = font; 1285 | txb1.Text = " " + a[i].id; 1286 | txb1.Text += "\r\n"; 1287 | txb1.Text += "\r\n" + count; 1288 | txb1.BorderStyle = 0; 1289 | txb1.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 1290 | txb1.AutoSize = false; 1291 | txb1.ReadOnly = true; 1292 | txb1.Margin = new Padding(0, 0, 0, 0); 1293 | txb1.Size = new Size(20, 50); 1294 | GanttChartPanel.Controls.Add(txb1); 1295 | count++; 1296 | remain--; 1297 | } 1298 | while (remain != 0) 1299 | { 1300 | if (remain == 1) 1301 | { 1302 | TextBox txb = new TextBox(); 1303 | txb.Location = new Point(count * 20, 2); 1304 | txb.Multiline = true; 1305 | txb.Font = font; 1306 | txb.Text = " "; 1307 | txb.BorderStyle = 0; 1308 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 1309 | txb.AutoSize = false; 1310 | txb.ReadOnly = true; 1311 | txb.Margin = new Padding(0, 0, 0, 0); 1312 | txb.Size = new Size(19, 50); 1313 | GanttChartPanel.Controls.Add(txb); 1314 | count++; 1315 | remain--; 1316 | } 1317 | else 1318 | { 1319 | TextBox txb = new TextBox(); 1320 | txb.Location = new Point(count * 20, 2); 1321 | txb.Multiline = true; 1322 | txb.Font = font; 1323 | txb.Text = " "; 1324 | txb.BorderStyle = 0; 1325 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 1326 | txb.AutoSize = false; 1327 | txb.ReadOnly = true; 1328 | txb.Margin = new Padding(0, 0, 0, 0); 1329 | txb.Size = new Size(20, 50); 1330 | GanttChartPanel.Controls.Add(txb); 1331 | count++; 1332 | remain--; 1333 | } 1334 | //Count time 1335 | CountTime.Text = "" + count; 1336 | CountTime.Refresh(); 1337 | } 1338 | //Count time 1339 | CountTime.Text = "" + count; 1340 | CountTime.Refresh(); 1341 | } 1342 | } 1343 | public void drawProcess(int[] processGantt, RGB[] colorProcess, Font font, int i, int k, int sizex, int sizey) 1344 | { 1345 | TextBox txb = new TextBox(); 1346 | txb.Location = new Point(k * 20, 2); 1347 | txb.Name = string.Format("P{0}", k); 1348 | txb.Tag = string.Format("[{0}]", k); 1349 | txb.Multiline = true; 1350 | txb.BorderStyle = 0; 1351 | txb.Font = font; 1352 | txb.Text = string.Format("P{0}", processGantt[i] + 1); 1353 | txb.Text += "\r\n"; 1354 | txb.Text += "\r\n" + i; 1355 | txb.BackColor = System.Drawing.Color.FromArgb(255, colorProcess[i].x, colorProcess[i].y, colorProcess[i].z); 1356 | txb.AutoSize = false; 1357 | txb.ReadOnly = true; 1358 | txb.Margin = new Padding(0, 0, 0, 0); 1359 | txb.Size = new Size(sizex, sizey); 1360 | GanttChartPanel.Controls.Add(txb); 1361 | } 1362 | } 1363 | } 1364 | //End~~~ -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 162, 14 122 | 123 | 124 | True 125 | 126 | 127 | True 128 | 129 | 130 | True 131 | 132 | 133 | 27, 14 134 | 135 | 136 | 137 | 138 | AAABAAEAAAAAAAEAIADArgAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAgABJ 139 | REFUeNrsfXWYHMeZ/ltVDdPDs8woaSWtmBksmSQ7tmPm2EkczuXySy7JJXeXg+RCF7oLgx07ZibZsi1G 140 | i5m1zDQ809NQ9ftjVrJkS7ZgV7uS9T7PPhvFs93VNV1vffXB+xFcRr9joUsCl2UAxMUh/iiEGE0o+QoD 141 | WbU7kUBHaqBHeBkfV9CBHsDHAdytQVAKW/DRmss9u7CispyAPGRzoVVrzoEe3mV8jHGZAPoZuQDMZArT 142 | iseA29biIWPH5t74+S9KsqJMgeBFIAM9wsv4OEMaqBt7AUzxqzC4AJMAwglMg0KRKLZF4ggO9Mz0Ecb5 143 | VBiUYn3dtiJJVq6dtPAqVjl6jCUrqjuVTOYT4PBAj/EyPr4YMAIY73PAFABjEkTSCa7qkFQbXHCM0gBJ 144 | ltEaMXFgoGfoPMAA0GgK8LsguDUrs7Bo2MT5C8Bt2wYhBIAGMdCjvIyPMwaMAIQQoJJKuJWax1nwWpjQ 145 | BaWbKKXrJc3dA85RmKFATxio082Bnqdzwly/EzoEhG37CKF3TZi3QCuoqGRHdu2QhOAEQOryEeAyBhID 146 | 5gNglCIZiWRn5uf/1zX3PvCNadcu/lYgJ/dRIcQTwrZuEISoXAhUeTRMdw0YT50XfviZGwFCwDmfGcjJ 147 | mXnFbXcQWVXR0djIjGQyTghpB4B5bsdAD/UyPqYYMAIQBOAcsuLQnBPmXyG+9NOfs+/85RHvnBs/uVB1 148 | Ov8ibOvfAGSYlgVSXoZF7ouLBGZlyPjOX18GCJGEEDcNGTfBXV49iiSiUbFt5XJhpFIGIVQCgGRMH+jh 149 | XsbHFGygblzqkMEUSU+Ew9Edq1aW1ezZnVU5eox07X2fIoGcXKV27+6p8XC4hBCymcZikZTLi3xLR7M1 150 | +A/NFMAQh+PY8X4cgO8MmTjJOWnhVUrjgf3GC7/9tQ1CMizTzAXHW4omp4YQgRqLD/TQL+NjhgEjgHJN 151 | BgHhTs53ReLxt5uPHk7t2bBupCeQoS68405WPLSKHN29a1Skp7ucErKOWWbUoagosizU88FNAvOcKgQD 152 | uOCMEPoNIcSIivETrbGzZnt8gQAdNX0mho2bwHetW1NgpPRVhNIG27BQZw/u57qMSw8DRgA+3YLD5YBB 153 | KSTGQoSK1fFwpPvg1i3T/Nm5rlnX38CKhw3HgS2bh0V7uv2UkpVccIOpMu5Pmlg50DN3GkxUGIRuQnIp 154 | gCBXEEK+rmja/mmfuGnIiPETHE6Xi+QUFzO33083LnldCnd3baWStBWWhbqLwLq5jEsLA0YA7QDqkwZc 155 | pgWvQwJAuaLIOxKxuFG7b+/sIWPGSmNmzWa+rCyxe93akXoiGQXBu0JA1KkKClUJE4vyoEUjaBsklvMi 156 | hUByOyE5JAib54GQn0+8YsHQ/PJKefI1i/KLSkvTPhchYKR0vurF53mos2ONRKWNCWqhOXWZAC7jwmLA 157 | COAYOjlgpSxkOhRwAUEo2RMLBkt72tvHjJs7jwwZPZal9CQ5uHXLKCHEVkppPQggUQI9kQBF+jhRn7IH 158 | 9Dl8ADK9GgCAUuKwLes75dWjbpu+6DpZSJJvysKrFI/H0/vfKXra28Q7Tz1hx8PhFymj2w3DQrN5mQAu 159 | 48JiwAkAACICgGEi4HYAQpgEONzR3DzP5fFkVU+bQUuqhpOje3a52+pqC4QQMresGwQwBARdmqZGLJuj 160 | TJNRr1sDMv55koQCnwNCACYEhWV/IZCT+41bvvI1R+PhQ1bV1OnKsOpRlNK0AcBtG8ueecretPTNJi74 161 | zymhHf84NQPP1MQG+qu4jI8ZBgUBAEBIAMWWDTBAInKXaRqsu7X1irGz59D8snLm9vmtTe+8VaY6tGuL 162 | hg6dQwiu0eOJOTYXjau8+tESQ0IBI2gyL+x5YIpbhsPlSCc2EUph2/e4vL7/uOPr3wwIznnSMOnMRdfL 163 | J+7+h3dsN//8r98lsXCogTH2DCGk+1BCwoFQfKC/hsv4mGHQEAAA1NsCFU4ZghAQQhtj4dAczeUuHDV9 164 | Bs3Kz6dun8+af8tt7LZ/+H9s/PwraLirq6iltmZaWUreIlHaNCQ3Czt6IhdsvHNdDmyKGyhxSCAgHssy 165 | v+ryev/t5i//Q0bl6LFk04pl1pxbb1dLSstIOvM3DQFBZEUxo8FgTqizI0sQvJXSTfNmy8SGQeLPuIyP 166 | BwYVAQBAhSkgKEAUKcYti/W0ty0YO3sOzSosYkPHTZCKhw5jqqbRrIJCNnziJHFg6xZ/Z3OjFwRvhBNJ 167 | s8who1xTgJSFUD+N0QlgZsANEIIylwzBeaFt2/+VXVj4lXu+/V3vhPkL6Ot/+6s5au58ZezkKVRV1ZP+ 168 | 3uXxktEzZkmZefnY8s7beaaeXEkobYqkTBy67Aa4jAuIQUcAtUKgXJMBEBBCWmLh8By3P1A0evrM4x70 169 | 9C8Btz9ACSH29lUrcrjNtwKIckCnhIgMhwxbNxHu4/GN1iiqfS7YQsApkjAEnQwhflE5ZuxND/3gR+rY 170 | 2XPZy3/8XSpQVMKmX3Ot7PP5TnstRVX5+iWvkkhP92rK2N6YKtCoXzYBLuPCYVDqAWyP6LAsC0xibdy2 171 | n3/3zSVmV0uzTej7hisERk6ewgI5ORmc278TEG9Qgs8SEEkIgTJ/3+XYlzDgioCGgCzB5BwA5LiQ75Rk 172 | +bHpixYv+Pr//o6NmTmbvfXEYynBGJ1yzbVKZkbm6S8oBCRF4UySbYCoBEDYVM9wNJdxGX2DQUkAIQFI 173 | sgTOOSijS9vq61oObN0iTjxHA2krwOXzk8y8fD7lqquLr7773jGK6vhPzu3rJMpg2hZy+mA8VwScGOJx 174 | ASDIceeCc7vSNo0feAOBX3/yi18e8qWf/kIqHjpMWvvKS2b94UOYev0NSmFRMSg9/fQSQqDH49TQdUqA 175 | hACgYWBDmZfx8cOgrbBJRpPQ3BoIYbV6IrF717o1xTMXXy8IpcdZQAgBt89HP/fDn0iBnBymak5Eg0H/ 176 | +tdf/arJ+VpVUrrGFTnxVtO5OQarCUGWV4Fp25AYAwT8HdH2+yRF+XTVxHHDb/rcF9nkK6+mkiyTda+9 177 | bG1a/rY965bblfIhQ4iqKBDi9Ad6IQS2vPO2CLa3tVLG9gDAnJiOLQM98ZfxscKgJYCNpsB8S4CoVIcp 178 | 3q3bt/eaeDQiPP4AOXFhUcZQUT1KFkKAUIpr7r2f71y7ekI8EplBCXslnjTO6f7jNBkZDhlcCATcLoRj 179 | sfGC82/llZZdd819n3LMvekWmlVQQCzTwMrnnzG2rlopZn7yNmX42HHU5XR96OKnjKFmz257yd/+ahmp 180 | 1GOMikMQAq0DPemX8bHDoCUAAKiNJlEuOUEo3dLR2Jhob2iQvIEM+v7FxTk/9j9QPmo0Kawcoh3csnmu 181 | SvAq4eSs/epT3Cp8qgKL26CUyKFo5A5JVr4zbvacIbd97Ru0auJExpiEYEc7f/vJx82GI4cx85bb5arR 182 | Y6jP6/vI67fW1dpP/PRHaKmt2U+Z9Bgo4SDAk7gsD3wZFxaDmgCGuzSkAFDGjkSDPW21e/e4ho4bf9ox 183 | CyHg8QfY8ImT7YNbt0xOgfghEJzn0yA4BwhBR1TH/g+hhPEBBQVEQZjbEIQEbNP8micQ+NKiTz3ove7T 184 | DzF/VjYVnOPIzh32kr/91XT4/GTh/Q8q5UOHEbfL9eEPRAgMPSme+vlPjV3r1kiqw1FiGsbVNpf/RMnF 185 | qXp0GRc3Bl0Y8EQcMS2UaRJAkLJMc152YdHQCfPnM4CcVkiLMoZQV5e1ddnbEhf8NQiSgIBHj+q6osnw 186 | ajJ0WIidImt4il/GMOZDUJjgAnnctn+cX1b++fu++y/ORfd/WnJ7vTQZi4kVzz1jvPPMk1b5hEnyzE/c 187 | qJRVVBKn88zkvQmlJDMvj8y8/gbh8nqdB7dtzSDCepkQJC9W6bPLuHgxqC0AALC4gIOypC3E9oZDB67V 188 | 4wmhud3kdGdszjn8efnM6fX6I93dXxKClxJCPJrP8RdKxN8hiFmtudGqn5x3P9clw0mdaOdJcIhcbls/ 189 | LR0+4rbP/ucPpTGz5lACoKWulr/x6CNmKBwS8+6+Vx06ajT1+/yglH7omf9EUEoxfOJkiUkSWmtrLEKI 190 | JsBlXCLigAtlAtvtTOdrEMAyTRBKsTpy+XgzGDHoCcCbSiGhaQBQF+zosOLRCNPc7tPG14QQUD0e4vL5 191 | 5VQi+eCcmz5pCyHI2ldeqkolkxaX6GOyeXK4TQbAHAp0bkFA5HHb/lnp8BG3fP6/f8JGTZ9JU4kENr29 192 | 1Fy35DWzqHq0dNPd9yr5hUVEkeVzeibOOYx4XOxev06YhrGfSSyIMySQwY5kwA2aTIEIuE3TcGRm53U1 193 | NLVhGCM4dFnwZNBh0BNAnS6QqwEgJGIkk7ah6wKE4LQLRgioLhedsGChyMzOEZ/4zOdUzm0Izn3Ln3nq 194 | i8wWbwlK2u9UgCd7AwRzMh3gXIAADm7b3ysZVnXr5//7J2z09Jmsp6NdvPzH3xmd7e182o03q2OmTmV+ 195 | n/+8nolSivoD++w9G9brhJA3KJMMPZEc6KnuE7C4AX9OFvRk8l6fI+uGWCj0xcyAs4Yw4FBXYqCHdxnv 196 | w6BMBDoR3mMDJSRl6HrKTKXMjzKWKWPk5i//g3bj57+oyKpKNJebzL7hJjhcrmGC82oBYPcJ0UEdBgAC 197 | 27YXuny+O+76xrfY6BmzWE97m3j6l/9jGgLk+i982TF17rzzXvwgBKaREu889QTpaW/bQZm0THAOrzLo 198 | ufiMQGWCV2pbWG5J6fR5N9+6wOFyXu/PyoZ9We9wUGLQE8CxPUMQmFxwYpnmR49ZAJKsEMYkCCHAhUBe 199 | aZlw+fwq57wShCDgTPs/F3oVqEIDIfAJIT43fu58z6SFV9JQV6d44fe/MbTMbFx7/wNy5dChxOE4/9Ri 200 | AmDDG0usNS+/FIMQfwClHcK0sCF68Z+Rh5F0huNQIJBTWFQ18YoF1OX1jXnxcD0jhKIPM7Mvo48w6Alg 201 | F9KLhghiQAhYpsk+JAhwHCc55YSAy+ej3owMJoQopIRAUhQs9LmxN5I2BWzLmu3NyJx5zb33E25zvPi7 202 | 3+iy10evufsepbCwiDDKztjRd1oQggM7d/An/+cnIhrseYxQ+iK4DcIYwpfABlmc4QIhFBkShpYOH1Hu 203 | z8mhTJIC+YAkLAvjHa7zv8ll9CkGPQEcB0HCMkxDT8Q/OmGe4KRIoQCgqA6hak4TgF+AyxJjhINjeECD 204 | 4DbjnF83ZOw499Bx46V1r71ixlMpuuDW2+Xs7L6oJkgTUn3NUTzzq5/TlqNHllJG/5sQkmCU4Uj40jj/ 205 | x3UTkixDc2vjsotL/JHubhsEk6uzvdd5s7KBy33QBh0uCgIQEAAhnYaRCva0tX1o7gIhBIwx0PdZCYQQ 206 | 5nA5JRBMs037YYvzLwiJyCAEAqRYkqVZ4+fNF3o8IfZu3SxmfuJGJS8vv0/GzzlHbU0Nnvn1L7Br5fLV 207 | gvNvEEpbtNwAYgkdjQM9wX2AiQ4Kh8yQSiZkbltjQ8Fgsrx6NP3Kz35VWDRk6EOHa5u9l0ik85LCRUEA 208 | QDqJzzKMozV7dlFuf7gR4HA4IMnScZOdAEimdEIkWVId2qThk6fcLqvqN4VljwAAzvl4TyCjeNS0GWT/ 209 | lk2WK5BJyodVkQ+r5jtTCCHQ3NyMJY/8BZtfe2WjkUx+BZQdIskkEk0deLePdQxn+lTM9CqY71ExS5Mx 210 | z6X00zdyMryaozcyQ6pyikvH+HNyTLffT4aOG09yiktKJSAAANPUcwudXkb/4KIgAAIBAikpIDbsXLvG 211 | 6mxusj9scbpcLijyyS++YVoko7BIzL/5NuvzP/yxHcjOyeKcjyOgEJxPyy8rV7MKCsn+LZt46ciR1Ol0 212 | nteZnxAC27bR1NyE5c8/I9Y+8xTX43GdSlLA4fJDODSYsb7N/Jvn12DFU8jJzUPJqFHQvC4QRcIcvxPz 213 | Ak64++n7mRfQwG0bK8M6CeTk3jHhigXjCyoqfJRSBDs70NHUaDIAtmXB6bxMAIMJFwUBXB3IBiEclLIX 214 | mw4fOvLaX/6IVDL5AX2AY3CoDjB28knBNA0svPNu6VPf+zc5u7BYcvsDTAheJCzLSYAx5dWjqJnS0d3R 215 | YRZVDKHsHHf/Y2OKxqKoq69HMh4XPpcrNf+WW/WJ8xfMlGT5l6lEqBKEYF1fT5QALAvMNMxFoY72fzaS 216 | yVtDwURBZlYGBLcxNcOJqX1sEcz0K1AlJxiTME3BtBGTp9ybV14h5ZeUMQAQnPNh48aXlw8p/kJn1JDP 217 | 25F6GX2KQV0LcAz1ehQuKsPtS3ankixSf2D/PLfPJw8ZO56digRO9f8FQ0G43B6SmZ1NBOfY/M5S0VJT 218 | cwSM7mKS9MWr7743oDgc/NDuXfbUa65V3W73OZ1YE8kE2tra0NPdA4/Hg8KiIjJy8hRp8sKr5KHjxmPz 219 | O295I93dGwml+8cQGwf7sBtQuSajU7c80+fO/vVV99z36eETJ1/PKF/QdOSIHQ7rh2QG0+FQUS4L1KbO 220 | P+wwK6DBQWWkTB2RcLJ0zIypv5hy9bVj/PkFGD52HAMATyBARs2YpdTu3ZNft3vvEoemdF+ueRg8uCgs 221 | gMNJAQogEXWCMvq0Ho/937P/+0tz6/J3THIGO7UQApZpQVZkCCHAZAmay20B8EOgSHE4/HmlZSLc1UWd 222 | Pj/TNO2sF7+u62huaUFbWxsURUFZWRny8vIgSb0JPoRAdTohKzIFhIsAMKW+nX4OQACx+oMHfrb2lZef 223 | tCwzdvc3vzPp5i999X9LK4t+noibeZZhQDAZ8/1OzHKpmON1pA/nZ4lxbgaVUBhGCuFIKrtq3MgfX/+Z 224 | z80HZfaQUWPYMQtMCAHN5UJeaalfZsjt0we+jPPGRUEAALAzmkh79gVMQugvg+3tLz763/+J2j27rY9y 225 | 1nHOQSiFU0tX7FFKicPtZiDEKwQf6vR4nJl5+SQRi9ruQAaT5bMzk1NGCvFEHC6XEyXFJcjNzcX7lYAB 226 | YNuKZaKjsamVUradAIjE+76RiRvgDqdzyW/fWvGpJ3/64wdf++sf98y6/gbn3f/0z58uGVb+i2TMKO0J 227 | Joo7Q4mAL9MHYdsYFzizSsZjmO1xIlfTYJomumOmf8jwih/e/o/fuNmTkSG82dk0t6joeLEWIQTJeBzt 228 | DQ3dpo02ABjOLgrD82OBi4YAghwIRuKQZBmUshCTpO83HDiw+bEf/QA9He38oywBv98HhyPdwIMQSjSX 229 | m4LAKSBK3P6A5Pb7qWkYcDg1wtjZJf3IkozMjEwE/IH3dvwTJ5lS1B/Yb7/6lz/ZeiL+mCzLewHR54UY 230 | q0JJeP1uxJv3Y45XNQI5Oa+ueuHFLzz585/sHzt7Drv9H//fJ4uGlj4759qFb06cNuGFeDh6w5q4CQhg 231 | nt+J+b6PJoL5HgdyKn3QUwaiUaNgxIiKn9zx9W/eP2z8BNZ49KgYOWmKJL1vgW9bsQw716xqVmWEBOco 232 | 8l40r90lj0FHxQzAWAVQbaDaRVGpSShTGMpUBk1hiMR1UBAwifYAqG1raFgguHCPmjqdUEk6pelOCIGi 233 | KMdFOgkhYs/6dan9m98NQSBVOnzE2Pm33i7t2bDelJ0uOmzMWJb+rInerKIPHTP5kMxEQimC7W3iz9// 234 | Ht+/aeMyRtm/CiBKGcWKeN+fhet1AwfjAmVOFYlIGNnFJQ2Ht29rEVxcce19n/JWT5tecO19n8oZO3tu 235 | WXtD/VRSd2RfKG52e33OlKHrKHcrp22xNi/DDdXjQKQ9ingkVTlqyvjf3Ped790+dvYctnHpG1bV5ClS 236 | cXnFSZPBOUf9wf2W4tDyOpsbmzJy87Z094TQaFwCqY+XAAYNAdwtEwT8bpSrMjRFRoamQJZVEKaBKRqo 237 | 5ICgEjSFgTIKIYCeULLeIVOj4eDBOXnl5axsxEh2qipBQshJCr2UUrJ/y2Z7z4b1BgDX2NlzC6ZceQ17 238 | d+mSWEZRsVQ5fKTEqAWCJAAV51qrTylFpKebP/rD/+Trl7y2W0B8lVJ2JD87H52tXWji/ecRr9dNVLhU 239 | JKNR7ImZh63mOmd2YdGMmYuvl1RNQ2ZePpwej/fQ9q3zCooKrgp1dNQpslKvcxPCBKLvm8fpbgqFMRgJ 240 | HYlIqqx66vjffupfvn/tiClTyOpXXrIKq0awkRMm0lMkYKGiejSVZEne+MbrW3JLS1d1NTWh4TIBDAoM 241 | ihK0iRpDu9sFatmIyAl4TEeuze1qYfJREMkcQPSuXmJaBB2Est2MsV2Zmc4QEXg4HglPefG3/3vnsPET 242 | 7LzSMib4R79cTp9PoowVUsbyq6dOAyGE6IkEUTWNCggIMABunMviJ4QAhKCltoY/8bMf8XWvvXpQ2Pzr 243 | hPMdNmWob23EBqv/JcDnhXSsCjgx2gO7qanzt289/uic6qnT5hcOGQpu2xgxeQr9h1/8XzGhtPQv//Zd 244 | bff6Lbe7fVpjhWpjQdJAPaNYZXPIABxy+swfjRpZI8aN/Om93/ne1UPHjsOKF583C4ZWSWOmTjtt6FRw 245 | jrr9+1KRnp79R3fthHW5MnDQYMAJoCogI1tywLBtgMDnTin3goh7PP5AZUZurtOflS1RSRKAIJZhiEhP 246 | j93d1hqLh8O7hCVeYBJ7jjL2s9p9e6e989Tj5Xd949uMfESxEOcCkGQBwJlXWmZUT5vBUrou9ESCaG53 247 | r+74uZ9TU6kUju7bI/7+g/80925cv5EA/2xJYr1syyCEYl303JSKzxbfBzDbNpDvLoLmjnQc2rH9Lxve 248 | XDLlli991XWsp8KYmbMIAMy7+baJ9QcPfNLl9f5KCIGGcBiUEsw3bFiWBW5bqI8a0qjinK/d9Pkv3Vg5 249 | egyWv/icWVY9Who1ecoHdv5jIISgp70dO1atPBKNGpuYxMDOoJjrMi4MBpwAiqkKw7LBhcgRnP93Zn7+ 250 | HXM/eYs65cqreV5pWXpBkt622tyGHo+zhoMHMt996815W955e2Z7Q/3tAH4vgBfXvPTiV+fedDMpGTZc 251 | 4qexAggh0FMpWKZhASCTF17Fs4uK1Y7GBm5bluTy+shHEciprimEgK7raKg5Ija++QY2vPISaas5upEA 252 | D1LKamSLg4Bjc/eF7QC8JmJhLmsDEQQ9kdQ7W5e9vWveJ2+ZnpVfcLxUmlKKSQuvVJY98+SttXt2R2RV 253 | 9Zi6/hwhaFEcGtZEdVzp9aCU8yvn3nTz5yZesUBa/erLZvmYsdKoiZPph80XFwLrly6xDmzd/LffvLO8 254 | 7p9vWYy1yYFp434ZH8SAEsAsN4MlOIjEGNdTXympGn73Z/7jB2zMzNmMSRITnJ9UP0YAaC43zcjLx+iZ 255 | s8TC2++ibzz68IyNby4ZE+7qOhyLRIyWpmY5r7wSEmPHF+aJSCaTaGpuQltdHc0qKLTm3HSzLEkSWmqO 256 | 2qrbTTz+AD3TGgBCCDjniCfiiEai4IKju6nZDjc384KSUhJsbSnQ43G3gIDEgLd7Bqbqb1NQxxSfhllX 257 | zGw/unvXy3s2rJs0/5bbZdFbUyGEQGZ+ASrGjhtfNnzEr8tGVquvP/znSbUHar8oqyI2P6BhR3tQXjBm 258 | +N3zbr41a9/WLVbhsCr6UYufEIJDu3dh5QvPL2tt7Xn4O59cBMouRwAGEwbUCfi5a69EXUMjbNOc6vb7 259 | f/Cpf/k337RrFkm09wwNIU4p/ZUO5RGSmZdHxs2dT4eOGy9He3ry2hvqGHU4uCMjk4FQQigB7bUebNtG 260 | MBhEY1Mjdq5aaa1++klx/ac/S6dds0gWQmDNyy+k3JlZ0vAJEyWX86Pr1i3LQiwWQzAUhJEy4HK5kBHI 261 | QHHlEDr16mtZ5ZixYuMbS5zRUHA1laT9PcFEOgg+ALAAlDtVdLe2INQVjWXkZN0wft58L31fuC6jsIjN 262 | vu4TyrjZc1nz0SNFR3duWycrch1AIOlm6dQF8781dPyEQE93t5i64ErpVCHPYyCEIBwO4/nf/Z+9/e2l 263 | axSJLCOEJIRCUJ+4nAk4WDCgBCA6mgHBmeDimzMWXz//pi98iVHKSO2+PfaBLZt1f3YOUx2O024xQghQ 264 | xkh+WTmdMP8K4vYFxMbXXhEHNr8L3TBggpBYIolwNEK6ujpRX3OEb379NWP1k4+LGYuvw02f/5KiOhwk 265 | GgyKlc8/Y1bPnqcUlpVTRTl9IpBt20gkEohGoyCEwOv1wu/3Q9M0UMbAbUsc2bmTP/frX5CaPbvqBOd/ 266 | opS2tfRDp+KzQYFpQVIldOpWKsPrumrKlVeVOt2ek+ZWMEYCmZlElhUkolF5x+oVdR3dsS1up2LCMidM 267 | X7T4QUnT5IrRY1hWbi75sFyJeDyOnu5uEfD5eWFl5ej6/fvCU6++em3TgYOo6+MKyMs4dwywD4DCNI18 268 | X2bmnHk338qcbg9pOnrY+sVXvsjbG+rpPz/8mDVuzjxFfET5L+ccHn+AfuKzn1PGzJptrXj2ab7xuafN 269 | Ta++RHNKy2ynz0/1WFRqOXTQMpNJvuhTD9LFD3xGcbrdBIRg77sbTFlzIruomKqqig+THLdtG4qiwO32 270 | gDIK27JESk/yRDQqavfsxsY3l2DbiuVGV0vzWkLpjxRJ3Wlxc8AzrtbbAnMhcBiIjG1rPdLd2jo3M78A 271 | x+aWUgpKCEwrLepRNGQo9WZk3u/y+iaFu7u/qTodBW6/36EnkyIjO4fgQ+YoEo0gpaeQX1BAhgwbJnkz 272 | Anjr8UcL/+uxpzHPrw3wTFzGiRhQAiAAbNMqyi0uzS2vHiU450TYHJKiiKqJk0hOcQk704y8Y5+rqB4l 273 | lVYNx5V332NueedtsW/TRoSbGqyM3Dxr8X0PsFHTZ0iFFZUyZen+It2tLXzjm0us8Vdd4/AFAkT6kDRV 274 | SikURQG3bXFg6ybz0PZtounIYdJeX28HO9rR1dIcjUciOwA8Rxl9iRHaaXITBAS1g6AIjloc11cU8lBn 275 | x86GQwfMqgkTTzJ1HJrj2GTClZFJ595yW5nH6y175le/WG+Zhi6rKrVt25YV5ZRVfUIIJJJJUMqQnZ0N 276 | xhhMI4Udq1fFulpbl1+dn4Fo5MI6QS/jw9G/BPDVh5A/IwkuCIZ4TMQtis4URfM6oOBrQ4CJPwbncPiz 277 | s6nT7SGCc+SWlknf+fMjVHFo8GZk0BNj+sccTh9GCsfy/ouHVsnFQ6pw3QOf4ZxzyIpCmCQTAYFj1+xu 278 | aRGv/On3qbJRo1nB0GHM6/V85CMRQhALh/hf//1f+cGtW2JCiFUAGgDSRil9l0psu0RJxOYCu0JxDPMp 279 | WBe6MGG/j4IsS4gFg4iGEiu3r1zRMv3a68qcXu/x+ThWKyGEgOZ2k0Wf/iw1IhGy7JmnZrTX1++QFQU2 280 | RO+3QPABiS9C4HI6j39PhFIc3LIV6159+e2OsP5ODgAyaFLPLgPo51oA5dN3AAIQgOKgojJLtUtNDuXX 281 | nwli5KF94AIwLXQySQpapgFCKChjyC4qpr7MzJPGRilFT3u7WPr4Y3osHOIfFaoTnEMIDklRqKJplFBK 282 | evsDAIQgFgrx1S+/kCwdPVoaNX+BmpOTC1VR8VEQQsDtD7Ar77pH8gQCBqH0t4oif12SpZ9QRleBIKKb 283 | HBIhcAODZvEDwNFgAlwItAns37Zi2V9e/uPv9EQ0imN1FJTS4xmTlFEwJpGMvHzkl5UPsywzT5IVLkky 284 | LMsCIb21hycgLcXYm0VBGdobG/D8b3594MiunT/OCzijEqNYd7lD0KBCv/IxmzcRDrTCFnR0lmr/MEu1 285 | Pz3KZ0yP2dQKGawpo9hh6huaaDwWveno7t1FqqaJvJJSckLOPgghMAwD0WhUvPyH3xg7Vq0QM6/7BFM1 286 | 7bzIKxYOC9Xnp9ll5XJWVha8Xu9pP0sIAWUMhFIQSmFZpkhGo2LrimUsEYmsACF7CKOIRy3YgmJ9TEdN 287 | 0kSoPyf3HBAEUKEp8DIherpjWxsO7ObxSHjCkDHjVM31vpbmhECWJDg0DbV7d5P9mzfFpl59TZnNOc8r 288 | LZWcLoWk948PErEQAo01R/D4T3+U3PD6q9/LKyt7LdLdDUEZ6i9rAQwq9CsBiGw/lFIFXCDUlZLWtunS 289 | /u6UVG5y8tkCzZraUpLbZL9cW24nEg81Hjqo7Vq7hhcOHWpnFBYxwzBgGAZC4TA6Otqx8bVXzDUvvcBv 290 | /OJX5KJhw6T35/efDQgAg3MiqSrNy807bvqeDt2trbzpyGHecvSotW3FMuPVP/1BvPrnPyaDHe0vE0L+ 291 | SAiJZXAb7yQMNJmD28PttUx4nBpkCWZrT3xD26G9sVBnx+QhY8Y5nV7v8bArYwySJIEyhu7WVrZjzSrf 292 | nBs/6UrpSTszv1Dy+jNPaYKl04WjaK2t4dGuLtZSc3Tfiwfrlj/y0x9iTUgf6Me/jPehX30AvL0TQDEI 293 | oAug3hSkfm+tZ2ldjj6p2pf6h3Kv8df2m4Ym+fMH/QxAqLsrvvKF54g3N48JxiA4h5FIiD1rVoq3H/sb 294 | KR45SuhC0H1798Lj9SInOwc+nw9nm7knAKiKArfL9QHpsFN9fPmzT6Ve/uPvqWWkeErXk7ZlvU4InmGS 295 | tIZSEqZUAr0Auf3nipGUIserpMOmlAEQcLhcKPPJxie/+OVf/f3HP4zalvXfD/zLv+cEcnPx/lqKnNIy 296 | KaugMCuvtIyGQ0FuWR/cxY85AG3bgsfrReWIarpnzeqEmUp1/PqfvgkyCJygl/FB9K9LZn8Nks/vgP6N 297 | A3C1jULKqcKhprjC0HSkW3vT47DjRRXq1QmP0xEPWg+rPfEfdLc02/s2ri/bvXEt2bZ2BV/35qv29hXL 298 | t6WC4b+Gu7o6Dm/Z1Nbd1JSjeryKxShhlMHlOvuGE5IkndaCONHk55yT5qNHcGD7FqNiwqREKpGQzWRi 299 | mZlKPcckuSeVtCGIwBvhwbm7XaEQuL1O2JaN6z/zeWxcsTZPWOYESjEHhMzbsWpFeTSS2tl85ECbgJgy 300 | aup0h9Tb9PSYsGnt4YMiHuyxZ3/iRla7bx8vGjpU8vh8x1lXCAHDMNIkEApi5+pV9rO/+nntqhef+2F3 301 | W/BPh3a+a1GJol4fvCT5ccWFCQPO0NGFRwAAzkfug9ulwuk04xsW7/3TtDeq91fe4vivmmuGlqwxvHX5 302 | W2oeleKpaqKyKZYqMUP2pkz/cMPIdDV4dzX9rvBHb5sdDXX3Nx7c/+2rPv1QLgEhsiIjI5Bx/p17ehHq 303 | 7LTbG+p5LBzCtpUr+JZlb2HCNYvUSYuvd3U1NpJdy5f90+6Vy8bEeoLfdqh0j8055nsUrLhART5nA+Fy 304 | wNR1pBK2++3HH31w1lXz7xk2fnxlbkmZy+3zsXB3l3V0966O/Zs37Vr1wvPd1bPmeEdNm0FlWU73Mzhy 305 | WKx79WV75qLrJMokYnMbDpfrfSYXgcSYePORv5orX3xuR2tt7Ruhzu6X3rWwY7ZbgiTLCMYvjeYnlxoG 306 | pizrm7MQGF+JcIqBP/AXlD17/zdGelM/bNOlvUdiipzpsKvH+lPwyhxJm4genZLGhJzqSrHHdI/jG9+7 307 | /veRN1zs/tLRY3963Ve+llVYOQRlpaVwu85f+JoQgjcefTj2yl//zChlzOF28/FXXiVVTprMMjKyCGUU 308 | 3V1d2Prm61j9xOMbk9HIPzCHuklYNiglOBhKorkf6/zPBpUAiv0OHAzpbGJp3vcWP/jZb19zz30Of3ZO 309 | 2sIBgYBAKplAS00Ntq1YbtYe3C/cWdnUn5sLM5VC29EjfMS48bjmnvuVIzt3WI11tWLW4uvlEyXPjjlr 310 | 3/z738Qj//n9Xy9p6vzaFRku2IKDUoLdPUl0D/RkXMYpMTBR2fUN0JkD/uosOG5+eazJyc8AZBU7zdyE 311 | Rf2hFOtpTUrO5rhEEhYhPpljhC8lpWw6pDuCd3ZPKW3wvL1/dzzcEwMXswuqhqt6yoBTc55Si+9sQAhB 312 | IDdfyhs+go2YPYeNmb+AFQ4dxrKyckhxcTECgQBUVYUvvwCxcLiovfboFNs0axL5vqNKzECOU0FAWGgd 313 | BL7A3GwXPIJA0c3h82/55E/u/sa3sgHCJVkm6UIpnhZJZRIycnIxYvJUNnLSZOr1ekUqGhEet1vMuf5G 314 | OmnBlXI8GhX7t22xh4yfIGdkZR2vmBScIxaJiCO7dtrbVixrqz9w4ClVUbZvWrkMsWQKG2ImLu/9gxcD 315 | lpaR8d2rACEgCLknoNi3OyWBNl3eMsav2626/I5ukyd1ThJBgyUaE0pPXVyutUGeS3H6mhXQ4oVv7hOh 316 | iLFTD3U5NY93RmZJKU0kE9Cc2nmTgNPtJjkFhTQrO4dkZGSSnJwcZGdlHfcbuN1uuD1e+IuKRCqp57TX 317 | 1cxlwViSUrpXCFgx20SVWx3wM28JFcjJzoHikK656fNfukeSFfLH737bHD5pMvVkZBAgnawDIXqPTwKa 318 | y0XyysrpsHET2JAx45g/K5sCQDwaFa6MDFpQUkqPOU4JpYj09PA/fO/bxmt//XNs97q1/3e0K/LHQ+tW 319 | WsK0oTlUEH3whUMv4z0MGAE4bhwHIggVBA8WOu0JcYuiOSm9MTGgv6EycVNjQvpfAv47QshmQshuW2BL 320 | 0ib7KRA3TBHq/OQ4Uf7GHjvcHd0R7W4v92RkjvLl5SMeT8ChqudNAoosQ9M0OJ1OnKo4SFUUuL0eEigu 321 | AZMkT3ttzdxUMhkghOx1yWpUQKDSKaOAAo3mhVPA8T52J1y3joPjlnEwXQ5MYdmwLHPelXfevSiroBC+ 322 | rCxaNrKaSopCEpGIqNu/187IzTuprFf0EoI4TgyAJMvE4/cT+VgFoBDQ43FxYOtmXnNgv5h52x2OouEj 323 | xipGsrjtaOOhwqrKnng4DDchqHSpqE8NApPoMj6AASMA7ZNjIQgkRskdBZo1qiPFYAuyzBL41TCPOT1h 324 | 02vDpjRFpviqysRtALlBALcJgesJJSoVYm/rLeNSxUsPJMNdXbu6GuuneTOzCn15eccr9TSHdiZhvnOG 325 | qqpwedzEX1RMvdk5cldjw+RYODxJCNFgCauBEVlITEKBx4ex1MChC6CDV3zXBCiUYEqGjsqxXpihCFL7 326 | ejKHTph4fdnwEVp59WjKJImkDAPrlrzGm44cRvmoMZRS+qHhVMYY2AkJWolohL/4x9+bB3btxPgrr5Yn 327 | z50vVY2f6PLl5k5OxiPzmg8dRDiYqM8qyE6YRgplmoJyhaKQUpQrEvLLczCqO4Yj/T4jl/FhGDACcN46 328 | DnEQ4WTiCr/CJ3fqzOQgf8xxiM0q5T0uiX+lWZdnaYxnj/antGqfoVS6TSVfszMNQa+IWdSyrdTqeHWB 329 | yNtY2x0NhY501tfNyigozPDl5iISiUDXdaiKig8r7z1fqKoKj8cDb24ezR9WBT0aLQm2tS4Ulh2ghLQw 330 | KvdQnoLJKEoUhjxQjPSoICkLwX4YT+4do0Epstwyv0umYqI03kfbl9Ym9i1ZdnPt/r2egqHDEItExZ4N 331 | 660lf/lji6As2B3s0QRjktvrhSKfWe8+Jkkkp6yMjZg6XRpSNZz4fD64XC4UDxmK4pHVuYrTuZCbyZnB 332 | tlYpGkoGW3Qz8fCBw/bGF54B5zbkRAqWJqPcIaNce++nzCGhVJUwxKFAYzY6zcHhUL1UMWAEIN88Fm5C 333 | IIBiSnBd3GaHOfCj7hQrPRpT/iHHYY9RqWht16Ut7bqU2a5LjrDJELcpdE46kzZdCcE3mFlukfP6fvgz 334 | /HU9bW1tXY0Ns3PLyt3e7Bwkk0mEI+F0cUs/WgOKosDj8cDp89P8ESPgzshwxbq7Z8TD4astyyiBgA2C 335 | pM1t3aGqghPA75BQ7JAxLtOJbJmioY9ksly3jIMpCAGIGTGpalhkrrPSc1OspmtI49Z9zzY01MTe2b06 336 | /42aDYndReTZ/XUHf9zxyvKN4WBwhDMzK9Pt853R8YlQCo/PR7xe70kEyyhFVm4eho4bL5VUjy51Z2Zd 337 | rbkci/wOefZbf/zddD2RGG2lUhWWYWSn4il3MmF6Dd3M0nXTG9JN5ZBu8YfXb7DefuTP8Ds0ZFAbLcZl 338 | EugvDJg64xUbHsKOWgNCoFSm4pe2IBu4wCoAvy/QrHGUAGUuo31Lj+MB3aZJDiwQAoUCqBOCLHVQbLMI 339 | NbksY8S/vgitNQyDW1QS9M6iquE/veK+B/JLR485ph4Ej9uDvLw8eL3es84c/NAJPKFCUQiBcCSC9vY2 340 | tNbX2fvWrbUPblxPOhvqw3o8Vmdb1haArKaUbqeENIDSxDHnG+EcKZsjmbSx9caRYM/vwbkcGEqfuQ8c 341 | QJZqI1Ox8c7hDGlBRddoJWV9PkgVXttuFxV6xXVurwTKiOgypL/skdjnF9773ITpt97+iymLr585ZMQI 342 | ZGVmQZblc8qtIITAsiwkdR22baO7ox0dzU0Id3cj0t3Foz09lqHrhpFKJSwjpXPOGSHENHQ9koxGW9rr 343 | ata1HT3yVybJLRO8hfif+sP98g5exgASAP3TnXDKAtH7n4T37w96GeFMEPKbTMW+c6jHwJYeDWP8ujA4 344 | +Z8dQccSiYoHhCCZAlhCCH/KQdCd1dSAzuwMfOIHz6Mm6ISwBSxdJ0SSbssuLvnp3LvuLR4xYyZAKQTn 345 | kGUZmZmZyMnJgUN1nFIz8IwnrlcPUNd1RGNRJBJJKLKMnJwcAEA4EkZPTw+6O9rt9ro6u/ngAVq/Zxfv 346 | qK8zoz097ZaR2sO5WCmE2EAJDsOwgpLbzQV4uoJSAAIcpm0j26Nif1sMh86UESjg/fu98BOGTpviiowo 347 | tked3yvSzH8zBelsTUrbhUBCpgJckA3tKemZb//7iqZ3w51Dxiy88pfjr7pm8ZAxY5GZmQmf1wdFUc5o 348 | ro7NSSgcQjAYhNPpQm5ODiil4CJdhm33iqpwzmFbFizLRDwSAaEUTJKRSunY8MbreOX/fvWjNxo7vjPX 349 | 58CqQZpleSlgQPWZ/Y/fBwiAEAohRDUIeXNaZrKoJSmhLq5Ey9zG+kLNqt7a41Ar3Ga2T7bRmpTMNl1a 350 | wwVZwQWcHHiSEOyORLIw5zu/TavzhpJQ3NKN3qycn0294caKCdcshqJp5FiOu8PhQGZmJgKBAByq43hK 351 | 8Jm84EBaFiwej6OruwvhcBicc2iahuysbGRmZh5PjLEsC7quIxaPIxaLIRIO8e6WZtF8+JBoOXyIdTU2 352 | 8GB7WzAeDB0ykokdtmXVCiFaIFAjIOqE4F0Op8s6Nq6hcgJtXMUrXWdWUlsPGWOfuAehiCKVZCQf15hY 353 | lKVav1GocO4MOlp9in29i4liAUS7UuwHM/64+fGGFfsKqmdO/o8p199wz5AJk1S3zwe/14dAIJCWPTtN 354 | +vQxMuzq7kJrY6PQe7rNEePG05yiYun983psHjnn6OrsENtXr7KioRBz+nw02NbGa3btiO5etfKHS1u7 355 | fzLP78Sq8OVMgv7CwAu038AQuO1ecGCWxsSrC3Pj/mXtLiRtsl1j4p+mZib/sCPoKKZEyF6ZY5jHgFPi 356 | iJgMW3ocoZBBb2YEy2MGheOBv2KiXwNAYKSSkCR5geLQfjxy1uxxs269HYGCwl6lYQGCdLswj9sDt8cN 357 | l9OVbh/GGE6lcW/bNgzDQDwRRygUQiwWAwiB2+USGf4A3B43VPWD+oXHSYNzmIaBRCKBRDKR1hUMhxFs 358 | b0d7fR06G+rR2diAWE+3GQ+HI4lwqE6PxXYbKX0Dt+z1guOw4nKmGOEACOqDSfxq1vXYuHYJps5YCMgS 359 | QHpr8oUA5QKyacEiHFfbQZR/e9T/SkI80GTI18z0Ja5pTkpfNgUJ+mTuNjlp6UixfxnTarwy9++H8L2t 360 | Wx03Dq/41MiZs75ZPXteRXZJCRRFhcvlhNvlhupQITEJAgKWZSGVSiGZ1BGJhFG7c4do3LvHLBxWRSde 361 | sYDl5hcQzeH4wFxyzsFtS8SjMSEIobZtIxYO460nHhXL/v7oo7Ge8FdVTYlQJmNF6LKKUH9h4AngZwSB 362 | gvthcszJc9ivzM5O+F5p9nAu8P1gjetHi6d0/azbYCV7w2obhZjBCPJ8iq0CaI+a9H91jj9JBCnn3b9D 363 | C5zYCeCrAVd6EQgOW/BqQui/5VVULp516x3qkMlTKJOk44KWx3wEkiRBlmRIspRO+CH0uOgNFxyGYSCV 364 | SsHmHASAGY/z9iOHrPaaoyallE9fdJ00cspU7VgPg9NOeK8pzTmHZdswUinoqRR0PYloJIJ4NIpYOIxg 365 | exvaao6i6cB+u6uxoTnY1ro6lUj8lcpsdbUvz15UOhLUsqEmdbjbunBX027y4zsfdKiRqIulUj5q2j5m 366 | WgEiuJcatvulGZ4FW4Y5biytt17YMtU1O8thZ1fuMN7e41fViI92TDpqbDIpid6+LtyZlaI9KcHDz9Tu 367 | HCIKcj9fMXXq/GFTp3sy8gso7ZVbP/biHPN9RLo6sW/N6p5tS99ozyop0XLLKtwFw4ZlDJ0wiZaWlSMr 368 | K+s4GZqWhXAohM7WFrvp6BFhGgZTNU2UDBlKmKKQp3/647p1Lz53m8Pp3CxUCctbQgP9lp4Sc72OY18q 369 | hJ0CIGF1bPDVg3wYBp4A/kFGYOrdSNlkRLHTXDI7O1n2UpN7lQVy1/7ZyZbJ69Vvy1Rc12Ww/ycR1AuB 370 | fFtAE4J0xEy7xqtSzggQvCMC0BcAAMMA5PudEIKDUQoheAa3+WecXu8XJl6zqHTS4uvhzsgkOCHRBfiQ 371 | IwAhx62CcEc7P/zuRvPoti1cUhRaNmYsRk2dzsZMm8G8fj85H5+CbdvC5jaxLBu6riORSCAU7EF3WxsO 372 | bn4XG198vrW7uemb/3XvV58O19T65Xi8kOlGJTGMIdSwymFZhcSysmFZWcKyXcS2neBctjmXTAqr0ys5 373 | 3rq6lO5dlA1ab6CSGziQ7YbLI+CyOPybo/an/laTcFqIE0lKQGLBMEWywU4WdPidBdrEsXJmdTXx5ecT 374 | zeMBIYTEQyHeuHdP9OCG9Rtqd27/XTIW304IXJzDF8jLuWnE9JkPzrr19uzhY8chLzcvLRceCSMWiYjm 375 | I4dtdyDAPIEM0t7UJGr27hGJSFikEnGx/LG//fTqOx/451ce/i1WDUIdgbl+DbWhJL71r9/BF//9h5jl 376 | kqA6HKjpiaNuoAd3FhjwzkB4ngCTBbiNIxGTvdaSlL7slfk7MiUtw1drFSoV9+Vr1oiYRf9gcvJZAmyW 377 | KAABeBQCQiiCm2qAu1Yev+QhAIdCCcx2y1AUFaZl9kBTf5qIRNZueOmFb9Tt2X3VqDnznEMnTRHe7GxC 378 | KSWnPKcSAgICM6WLjoZ6fmjTRr5/w3oa7uhgUz5xgzV67nw5kF/AFIeDNLa0INswkJmZeVZCJUIIBINB 379 | xKNRsXfdmkS0q5NUjB4jD5kwUc7JyUFOTg6syiGoHDESZjKZv+7Rv/3H0bfe+kSZTYcgZRQLw/QLy5S5 380 | ZffKoL1n2ZzwNKAQSm6MgEscsgSUb+3BiGQMotAPT5sOj2Fh3LZOJnfFPCbgISCISARNigSFEJRHUzxR 381 | 9xZ6Xn2HtHvdYJl+EKfTjsZju7s62/8QbG97bn5+WZeWJeNQtBtH9TA2NnZsjvW8stk0Uj9Xna4Sh8OB 382 | gD8AzaHBtixCZIVteudtkV9ahpnXLCIVw0eQZ//vV3z9S8/vtkzzwMO/+DnJ9GuDNgbYAJDVL71w46oX 383 | np8AiF9z2+4c4negbhAS1ukw8BKNERsZn5sCmJwbnBzq1KV8g5PVSYvuEyBjbYGHRvtSqg2SFzJYNiFY 384 | AsAIPvkIjF07kfrRdmBj3Skv3WBwqDDhkWUIywJlrNG2zKXhjvYjdbt3OWu2b8vsaW5WhOBEUlQiyXLa 385 | RLdtkUrERWd9vTj87gZ740vPmxtefL7x8JbNryVCoSWEUR7u6ND2b1grN+zbK1OJEc3vF7F4nFiWlZYM 386 | /xASODEMeez4kdSTJJZIym0tzdLOtWtpzYH9pKujHeFQCPFYDNFQCPV796Blz+5AICmqMyLxfJLQXbZh 387 | MG6nF744+SYn/KT/TYRAd7aG8CgPZj3fANMk2DctG6M3d2LBsiZ4o8bxvyEEMAlBh0QQJQIxAmJSRhSb 388 | EE/cIBmdEZLZEaIFSe4pUtxVlf7cSZVOb0mBw80qfFmxB+WM5OjSMpE/Zcr+TWtX2p7s7HnZpWWy3+9P 389 | aw8yhuLycpJbWkaO7ttDmmprMaS6GoWVQ8nRPbt379qx7we5fi0JSlCXHHwyYuUOBXW6KV81ber3Jy+8 390 | 8qHavXvqAjm5WyLBIOovos7HA28BAAgeTCAZBzKKlaMxizxIIUyJAgJQhQBr1SVUug3UxeSpAMoB7MJr 391 | Z3btfQmOfYk4ZjlleDN9SMYSISrRRy3DeLmt9ui09rraa3atWDbNn5dbnJFf6JVVVTH0pB3t7kmGO9pb 392 | 4+HQfss01gFkGaXkUDBqGBmEeLubm0oIIcM6Gxpm1O7cfueoOfNyZt9+FxUAhQCKiovA6Af5Ne1ITMCp 393 | pYuWhBBCURRSWFSMnJxcMmrSZNLZ3obW+noc3bUD7zz2CIxEAsK2EW5rQ7aQYVOCJBFQ0uU8Zz7RhGDi 394 | xnZEs1TkdCexLdeFSIWG5beXo6w2iuK22HESEQBcXKDEsNGkUOiEgAPQKUGSEoSO3TmVcMFIjiSEjFSp 395 | dHuRpEZUh7qv3uV8Lcflea2ycNj+f+t49tHiDetvHj5txty8vDx43B50dXbCSumiuKycLLjpFqx4+UXx 396 | 1rPPYPjEScSbkTHRr6AahKyNRAbnbioACCHM+6dNaMorK6dZBYWzn9iy609z/U4LGHyEdToMCgJIfvVx 397 | eB5/AAYRUARi71mvIkQI9K4Uc430pSBTOC0B/7k4LtYmTPgTXRjnU5C0LaiyGqaQlpqGeCseCWdFg915 398 | jfv25RJKM3r/pJMSWkMpbZMlOSUIgeAcfo8MwmhEYmwPQPZwQl/SY7GV295c8iM9Fh1x5acf4gSgiqIg 399 | Pz//gxMuy7BME/WdHaBCiMb9+xLR7i6aXzlULR0xgvr9AfiGDkN5RSWqxo6D0+PBq7/8OTyxFIYwJzKo 400 | AkUQSOdgGAsC+MMGFj99FJItUOyLQe/m8ORLaM53oaQ19gE+ybAFHCmODokgxCjM909+OpsTQgik9BRM 401 | M+kllE5jijxN7XF+xejsXvfahLkv/q21uaantWVOT085gc1FICNAtqxdg3B3N8ZNm44Jc+aSP373Ww0r 402 | Hn+0MxbsOaioShsAbBukrcQpsXFo/wEYepI7NA1Ojye3AFBBcFFVPQ0KAgCA6N0Pn/Rv3+P3AxAHCei6 403 | FCefUKmARAWx7HNXlg8BWBk2UAag1CdgpJJQHU4BonQSKJ0Adn/gjwRgMYKAw4WW7i5s1jmqYWIvgNlZ 404 | PjDb5FSSX+O2Fd63ds1vFIc2YuGnHyJtHe3E5XLB5/OddC4XnCM7OxtutxvtHR3EmZPrjBsG9m7dgt3v 405 | bkThkCGoHD0GeQUFyM3JwcxF16Nh1y7UvfYGMqkCCQQ5FofGBc7lcCwIINnpvxxxJIRFL9Zh/50FgITT 406 | Xs/FBUoNgVwqEKEEUUagE4D3kgET6c/kWOkxCc7B9RSInsql4cgng071+izZTCZCIXS2t/GaXbv49Cuv 407 | kkoqh+DNx/5mgkD2Z+VAUR3b12/c9mUN6HI5oKvO86vo7C88QoC/CYYJI0eod82dUeEOBMBtuzenc9C6 408 | LE6JQUMAJ+ELpVCb3oRZtDjEBf93ApTZAmMIkBRA8HxDF3UA6o5ll+kJAMAsTYPgHGECRAVg2TZAKZqN 409 | Y2Gd92LRe3t/b+oKY7pfTQtrELYGsL+5Z/XKv5aOHpNTPWee1NbeBtcJwqOxeBxtra1QVAXQdaRCYQwZ 410 | MpQMHTESPd1dqD90EIc3b8LR7dsxcuYsVI4aDY/XiwkLr8ShNasRihjIoioUkRbkPt9XTTY55i9vQlYi 411 | hfLD4eMtP94PgbRh4OQCTi6QYwE2wfFUZYo0CZBT/J1t2+hJ6TLhXLZTKQgQtNbVsp6uTnh8ftLd0tz8 412 | xI9+GCyqqhrWcuhg7VGgZb7fyaW4DTsxODfTv3odoBAYApQUV1WNdmhOJKLRYBgwyEVGAAPvBDwVtoSh 413 | fuomCCIwJmC0MoKgVxKfqInLay1B/0IIUvrzO/r0lg2WhUbbRodlI2zbiHKO6Ef0JLQB1Ok2KjUZAhxC 414 | iDrLMHLNlD512JRpRADE4/bA0ZsII0sSFEVBLBZDW1sbtix7G3vWrUF2cQlKyiuQW1CI7LJyCALsXbsa 415 | 7fX1UPx+aB4vGvbuQbS5FQGqwsUFvH0hO0YAygXy6+PQdBviDJmVoHfR9/6cujvAewgziiDhoJUlyCwu 416 | InXLlhPJ74Pm8WDX8uVH9rz91uf279j6Qqyn57lCgrhLduKtRBy1xuAkgEIikJWfD4mJ2xY/8Onbbdtm 417 | K5575oUrZs14p72hHvWpi0f8dHASAIDkC7vguGUCTBuwBRKdKcmImPSXDsEaIpIO/tyegR7icdyvW2hw 418 | qSBp8evOZCy6qHjESK8/L4/Kkny86QghBA6HAz6fD26vD67cXLTW12H9yy/CmZGJovJy5GTnIKugEKo/ 419 | gHUvPIumPXuQU16BcEMDWg4dQg5zwMMBX1/qDhL0W0YIAZAiBDFG0drWgpbt22Ft3oWGnnY01tXCWrsp 420 | 8KnsIf7rho1b+9DGrUdGr92O6oqhuK+oAjfWH8az/f3lnSXmBzQwiaK2pTswbsrE/7jxoS8M2fT20uiW 421 | ZW/9MtjRfpgxhtrkxZMMNGgJAAD0AyZCw8rQE5LCXe2u5a6A2R5iBlQhwXh+50AP7zhWAsizbTCZQQDd 422 | tmGM9GRmji8bPZZQQhHIyADtzQA0TROSJMHpdMLtdsObn494LIZtby2Fr6AA2fl58Ho8cPt9MLnA6mee 423 | xKF3N6CjoQF2Mokc6oCfo28sgAsEWQBJRkETBuTOEJxERqqpFdHd+1EWt+WcaHIMSSRv6HrmuQLT7awd 424 | snlPd7AgB67CCtw0dCSerj000I8AALjCLeO7t2/AuzVPQiX2jYvuf+Dz1dNmKK8//OdEW33dmtawvtOt 425 | yYMybHk6DGoCQGcnAndUQ3Pa0PymMKkJCUDszr8P9Mg+gN/NWYyvVE7CznAHb4+Fs1RFWVw1bQalkkT8 426 | Pj8UJd2Yo6W1BaZhwulyQVXVNAnk5SEc7MGRbVuQUzEUfr8fmkOD4vGgvbERXZu3wZ00kUsd8BIJORaH 427 | 8+JZ/5AAuDggEQIHKHxcoNimKOYM+ZYAtTl4UnfReGKaohtXRYryuJHhP+SIxFK6y4F7iyrhT6nYHOsY 428 | sGfwAch3O7By1x8R7ImVjp057ae3f+3/VQZyclE8rEptPnqkquto3ZuqQw7WXUTtzwY3AQDQX9qV/nlx 429 | J4znd8N4fvf5X7QPwQnBpLmLYCoyYj1dmFlZnWknErd32qlpVTNmUdnphNfrhebQjlcINrc0gwoBhyOd 430 | C+B0uaD6fKjZuROJeAzZxSXwejxQHQ7Ekkk0bnwXlbYKH5GRZXHkWmIQ5HCfHWQB+G2BDFvAbwu4ex2K 431 | J6ZLcduGSCSzpIR+tUNPjTE9rvrFK19vPFo2FMMDHtxdNgSP1194EbECAGMynLBNC51RQ6scUvyfd37j 432 | W9dXT5tOIQQycvPI0d075X2bNr+qOOTGi4kA+rU78KWOp2bfgDfnXAvCKG566yVYqjxDP3zk72WR1BeI 433 | ZVHBOURvmeyxohmv1wtZlrF51UocPXgAQgg4NQ2l5RUYf+VVqN25A0f27UUwFIQiK8gtLoHtcyEh0g4x 434 | Nx+soZszw/EiIpw6isGFgBGLS1Zz23VqQ/NzK8bP+Zbt1PySaSHm9eD1eYsv6Hirq4Hh/vTif+g/f4T8 435 | DNeDV951793TrlkkCc5BCEGkpxvNNTXttkDrQM/v2eJifpcGFK/PuRaBWBARlwu63+1cPmn+p9SGln+y 436 | ekKlpp0EqB+EMQgAsWgU+5uakF1SiuycHPj9AUiaE7s3vYvc4mL4vD74vF4MqR6Fw1s2Y+XjjwEA8svK 437 | QGwbRAjogkMAH0zEOUuI93f1Ju/9PtvEwn4D6S0Z7g7mS0n9B56kPsPIzvy3YRt37mgYNxyvzVsEJmfh 438 | 2rcf/chLZT79II4prFBTwLYpej718EePAcBVDgfMFgrbtrAqahD+3X+6/Yrb7vz29Z9+yCP1qiVx28ab 439 | j/2N73t3wxoONKQn+OLBZQI4B7w+bzGSLg2aboCrSnGgpvF7pKPrPjMacwik4+NMkcEkCQRAsL0dhzZu 440 | wNQbbkRWdjZ8Xi8COTk4vGkjjh44gNETJkKWJAQCGSgeNhzrnnwCHfW1KK4aDjMeRyQURC6RQYBzygA8 441 | BiIBnkoK1U9BGQG3ADspYMUFzFj6t50U4BaOB/9JP0YIPgoCgBlPMslo/4Sqp0Z0VRT9e6gk/+mso40W 442 | S7Tj5bnX4oZVb3z4RbiAQgVp7XaQ+0Z1cSfj+D2AWUhndjAKGASoYMBL73PemxqFZZoIx0xlfsD5mTk3 443 | 3fyde7/13UJvZubxBqpCCBRUVCKnuGREV8duH0AvqiZIlwngLCDwfbw+bzMsRUbZ7kPoLi2c7Gps+Qnv 444 | 6J5rpFIEOJagI6D5/ZAcKkAIkokEIj3daT0B24aqqvAGMkAsGxtffxVZ+QUoLiqCZVkwjBRyuITkwVoc 445 | OHAEEiHIpyp8VAYFoJ2r918AXCXIvsGBgtESJJlACAJuCXADsBIcRlhA7+CIN9mIN9hINHOkghx2Er3K 446 | TbjwZEAAy7LAO7uHSinjt8Upc2Q0P/tnUiQW/MSqN/DGvEW4duWS0z+2EIiZUGeVhm8MG/SdGKFdn6jI 447 | QTQYQ4AQSIoCbtkIWxbmKRYIpVgb0THVp8K2LbTETFaR4/vyVXff+73bv/YNvy8zk/ATuidLsoyhY8dR 448 | xeGwEoDlv8gSgS4TwBli2Zwr8DrdBMEY7lv6Ip6bcdWNjqbWH9ldPVXW+xKGUhBwZ+dAUt5LZY309CAe 449 | i8K0TKiKCkli0JMJ7H7zdRRWDYey4Erouo6WA/tBEjpGSD7YvcpFFGliybA4XOeYAkwIENOBt54ykbXR 450 | RtEwipIREjLzKRQfgeyVoOUBvuEAuIBtCJgRjngLR+SwhfABC9E6G1ZYAJxccDLgQsAMR7ySYX7La5pD 451 | k7lZ31k5Yd7RmM+F1+cvwuIVpyMBjv8e06M/3egJOJiYA8N6gTm82BPs8OcoGOV0o9w0jGQiZm7KLy9o 452 | CHd2YlbAiWAsgeyAHwVcXDXvk7d+665vfDvg8vnA39c6nds2Vr7wnF5/YP/zk8ZXhxtrLq5OB5cJ4Azw 453 | zYpqpIgGQgl6SgukF6Ys+LTU1vEfZk8oh59CAMSAABf8+PqQVRVmMoFwVxd0PQVJkpCIxxFubwftDGLF 454 | I3+F4BwO1YHarVuOp9V6OODiHJIA3L3Zf+fqtRUAnLaAq9lGfRvH4S0ELr+F4uEUI6ZJKKmSoDoJhE0g 455 | QEBlAkcWhSMbyBwjw9IFos0mevYaCO/kiB3lsGMX1ioQAMxkkknNbbc6TLPQyM3+eumuo+82DSvFq3MX 456 | 4/pVr3/gbwil+M1hPxjFzkzVntv91V1wRoMzbrzpun8dOWXqlKyCQneoo8Pe9Pab+/du3PDDlpj5QoGH 457 | cL/biY0dIXnRmOH3XHX3vTluvx/8fUTPhcCmt5dabz/x99fD3bG/2+ZRgA4GJ8qZ4zIBfATeHT0ZXRk5 458 | EJRAz/A7inYc+Bpt7fhnMxzxnM7do4IgWF+PZDgEwzBw6I2liOw9gM6pDYjH46CEINzdhXBzM8qYG6GD 459 | dXj5v38AQimUaBJDmQsAkGMJ5Fr8eC7++RqXFEC+zZHBCYKcoKubYP96gSPbbRRXWRg7V0LZKAmKg4Bz 460 | AnHcVU/AVILAEBWBIQrMhRzBowZ6ttgIbreht3GAA+QCxZQs0wRr65yhWvYjkdzsr39i6YtvvL7wBrw+ 461 | dxEWrVpyEh91ZzgRiEShSmg3gkaRiLTdeuWdD377k1/6ygRZVUW4q0sUVFTK065dPP7xn/73r1e98JzI 462 | yMl9PtzThSIgM6+0dFReWfnxMz+Qzug00gVc/NEf/mdP89GjDzs0GlwZTuKLhGD1hZmGPsGgzwMYSPxp 463 | 6gwwTyZAKJJ+j5ZZ2/zPtKXtO2Yk6jrdYuQAkhLD0VgQRw/tw/5ly2Bu3Q0zGoPpd6N41GgkdR3716/D 464 | 4eXLUShUZFIVnhRHICVQQB1QQOHhAgUm75cvSALg4QIBLqAC0DnQ3iZQs8tGT6uAJ0DgDpAP9k8QAAQB 465 | VSjceTIyx8gIjGOgPg4zKmBFeyfgAmyCQgiIpJ4lW9acmuFjmj+7esnexY8/gyMlQ/DLeAg//dFcBO6Z 466 | BS1ughGgcriDYnn9N8wNLV+sGju+eM6Nn8TWZW/bz/3vr6yxs2aT3JJSWjFqtKf5yOHRB7ZuWy/LcptI 467 | WdVTFi743LRrFztPnItEIoFwJAyZUqE5HEq4uyu7raH9rSd/9ZPEc/rgrF84HS4TwGmwYdi9kAICoAS6 468 | 1+3MaGj5Lmtu/7oZi31oEp5NgDZFgkQkWB3d8EfTFXwEBLWdLbC4jbrdu/Duyy/AG0oij6hQASiUwUEY 469 | ZBD4bIFik8PRz/4khjQR+O20uEjCBlqbBGr32LBNILOAQHGknYUfgABACFQvQ8ZIGZnjJRAvR6qHw4pe 470 | mJBiLwn4ZNOae8NTz3et/fwtOwt3HUZLVj7emJULkxNE6t3E9lijUmFzsdvHssQ79bvGz5o7fNS06Syr 471 | sJCMnjGTZuTmMQDwBDLgy8zM2r/5XfZGc+erQ73q1XNvvvWWkVOmsmMl3Uk9iXg8joA/gKy8fFI2oppt 472 | W7nCPnLoyJMuTYlcTElAwGUCOCXKNQ/mD8+GoBTJDL8js77lO6y5/evGRyx+IG1mO3i614GLKvCBQRUC 473 | hEqwkzoO79iGlh074I8YKGVOFFsCRYYNLxfwcYEcUyDH5lAvoDP5GBH4eFovIKwTNByy0dnIEcih8GR8 474 | 1EGfQHEzBIbLCIyRQBQg2S5gJ3t9BP0IAYDrKZdsWrNL99V2Lfvq3TtKth/AE5OdSBpEKspNPpSl8j9o 475 | lN9hudVYOEzenVowYmrpyJGK2+MlnkAGOXGQ/uxscnjHdk947/4leQW5Ny2678HpeWVlJ3VKdrvdkCQJ 476 | gnMse/Ypa9Xzzz3dFY694NEUfpkALgE8NmshBGMIF+bKuYfq/om2tH3bjMXOWJ1SFYC/d2fNtjgCtgAn 477 | BA4qI4uqyCMO5BEFhZZArsmhAHAIwMnTfztQbiRFAL605DJ0QtDeLtCw34aqEWQVpnMHPhwEqo8hY5QE 478 | zxAKI8qR6hQX5FjAdd0pW/bsit2H265d88bO0e8+B+LEVV6Z/96wqeGSxKq4RUeQCs8VzTv2y/4YJarL 479 | RYlIh1UkWSYAICsqGg8dlPasWbNz2PixN117/wNFmsudfjpCwBgDpRSGYWDVC88ln/75z5a01TV+1+dW 480 | QulKwMsEcFHj1bmLYSsyXv7nz5AZTy75Amvt+L4ZiZ517Q1FekExpM/cPjvtxXdzINMG8nuJYbDlYhMA 481 | TgF4bYBTIJggqD/AYaUEcssoZOXYp06D3qOBM1dCxjgJzA3EmzjsRP9bAzyV0mTLnn7Psy/WrSmy93X5 482 | tfyExTpCBv33SZlJpSEu1zk1Ok4UMnX7i6vWtby9xtlw6JCiOhwiv6ycAQBjEjpbmsjWZUu9826+bdzU 483 | q645qauJEAKRSARvP/MUf/pnP27vbG76f4pD2SszBQIc5Q4ZZZqS7nLskFHoUDHE54IzrqNzYL/aU+Iy 484 | AZyA1+cuQsrlxLCte1C+/cCtcmvH/5ihsK8vrHGC9O7u5gIuLqAM8nwRGYDXFpABRG2CxhqOWI9AfjmF 485 | w3Uav8CJEABTKfzDJLgrGVJdHKku8Z68UD9B6Cm3YvGp1Bno2TRcm+FmfJJf4VVCYHZzUl6WtIkoDJBR 486 | dSW+JwrWttVcce99U8dOn8mOqTYRShDq6iRtDQ3Ft3z1a65Ads5xyXjLttDT3QPLtuDzeHh3W6vUdOTw 487 | CiZJexVNwzudESZ0yxPUTUeNbuGQbvHx+dkw4nG4HTJKVIYKTYYibHR/iGbIVV6gSNNQolBUOtWT2qf3 488 | 9RHjchiwF2/MuQHVm3ejpqoYLVUVM9Wmtp+YwXBGX67TAV/zZ7H4BNJWTK7F4RACjaDYu95CIiqw4C4F 489 | mYUMnH80CQAEGdUKXAUMzW+k0LLUgBkT/RYyFJyjTSRKd09ivx/mM7WoTiETYfcYrNGv2P8VMdmTHTp7 490 | hmaoOyOdHayns/OhdKVyb/NTIeDLyCRFI0ZI/tw8elJ/BQH4fOlmqUc2vSvq9u1dmoimVlsiVeEPiCtu 491 | H101IzM/v5IyxhLRaHc0GGwJdXbujUcSO8I2Dry0bVvXlxbMQqFTQ5FDgBKBd0I6FgJoYECWBKhODWZv 492 | 8teQMeOxZu273hwny1Q1rYlz3ufni8sEACBy441Y26Nj//ih4IpcpjW2/szqCZbxc+zyM+jQu5olH2BF 493 | cNZM5LcFZMFRL1PU7LZhPmzgyvsU5JScAQkgXYCk+hnKb9PgLmWoeVJHspX3HQkc63/AOYgADo7wwcqC 494 | 5typm5GA811nITcbE8rzpU7zpy5J3FETk+/40T8uX74ik30OAMP7ukNl5uUTYdlob2kRPp/v+APKsgxu 495 | 21j+7NPGEz/90dKGQzWP5BTlfm34pMk3jJk1u7ykariakZsHxeEAt20k4zG01dfbR3fvDB3dtfPIt26+ 496 | /q1ELLE8YuJIC9D5L//09ZT097/BMi2UMwpCKeLhEI3G7WyHjOGtdTUz5sydvqCnrc3V0dR4r6wofZ5m 497 | eJkAAKwJGgBlSPpcbv/Rxv/kXT3TbPvi0XX7MAgOUAXInSMjd4GMlqUGOtdaaUHDs7AGXFygwuCoVyga 498 | D9pY+kgKV9+vIqeUQvB09uCHXkMAoAQ5MxQofoojjyQRrbH7hAQIIQAlEBwQhKCwLobcH+5HZkzQrXdW 499 | FL6ak6kpVExr1aU1RZq10CPxoRve+PbynH95tjwzv4BIknSScrMnECBZubli+5pVVl5xkexxuUEohZHS 500 | sfSxvyWe+vlP341HIvWzb7jux1OuvGqoJyOTJJNJ0dHWZrW3tQnbNCBsjoycHJRUDWdjZ83JtC0rs2bv 501 | 7qmHt2/7asOhg81t9XWH1738wl7ORQ0hSBBKZcsw/ISxoZPnT5s2Ye78yopRo72hri689PvfvBaPW51+ 502 | Renz9+PiylvsB7w6fzG4JOErb72ERybM+yZtavmhEU9c/MSYtmah5VMUXqsgf74KyUVhRGzUPZ9E61IT 503 | wsTZ9RUBkCJAncIQJARFwyiueUBFVhHttQTO7GKEArFaC4f/kkBof9+QAAjBiTv59lFZWL6oGLlJG/X5 504 | bqSGyvqhkPI5hQpmE2zvvONve7/72U89v+jBz14/fGT1SR2hCaVoOXrEfuY3vzZzKiql4ZOmULfbjTUv 505 | Ps/fevThSGZefvNVd99XXlxVpTbVHLWyikqkIaNGSb6MTEIIgWkaiIUjor2pkXc0NYpYKCicThdyCotI 506 | ICuLghAaDfagraGed7e2WLFwmOuJBIKdHZ0ZhUXyVbfflev2eMSO1SuN1/765+W1e3Z/U1bVfbJDxjsd 507 | sT59TT7WBPDKgusQ6IrCpoDpUK5QGlufNHqCOYPV8H8vNffUHvVj7z9hgJpFEBjPUHSlA+5SKb1D91b0 508 | WSkbja/paHzZAE/inEigVmEIUYLyaoarH1Dhzybg4uxIIN5g4dAf+4gEegmAcoGDlX785suj4auUMO7R 509 | RnhDpnj3c6Wki0s/2bMl/zuj6lZx5bFNhTf945eXXXv/g1WVFZWnGB9FV3OTvfKF5+ym2hpwywI4x/CJ 510 | k0jl6LGko6XZjCfibOzMOXJeUREheK8f4/GswXTDV8QiEXS2tYrO5mYeD4dgGYYAgaCUgUkSkVUVTrcH 511 | WQUFNK+omKbicf6rr31J37Fq1R+iwfiPNY/SXrboJtS//hJWxVJ99DalcfHvdOcBagvEfE5wRcl31zf/ 512 | uxUKD87FLwCiATnzGCQwRGtsGEEBM2lD9ObgUxWQvASuIobACBn+ETKceQxUIidpVAgBMJWh9AYNsoeg 513 | 7mkDZvjMnXIC6WhGqclhKxR1e22sfNrAVfcrcHoA3uv4+8jrcMBVImHoZ504+PsEIofOkwRO2P1rR/qR 514 | XclgNRmo2t2DyvoIsbM1sXZ2/miM6clWN0Tb3T61yOF05cqyfJrxcWQVFrFbvvI1lkokhGWZgBCi+ehR 515 | e++WTam8ikpp7sKrFE3TPtCX8bjjUAhQQuDz++Hz+0nl8BHMtu33iop6u05TxtK/aa8fIBikXIi2SDD+ 516 | Z49faxeUovmtl/t88QMfYwJ4YeZi2BJDzYwJdMzLK74quoOzbD4I1VwEQFSg8CYFZddpYBKBFecwYgJ6 517 | zAK3ORijYBqB4qZQXAxMTq8kwXFqgRoBEImicKEDspui5u869I6zIwGNC5QaHEcVikNbLXgCBHNuVSAp 518 | 4qNDhMeuwwF3qYShD2o48NsE4g3n7xhMahJSQxzw7I1hxtMNGHE4CCoErn2hhizcngp2VpXElrXY6PD5 519 | 81z+gPN0jl4hBCLd3bzp8CFumSYS0YjoaGnmitNFxl+xUCsur6CMWhDCxkcp650YSWCUgp2mcWz9gf18 520 | /5ZNfMuyt5t3r1v7gziw30MI4sk4NifPb15Oh48lAfyQSfBLFkgojhHvvDufdAU/Y+iDsAmlAIgMFF6v 521 | oGyxE0xOm/GSm0F2Ay4ifeDzQuDMVKkEAEKRO0OB5CI48oiOROOZL0CBdE5DsclRSxh2rjThzyWYsEAG 522 | gfhIp+Dx63DAO1TGkPs1HPx9EnoXP6+EIdnkmPZ4A2YbNgJhA4KkHYO2YcLR0nVDgawuL7bIX4KKmqFo 523 | DtkyTfDenfpEcM5hC0FltxuJri7h8PvJpOpRUlZeHlEVtTc1WD7HUX4QlDEc3bMbf/jut1+Lh6P/FTGx 524 | PdOV1n/qr8UPfEwJYPTsq5AEAc92B7w1Dd+wItGsQWf6i7SEV/61Mspu1MAU8l74rjefpi8SC4SgyByr 525 | QPoiwZG/JBE9ys8qOhCwBZIWRzMoNr5qIjOfomyUdFbSeIIDGWNllN8hcPivSdiJc8+HplwgpzMBgJzc 526 | 6YgAVjzukrt6vnFlWdXa7Y3b3YRQYloWuG2DSicvBcYYAhkZ8AcCVAgBQunx3g6ij8LDlFIQQgECJONx 527 | NBzYH+e29bgn4NuqGgYIITjS27quv/CxI4CV46ajS5Exdv1ONFaV3Sl6Qgtsyx5c7lABgAF5V8kov0WD 528 | pFL0Z0qCAIG7QgIfwmAd5Wf9UuRaHAlK0B0E1r5oIJBH4c1kZzVmIQhyZipIttloeDF1Xtqap+txyIWA 529 | 3RMaLrmc/6iANgvBYVkWbNuGJJ36qQl5ryz6TBb+McUgxthHfv7Q9m12T0c7SSUS2LNhXefaV1/+XTyS 530 | XOJ0CwhuYlW0/0PRHzsCiPgD8CRSqJk8qtJR1/QFM5GUB9XiBwAK5F0ho+I2DbJ2dgvpnCAEdq1OYcNW 531 | gRyZIr9XhORMIQmgwORIqBTNRzi2vGlg7u2OMygeOhlEIiharCLexNG5weyXbEHLNCF1BW8d7tO2m4Zh 532 | 2bYtWZYFh8NxygVLKO0VAzlZkkUI8UG9BABccEQjUVBK4XQ5IUsyCKXvM9nSjr+u1hbyh3/+1uFoKPi7 533 | ZCy6PaFjo8fFDEIpasMXJg9lsNWi9CueHTURNqP42ZLfEaU79CAPRUYNumw/AuTMlVBxpwbZ1f+LnxCB 534 | A5tTWPeCBT1xboaQQLpzcK4pQASwe62Fmp3nsIAFIHsYym9V4Sqm/aawnYrFMwJxc6aZTBJuc+ipD/p/ 535 | CKVoa6i3N731pik4h2mkhG3bJ1kDyWQSlnWyAIjEpHQvSAJ0d3WjtaUFDTVH0dxQh672NgQ7O9DZ0oR9 536 | mzagZs9unXP+1MI77vqVw+laHQhohqyqSOkCjf3z6B/Ax8oCcGYXQE6m8I3FXxxNguF7zVTfh1XOFzmz 537 | ZAy5W4PiuTCL/+guAyufMhGPAJlcINM+u93/RGTZHGFGEIwTvLvERF4FgydwlkeB3vBgyQ0qDv05CZ5C 538 | nx7PCIAeItCZTDiywmHBBUcsGkNmRub7BiJgA3Tj8mV2zZ7dZjIW49mFhfTa+x6QLdMQR3fvEiXDR9KE 539 | ZaUrKJ1OyL29Ahhj8Pv88Hq8aG9u4n//4X8Zna3NO11eX5IbhmwkE3qws+NwV0vLMiOpL33tL3+E6tRw 540 | JKyj0b6wG9LHphrw2SmzQFQndt1xPS1du/lborPram4PnrCfEEDWVAnDHnBC8V+AxU8FGg+aePtRA6EO 541 | wAeBUsM+LyEShnQVYViiiIQEZFWgqIqd0lT+8MEROPMokq0csfrziwp84NIAwoyghwgkfE5SOnEibG7D 542 | 5/dBlk726msuN/EXFNLu7m6EQ0G+4ukng9Gebivc3e34879+t1ZPxOmISZNUxaGRlvo60dZQTzSXG5Is 543 | g1IKyhicLhc5vH2bsfyp577+8sEj/95+tPapQ/VNT7zbFXypyu/eRygxJFmGSHLsGoB26B8bC8Ch+aDq 544 | KUx88tVRNBS52TAGj3CDEIB/LEPlfRqUAOv35jKUCrTWmHjn7wZ6WgEXBEqMtATZ+fCOAOCxBQI2Ryco 545 | dq40UVINlFZpOKsUCwEwLe0PCO23YHT3rUoKA6ARhraDRxDt7gLLyUV3VzcKCwtP+pwsSRg2fAQpKitj 546 | NYcOsfq9e7Y//YufPZyZXzA93NPz0ou/+820rpbm/7f4U5/Odvn95PH//WWK21ZjYUWl15uR6SKEINjR 547 | nty+csVbTMb6eS6nDkAHgKFC4EB7CCVOGWsTA/cufiwI4B1vNeKU4Kp1b2LF2Nl32NFY8WA5+QsO+EZR 548 | DPu0Bmfu2YXPzgWUAp3NFt75u4GOegGNCJSlzr3fwAeuj7SacYgBsSDBjlUm8ssUSPLZGZuCE3gqJGTP 549 | lNH0itGnfloHF1AIg9LRg4Yd2+G/+lp0dnXC4/HA5/OdnLjDGLxuD5xOJxSHw16b4C8cevWNZ740bzY6 550 | O0Lr3nrisR37t2z6bNX4idM6G+v3bd2w7esqoCgOZAGEmCnRbQkc0lQSIYRiec/JufwNA7j4gY8JAegT 551 | y6BYNt684hMVJBy9yTKM879oH0BwwF1FMOTTGlwFcr8vfkKBYIeFZY+n0HxEQCVAqcHh7qPFD7xXOZhh 552 | c7QzivpdQGudcfZWAADCCPLmqejcZMJo6xsrQADQRFqUxQeGhiVvI2foMORVVKKpuQmKouBYeu+JSCUS 553 | CLa1JgDgszOmIFfLgelLWZTRpZt37F99cMf+ckVGxOugTYrmOH7sUbV0dhYDhW4NjvfuRHwsogAWpcg5 554 | 2gAlHLlORGNDB8PuLzjgqiQY9hknvCVK/y9+AsSCFlY8mUL9HgEFQIlhw9cPTicCIMtKqwklIgQHNtmw 555 | z8HfIjjgKmQITCcQpO/GKQkgz+JwgcLV2Imtv/m9qN2+jceiUTQ0NiKRSJzktxBIJ+ro8bgBQAgIPNNa 556 | D4sRaBwoDmhJf8C5z+nWmhKEQwgby3viWN4Tx4pgAitCSbwTimNtZPARwCVvAbw4bxEkm6Nl/MiA92DN 557 | J81UasAdn4IDzhKCYZ92wldxYRZ/MmZj5TMpHN6WTvQpMjky+snjfCws6OUCXZSgbpdA6EobGblnn9BE 558 | GUH+HBU9GxMwW9FnVoDXTjs9vYzCXdNJDvz5bzWNsyZr1bPn5qdSOsnLy4e/V/1HiHQLMAjBFIBQkd43 559 | 1/acJksvOfiiS6fDgC+G/saDJcOgxRNgKWMebe/8qqWn1H5Xp/wQCA44CgiGfkZDYITa7zphhABG0sbq 560 | 51PYs4aDCqDQ4si1+pd1jpmWIYkilQAy8gkKKtgZFwq9N2GA6mVIRWxEDvC+9QWItNqRlxOUOdwHl+7Z 561 | 8r39O7YOi4dD2URRYPWaAQ7NgY6WFmxf/k5NV1vn81maZNddZA1ATodL/ghgUmDrZ26lLBq7zk7qnoFe 562 | /GouwZAHNWSMujCL3zRsrH81hV2rbBDeu/jN/g9/CqR7DTi5gG0DtbtsGPq5PTClBHkzVKhZ6PM5IwBs 563 | boPFkuO+XDZBb29u+ku0p8c6/O5Gs7u21ojGoohEInC4XFA0ze8BlEGXOXoeuKQJ4J3514BxjlHPvllM 564 | YvH53Bo41hYcUDKByk85kDWu/xc/AHCbY8tbBra+ZQNWevHnmX27i34YpN4+A4QA7XUCoc5zK/cVHHAX 565 | ysiYIPVPfgQh4MmkJiKRW5HUl0SDPQeq585TC0pLaVFBofC43fD6A/BkZha6gRwAmO3re3mugcAlTQBx 566 | 5oU7HIMSiU1DIlnZV1VcZw0ByH6g/F4HciZdmMV/7L6MEbgYUGJc2MUPpHdXry3AAMQjAq1HbZBzfHgq 567 | EWRPVSC50S/zZ1sWRDQ2/4vVM7Xulpb9eiKBnNIySVYUIkkS/BkZKBxale/yKJMpk+B2uC/gTPYfLmkC 568 | oFYc2+++ntJ4YqE9UGd/ATAPUH6PA/kzHbiQZYeEUUy6SsGi22QUOgXIBU58PBZy04SAbQHNhzls69xW 569 | rxCAt1KCu7x/siSFAEQ8WeQ2rCsEhAIAnNu9/03A6XJh1IyZzqzi4ltbu6JaMpXEQnff6QEMFC5ZAnhp 570 | +jwwITD07fX5JJGcygdC5VcA1AmU3KYif86FXfzHQChFyXwFQx/QoGb2X4HN6SCJdF4AAHQ0cCRj4tx4 571 | WACyiyJjgtQ/PQUIwFMpyYxGb/YHMoa5fH5I7L0gmcQYho0Zh/Ix42b5FEwEAEu++I8BlywBuDQPHAkd 572 | cjQ2RiT08gtu/guAOoDiW1QULdRA6AA6HwlFzkwFQz+jQcu7sCRAkFYOogQIdwmEOznIOcf0CQLVMmQf 573 | 6ZdjgOAczZGe6aWjx1YFsrOPF/cAvf0CsrMxZu78nIyC/FtXhpIE3MaIizyOdskSgMUtVG1eDpbQp/NU 574 | yn1Bzf9eHb+im1SUXKOBSv3zwp7dkAiyJsuoekiDq+jCkoDG0wknqaRAZ9O531gIwJnP0qXC/RANCHIL 575 | DUVZjhFz5iqBQMYHREIUWca4WbMxZOLkRZOBShCCPK924SayH3BJEkAPABsUm2+5x0WS+uQL6v0XAGQg 576 | /xMySq5zgMoDv/iPD00QBMbIqPq8E57y/i86OjYdihBQhAC3gc4mfu73FYCkEXirpD4vEe4UJrYUeVFx 577 | z50oGzoMmRkZsG0blmUhqes41igmv7AIExZeVZlXUXTL/T/6H9imhama2v8T2U+4yA2YU2PqsMVQXByy 578 | bpRKHV1fsxLJwAW7OQPyrpZRcbMTkkoHzeJ/DwSOHApPJUO8wYbedY5n8rO6IxBlFHFC4HACwyZJZ60W 579 | dPxalMDWObo3mxB94NYRQqBO5jg4fgiqPvcZDJ86DaUlpVBVFYZhoCfYA85tmKYpVFUllmXBn51N6g8d 580 | rHjpf/5nhaI5OlSZXnRtwY/hkrQAPFUMajIFKaEPFSkjp/81tXpBgJx5MipudUJ2DMbFn4bgBJ5KCVWf 581 | dyIwWur3cVKkK/AIAaJBgVTiPEhHAM4C1jd+ACGwz0nQfcd1mPpP30BR1XAEPB5omoZYLAYmMXS1tvKu 582 | 5mZ7//atVqSnh9cdOcytRMKaecNNFUUjqj6zIpiglsUxsn+nsN9wSRKA3q0j0NAKljKqhWE6L8T5XwjA 583 | N46i4k4Niqt/RTzPcYQ4SdOOE7hKGKo+pyFjQv+TgNpbzKfHgETs3Cv7BADFT+HIOb85JgBCRKCxMBOV 584 | C64AA1C3bSvikSiSySS6urpACEU0GCTNtTWgkizVHj4ESZLojnVrUD1pMkZMn3HjNBnDmcyQn+Hs3wns 585 | J1ySBEAVCRv+6TMMKWOEsO0L8owGAVodFIPPECTHf5NTkICWzzDssxqyp/VvTFsWAhSAaQjosTPtGnAK 586 | CIA5CJwF5/+1xmUJtD2Izf/zK2x78UUUDqtCWVUVWpub0dXclK6jSKVIKpkkmbm5pKWxgWTk5IKqDsm2 587 | LIybO7+ksGroNVOuuwEWH3SMf0a4JAlAgKB49WYXMYwKfgG6/RAABiU4sBN46286gh1W/8Sqz3pgEkDf 588 | W9inWnaCEziy0915cufI7xe/7TNIIv2y2SaQjJ/fDQgFtHx2XoadAJBtCZQaQLKhGQXV1Rg9ZQpCwSB2 589 | rV8LzekEQBCPRuAJBIjPH0AyHk9rJnGODW++gdySMvhzcqf86G9PsAGM8p4XLslyYCIEWCyRIQwz/0LY 590 | 4sdEMLJNjpqtgJnSseAuFdlFfSfyQY4dec/qcQSAEwdw6rdUcEAJMAy5XwNVCNqWG2kHWx+91AIA6yUA 591 | kwOp8+10Qwgc2RREBsR5BHgUIcAEgalKACXYtnYNdi1ZApPbmH/DTUjE44gEe1A1ZiyRJIZ4KITuri40 592 | HjwQ3vrWm+0Ht2wq7mpsOAzAvhAbTX/gkiOA52ZfA8myQWyeC9PMFELgQvgAKIBCk0MQoGEPxRt/1bHw 593 | HoGCcqVPOCjUaUNzE6ja2Zx9Bc70w6JXkrvyHgeYCjQvNc66fXjvHRGjBE4uTgoxUQhQpPsGWsZ5TohI 594 | +wGoQmCb5+dPoCDIiFvY/KvfQqIMrCeEis99CoQx7Nu+VSRCYZGdX0Abjx5B3e6dIpCbK/ZvWLey+eDR 595 | 77XX1RZTSjfPcjIo0sVpAlxyYcDKQ5Mw9E8RQIjJtCd0OzdM5UIlARGkRTE5BdqCBC01NjIKAH/2ufMs 596 | IcCRHSbe/LOOjgYbhZUUitZ/5wumUPiGp6vuojV2eoc9y/bhEtKEeOKfcQJ0MwoLBMUjKIqGnntlHyGA 597 | pXN0rDfPur35+8eqCkACRW6KI5CyYVCKLphoqa3Fu08/dZDLzDFs0hR1/Wsvd255c8mexn17Yy1HDn9X 598 | 0RybmcSOUMYSTJYRjafQfIElvfsClxwBfHNFCXzBECxJmoee0PX8AjkBj+EYCQgCdEYJmo7Y8GYLZOQx 599 | nO2bSghweJuJZY+nEGwT6GwSiIc4CoecKQmc24GeygS+YQxEBqJH7LO2BOgpPi4I0C1RGISguIqhePi5 600 | Rx4IANsU6FhnwoycXx6D3CsKkmkLaAIwGEOqtROJHXtQpIvlu3qaGxoO7C/cvvyd33bW1X8/3N31RkI3 601 | N1LC4ZMplvYkUZc0L8rFD1yCRwAIIPNQLZrHDM8VnA/I8x07DhAAra0Ub//NgHEHMGKyesYa+YQAh7eb 602 | WPb3FCJdAjIFqAD2b7RhmSnMv1OFL7t/svmEAIhCUXydA1QlqH8mBes8QncffLjzHB8AJhMwR98M6NhV 603 | 3FxgWIqjjFDIhMCtetiartp/Wv/SCyMtw16hamqESgyyI73YX+nux7a9FwiDwVfdtw8kE1SJThDbzjhr 604 | Gdq+HAfSJFBocyS6CZb/3cDO1ToE/+iFlDb7jeOLn1Gg0OCoTNlwcIFDW2wsfSSJrub+6Z8HoLc7MUXR 605 | 1Soq7lUh+8j5Nezs/SEEkFV6/lxCCUg/2K+qSGsZOm0OYlm5X5l2TWd5Zu7LmscZoRLDimACK4NJrAxe 606 | /IsfuAQJAAT403/9kBHLDgyYAMh7Q0G+yVFscRhhgtXPWNjyThK2efpuN4QAR3eaeOcxA5HO3sVvcuRY 607 | HF4uUGZwaEKgdrfAm39JoaXG+BAT+PydbSAU+fMdqHxAhZp17iQgkD4GEACS3AffCwHQh0rBHxgrAFhW 608 | Zioa9d5ROR7RsAE5dGks+hNxyREAAeA/Ui+Bc20wpOMRpNtnl1gcdgxY+7yFja/rMPQPkgAhQN2etNkf 609 | 7l38BWZaw+/Yaf4YCbiEQPMRgTf/nELdvlQ/+zkJ8mY6MPQzDjjyz54ECABOCDgICAWUPjLd+1NeQQiA 610 | WLaLWpaHcIEt3MJbg+B96mtccgQAISCnUlRw2zeYvq5si6PMtEF1gndfs7H6xST0xHskQAhQu8fE24+m 611 | EGwXkHoX//tlvI6RQLnB4RYCnY3A0ocNHNquoz/zeYUgyJ6kYthDDmglZ08CNtIZCUwCNHcfvHYC6dBC 612 | /z0xBOcasWwPFRx//vSn+/FeA4dLjwAIATGss3e5XwBk2ALlpg3ZENjxNsfypxKIhS1Qmt753340hZ62 613 | 0y/+YxBIO6zKDQ4PBEIdwDuPGti/KYX+JoHM0SqqPqfBVXl2JGCTNAFICoHm7htx/34vZ+ZcIrbtYpaN 614 | 4Yf29/PNBgaXXhQAAOGcQYAMhiPA++G3BZjgqAfFntWAqadQWm1h8+sWgr2Lv/AEs/90OJZ9WG5w1CsU 615 | 4R6CFY+bsE2gesaZRxvOFkIQBIYrqPo8cPivSUQPnFkYzuwlANUJaJ4zzk86JY6FAe1UP3+/nGuEcze1 616 | OYJqbv/ea4Bw6VkAx3Cu8rP9jGN6+RUGh9cWOLiJY9ljBoLt6VBfkfHRi//Eazm5QHmKI8AF4mFgxZMG 617 | dq3W01JW/WQDCU7gq1BQ9XknfGPPjGd1kv6cO0Cguc7/y+EpAZ7qZy0DAUsAEoSAxS7Oar+PwqVJAIRw 618 | 9F2/yz7HsYVb1tuei5oEKtLS3bnW2Ul3CwAOIVBm2MjgAnosHW3YsTwFbvcvCXiKZFQ95ETm1A9/jTgA 619 | naYXfWY+TTsBz+fbIYAZF7D1/nm24zcRwiQiXVuS7ux96eGSPAJAkW0A6e1hEB4DgN6FywUqUjZSlID0 620 | /vtcr6UKoNSwQWWGrjjBmudM2BYwYYEKJvfPaUhwAleujKrPUBx1JdGxykp7+95HOjYBdJJ2ABZUUFBK 621 | zi9FgwBGiIOn+o/g0tcVQvRyFTei/XSjgcUlZwEICNiyxEHI4CvNPwUo0taAdp715ALptNZS00auzWEk 622 | gbUvmHh3iQ7T4P1mKgtOoPolDL3PiYJrZBAZJ+3uBIBBCFIg8GYQFA7tA11/AehdPJ2i3M8g6fQFwHH5 623 | CHBRgIAgnptlEcaCgy4McBqcLNNxfmAi3fk3z+KwUsDGVy2sfykFI9mPJCAA2cVQeYeG4psUUMfJD6QT 624 | wAJQVs3gzzl/AhBcINl6HuKiZ3QTAIRIAAgIQSLl6MebDRwuOQIAgPU/+w8bhCQHshHoQIKJ3jRki4Ob 625 | wOalFlY9qyMZtfuVBJiDoexGDWW3q2DutO0sAMQpgcNDMHKaBNYHZbN2SiDR3N+NXgRAiAzAFoQgFenp 626 | 5/sNDC45AhDCxneJKoTEugayGcdAg6I3DdnkIBawY4WNZU+kEA3a/VY/IARAZIriax0Ycp8K2U9gCyAG 627 | gooxDPmV7LzLMwgBkkELydb+I7MTbmaBkASnFAHJ2883Gxhcck5AC0BLwUgIxjpBqUi7oD6eOJaGTAE0 628 | yRT7NthIJZO44i4HArlS/5jQAgClyJ+nQtII9v09BVkQjJ0nQ1bp+ddnESDWZMEM9b/Qi6BUtxmLCQak 629 | 8i7uBiCnwyVHAA4mI5nhBySpjVBmAebF38HxbHBsdz9hoWVbHEwINCgMR7cLmCkdV9ytIqe47yTL3g8B 630 | iuypKsZkM5RGBAoqzn/3B9I6/rEjHNwg/W4BUEZNMBoTXOCGZx7r35sNEC65I4DsDMB0ahCy1EoYSw7W 631 | MGC/geNkGcBeZNgC5YYNBwTq9wksfVhHW10/lhMjLUIaGCKjbIKSbo92viCAleCIHeb9LmNOCAEYi3JZ 632 | ivBzbGJyMeCSI4C1rz0KU5FhK3IbkVh4EJYEDBh8djp12CkEWo4Ab/4lhaZDRr/upIL3Xc4+6TX/Y/UX 633 | 4PwPQEhSyFaV6HmImA96XHIE8H0AFqOwnVoXZKn9ggcC+jKm1w/w2uk0ZLcQaK8TWPqwgfp9xnl07L2A 634 | EAI9u0xYEfQ7rxNCQCTWkfJ5EwP92P2JS44AgHTmRrwkPwJZru+vophT3xigGiB5MGhJ4FglYYXB4YVA 635 | V5PA0kdSOLrTHNwkQIBUxEZwu31B5pZQCi7LTUt//x/6QAvL9CcuSQJgQmDqn35jQFEOEnaBdE8FwFxA 636 | +V0qhn3OCUf2hW3BfZZDhZMLVKQ4AkIg2Aa8/aiBQ1tMDFbmIgQIH7SQaOAXpOkKYUxAluq+ULlACDpI 637 | v8g+wCUXBQCAa1cuwboR0yFUZS+RmAnL6t9IQO/iL7tTRdGVGgglkFSCI39LIt54YV7YcxgyHCLtGJRk 638 | hq5O4J3HDFimwIipygXppXA2sI20DLidxDnPJ6EUQpyBA1EIEEnSbUWpCRfn4fpn3wCyBtd89BUG4at5 639 | /nhh+jzofje45thPZTnYr5vascV/h4rChRpA04U3GeNkDP+SE/6RfZD73n9DP14/kMc54kGB5U+Y2LPW 640 | 6M3qGegRpkEoED1qIbTrPJx/lKZ/zvChiCJFuKrUppwa/nD9jIGegn7DJdcXAACGyxT5mXkQbqcpByOL 641 | eDJZ1C83EgBzAqV3qCi6SgNhJ5a5EjiyGPwjGFIhjkQLT4fnBsmiOhEU6V4GhAAhg6DxEIeqAbmlDIMh 642 | m1JYHHXP64jsP8csxmOscYaJCIQQMK/ncCo/+/ec89hda1cM9BT0Gy5JC+A/amthE4Kt3/5CEA51B6H9 643 | 8JjHzX7HKRZ/70c4oOVLqHrIidLb0qmxg9UvQJGWISu2OMyYwOrnTGx7xwC3+ll04yNAKBA6YKF7s3Xu 644 | 4xBn3iINACilgEM9FCop6OGDgAD7E5ekBQAAd9TpGL12g7CcWjZi8ev6tENQ785fdqcDhVc6Trn4T/ws 645 | VSl8VRK8QxnMmIDeySGsQXfMBkE6QqBCIGQTNByxQRmQV07BBiIZhgB2wkbNEzpiNRfOl8JkWSAr4/GK 646 | 1VtWRQqy8ETdkQv/7BcIl6QTEADkGdWIChuE0C2SqrRDTxX0ifl9zOy//QwW/wl/QwhBoFqBp1RC+3oD 647 | zW+k0g5CYNAdCzItAUnYqAPF+pcN2KbAlEX/v73zjpOrLBf/93lPmZndmZ3dzWZLekILVbooSEBUQIqC 648 | inTCVa9cxcK9iF7bxYIXrgXF3n60BFEUFUIXCVV6CRAgvfftO/Wc8z6/P87sZhOSENLLfD+fyWZ3zpw5 649 | 7Xne533a6+Ml3s7CpJuPoCz/V5mOF7fhcuuqiO/3Rqnk88v33xOvrnHbnfB2YJe1ACYvnMXZe44nbB7S 650 | l1jVeZzNF/bc7J1W4vxjzk4y4sSNFP61P+8LdXu41B/kIr5SWqWEOXY4RZBSqLHQp8L8OZawDG17GFxv 651 | Gy20KtA7P2TWjQWCzm1nLYkITjYzu9Ta/JPASHfPsqX8efmibfPl24Fd0gfQT2QtI6dMzWtNaqpxN9/Y 652 | KYqwqs2h8V0+5u0Kfz+V6Whtm8ue59ZywJdqGXaSh9dQ8Q/sIBGD/vUHxgWWmpLy7P0BD/+pRK472iaK 653 | SlE6Xg4oLt22PghjDNSkXly195ilVoSPT/vXtvvy7cAuawEAnD9ub4L6LJrwQ6cvd0ZUCmo2ZynpvBHm 654 | WkPjMKFl9Kavbrt6p0JyiEPjOzzq93VQoNQeN7vcUSwCX+MuxmULKzqVtj1NvNLx1lZUIqRaDEE+Ijd/ 655 | 20VQ3EQi1OYhv2x5Y+7TPVLij0t23dEfdnEFcOmQVnrTtYRDG7sTHd3H2MLmTQMM0KHC8hXKiL2FdP0W 656 | EISKfyA51GHIwR7Z8Q44UOpSokL/+9vpAlasFS8Bo/YTDjnLZ+T+3lZbc2Bt3KQhu69LGETk5tp1Nhzd 657 | kgjg1KWXlluarinWpJY7yVomz5u5Tc51e7FLK4DfL13Ah8eOZ8xTL5aLQxoaJZc7yUabvp6UA6gIy3JC 658 | X3fEqH0d/OQWmkUpiBFSzQ5DDnbJHuDiZoSoqEQFxVaydLe6ZdAfMVPw0kL9fi4jP+Iz7owUQ8Z4yDZO 659 | a3T9OIKixtI3O46ebK3zN8bgNDY83D1u1G+kWAqmvfAYD5ZK2/R8tzW7tAIAuGDMXoT1WTSV7Hb68qdH 660 | pVJ2c/aXVCVvhGUrIAwjRo53cNwtKBT9imCIQ+MBLk2Hu2T3cfEy8dI6Nohf/f6CLaEQ+gVeAKdGSI92 661 | aHmPz5iPJBjxwSTZvTyMZ1DdPqaI8Qz1e3uYpNIzK0LLm3/O68JNJELb3PTz5jkLnuiqredTM6dtl/Pd 662 | luzyCuCQxhaymQyr3vuuzuzrs/fTXP7QzanucoCkQo8Rli5S/BqlbZyz5c1iBRC8GkPNcJfGd3gMPdKj 663 | 4SCX9GgHPytIJe0YO6jufrAjUdfzqiQjiYBJQLLJUD/eoXWCz8jTEow8NUHTET7JVhfxBhpjb1fEiaMn 664 | fhZ6ZkZxTcAWPCwB3GzdgnLr0KvymfRK1zVMmjdje5/2Vmf739ltwF3Hnkqms5PIcz/AgsV/DvKFzObu 665 | s9MR5nkOTgaOP8fjgKMTbP0i9f6HXrEhhL1KuctSarcUVkQUV1jKPUqQs4SFeOkstbGiEFfBVYwPThpS 666 | jQ41LS41LQ6pFoNfb3AS8Rf0WwQ7JsrKJ8vMvrlIccWWSw5yHAdn5LCbFh5z+CezM+YFzyycx3dmv7K9 667 | T3ars8smAg1GpESuoQ7JpP+Vau96QgrFEze3xrshUqxEzO91eOS2AD9h2Odwj63aPWYgo1UQA1694DcY 668 | 0mP73wSNFBuBjWIl0e9kxCiYOLXWuIJxZLXVooOyZXdYwe9HaH6Xj1sjzLphC1VbquLUpPrCuvTtI557 669 | JejNZHYL4YfdYAoAMHn+HH4WjSW/amE5qEur5Aqn2ijavHNXSEXxcl6dRWHB7IimEUJDy8ZXnG0RBkx7 670 | od9EEEcwnsFJ9L8Exzc4nsE4piL4ssN3L1o/Qk2bITPWITc/otyxeZWLxhjMkMYn88Nb/y80puCiu7z3 671 | v5/dQgEAHHPwXoR1GWw2s9TrzU2whcLITdpRZbELNwPpvQzDDjGMOtCQHeXQMsYh07DbXNLtiwrJZoea 672 | YUL78yG2yCYrAS+VCm3r0B81z1r4cHdjllMevnt7n902Y7eYAgA89953kVm2jAm3P7Qq1zzk/zl9fUeG 673 | pfLbO38Fk4Smo1xaj/fJjHFxU4NMabbOIpxV1o0NlflLLL0BbOrCXQJIXXp6ub7uzmW1qd1nRKyw25zv 674 | 1KlT+XxtM+WGLDabWej15Y6xxdKojd6BglsnjD03yZiPpKhti0NjlUeI3cSfuuOgyrSHyzx3W0Bdj2VT 675 | u467yYRq69Cfvu+J+6dM33M/bl4xl1dXrtzeZ7fN2P2eWlWeGn4AxcbsuXbxst8HpY1Y9VHjcNm4C5IM 676 | /0AydsVXR/rtiPLK4wFPTS7R2hGR3kSzSwCvuemN4tiRpxKGswLX4bSH7treJ7dN2aWLgdbFXRNOpWvc 677 | SIojWu80mfQ/NiZ+rwpNR3q0HZeoCv8msqV6sgjw+tMBT99aoqUjIrMZcy43mYy0of6GEx+aMqvkJxi7 678 | YNn2vkzbnN1OAZzyyF2k8yXScxf10pC91ksl2zf4AQW3Vmg9zsdJmk0W/rBsCct2x269vRUwBoKiZf70 679 | gHJx85YoF1FmvlDmyVtKDF0ZUae6ybrYiGDq614qNmZvuffYkzFRxAGzn9vel2ubs9spAIAVmQQ9w1to 680 | P/WEh51M5kZnA63DVSE1TEiP2fTmnmHZ8sifStx/Y4mOpRFGtm+brW2BSCywKxeG/OPmEn/7aZHHby9R 681 | zm2aEhCBOS+HPDGpxJBlEdnNEH4U3JpUMWqs//XIV2ct6PFdxq7ctav+1sdu4wQczB/nz+Ki4WOpe2WG 682 | kq6daQqFCbZcbl3nxhay+zq0HONvWrqvQFBSnr47YPYLEYtnWPwE1DcLrs92y6/fWoiAEaW3w/LSQwFT 683 | /1hmwWuWMIDl8yy5LkvbOINfs/HWlAgseC3g0RtKZBdF1G+O8AOO62Cah/6jb2Tbd7rr00Unshz7zKPb 684 | +9JtF3ZLBQBw5tADmX7s/uxz76Nd4dAh3VosnWyt9d+0oUJ2vEPTET6b6jM1BhZMj1i1yJLvUea9GtG5 685 | VMlkId0gGGfnVwTRNH7DAAAue0lEQVT9I35fp+WVxwMeua3M9CdCCn3978XW1IqFSscyS8toobburVuM 686 | iYHFs0IeuaFEZl642cIvgFufXRW0NV+e7O57VR0PScMtM3ePxJ+12W0VwB+Xvs7n/Hqi5ibsHmNmeCvb 687 | 22ypdMSbHi6FVJth6BHeprfIVuWNZ0NWLVGMgSiClQstc6ZF5Not6YxQk2WnVATGxEt2d6+MeOWxgEdu 688 | C3jl8ZDedh1UuxALnlZ+dixTls+zNA03ZBrXH0IVA8vmhjxyfZHaWZsv/ABeIgGtzb9aeMRBv3Vyeasa 689 | cuo/7tnel3G7sdsqAIDJC2ayoPV6/MXLItI1r5ogfE8UBMPW3s5JwNCjPNxNqP0XgVy35fkHQvLdShLF 690 | IEQGykVYMjdWBN3LLW4CauoE14MdOUIrAsYoUaAsnx/ywoNlHrs94LUnI/o6dGAbJX7AhoRKW2ApGaEs 691 | ggj0tCuLZ0XUDzU0riN9WgysXBjy8PUlEq/Hwr+5GGNwm5ueKQxrvjyzdGWnAqc+vPsKP+zmCuBbfIuz 692 | 2w7gicvOZZ+7H+4qDWspOcXSiVG5PLCUmABRScnu61LT5rzt0lhjlMUzIl6aGqARjAoszaESiFA2ggqU 693 | CrB0rmX2ixFL50TYEJI1kEjFRTs7BNIfylNy3ZY500KenFLmySkhc6dZCr2VdKhBh1trlRGBpTWw1Cqk 694 | bdxXsWxiJZDvgQVvRKTSMHSEg6lYWGKgfUnE1BtKuK8ENGwB4RfAz9Z1BG3Nl9d29j71+LuGM3xxD5MX 695 | zt7eV3a7slsrAIBJS2dweXuZvpYmeoc1v5EqlIaafOFIG0XxBgK2DBal8RAP8zZTzmyoPH1PwOLZ8ZLc 696 | wwNLSqHeKr5CIBAaAYGwDO1LlTnTIua+HNGx1KJWSSTBS8S+gm1qGfQLvShBQVk2J+SlqQFP/D3gpakh 697 | y+cpQWn1HL+fhCqtoTIysNTZ1Ufsa9xoNBShWDnncgEWvh6v+NMy2uD6QueyiIdvLCIvBTRuodxqL5m0 698 | 2tZy3YIjDvi1lMt22NIeTnn0/m13LXdQdnsFAPDJcSMJrUuqLxeW6zMv+kF0CPnC2P6SYQHyKywy1FA/ 699 | xmFjhdAYZfZLEU/dFWDLMCKwZCprUxriRTjqIyWxliJAId+tLJ1jmfVCyJxpESsXRZQLiusorg+OSzxi 700 | ypZUCVox7+PfgoKyYkHE9CdCnpoS8Ox9IXNfjujr1HjpQFlt6guQUGgOLSMDpSHSdT5cDpCNdKDJqhUI 701 | A1g8IyIogp+Cx28toc8HNNotI/yu62Jah96fG97y5bplq3pFlVMfvneLXbWdmR3Evtz+3P3OE6grhQSu 702 | ECSThycWLp0crGrf2/aPQAo6VBhzcZLRhycwsv7Cn36P+KIZIfddX2bVYktbaBkR2HVecAHKAp2OYZUr 703 | sWCw+ub0L2jrepCuF4YMMzSPNrSMMjS0GtL1QiIlOJ6sFWN/i+IkGdy9QIhCJd9jWbXYsmS2ZeHrESsX 704 | Wgp9irVvHun7FVnKxgLfGCpJ1QGH31vR6QiLPEPBxFrEOJBNC00rQxqiLSP8RgRvaNPM0si2c91S+Vk1 705 | Drkal9P/uftU/G2IqgIYxF0TTqavLs0+z79O+4jmD7uLlv2m3Nk1dKDDlkK5QWg8OcH4Yz0yQ5yKQAyI 706 | KgDFnDLz+ZAn7wzoWGZpjiwjA4vzViEvYkugxwgdrqHPCMGgEbb/GPoX7nU8SNYK6QbINhmyQ4VskyHT 707 | IKTSQqJG8BLgOPH0wTirBTgsQ6mglEuQ61I6likrF8YC373KUiqwxijPoDMU4lWFM1apDy11VvE2QV77 708 | rYDFnqHLEXxVRpUs9Vto5BfAr892BiOHXTJ0wZI/vXHoftTmC5yym+X7b4iqAliLKcedTOQl+OWU38gV 709 | 7zrrM2bx0muC3r7agUdSoc8VgrEOQw9xadnTIVNvMA4U+pQVC2Kv/uKZEVKC1sjSHL618A9GiNv2FYzQ 710 | a4RuJ7YKQhlo57eGQujvUQCVVbBdcF1w/TjZyHHi6YhxFOMYECEoQbmghEGcqBQGqxVLf7+QyunG+yUW 711 | +hqr1EVKnVWSVjFsXmmEAKFAtxF8jadFWwo/XVuyI9qunDHh8O8Pe3lmZMKIU6dWhX8wVQWwDqZMOAUc 712 | Q761yR/66qyvsmTZV4Nc3hu8TVmh0xW6U4YwJagRwrISFsGLlKwqTZFSu6EHul/Q7PrfhrgdftkIOQN9 713 | JlYGJVlTIaz9GdU1/5MZPoz08GH0LlxM75KlFSGXNT+01mG5GndBrrFKOlJqbOzg6w+GbsmqhjVtqM1E 714 | watJRgxv+0Xn2OFf8Xv68qhyytS7qw/8WlSvxzro9ZM8+q73IiKU6tI19XMXfZclyy8tFwprKAEBQmIz 715 | tiyrTeOkxibxW86F38ZTP3jTSKAsQkliK6EkDCiEUGL/gZU4Qcf4Pvue/REOmnge6dYWehcv4cXf3cSM 716 | 2+9AgwCDYAC3cswJVRIWUpWfnsbOvI2d1+8IeAkfGdZ6a+/ItkvdQrFdgZefO4Av9/3f9j60HY6qAlgP 717 | 17znOA4ihYhQztTUZeYvuVqXLL8kLBbfdM3W/sO2EJTB39nf6dsKhFaJVIkkVhStnzif/f/nCtxUErWK 718 | GEOQyzH9a1ex8pY/44rBUXDQuG+oKth+r2PsNNAwrDQW3fFrx1zfw2lruTM3rOUzbqm8CBF6iwEfeeYf 719 | 2/vQdkiqCmAD/OX4E6kNY4M4rE011Cxceo0sW3FxUCjumK3UFFJ7jyN73NE4dRmKM+cw7IrPkdpnDzRa 720 | PVkQxyH33EvMOOffCTo6VyfqW8VpyJIavxfpQw8itfceiOeRe3k6XQ9MpTRn/nZcp+yt8T0P09r8YN/w 721 | ln/3iqU5iTBiuQsfe+LB7X1oOyw77t3cQZh69Acoi0FFKKdr6jOLln2bpcsvKefXnA5sd6wl+973MPrq 722 | b5IYNxoRIcrlML7/5pFbhLCzizc+cjG5adMRAacuQ+OHTqbp4x8mtd8+OHVpJM48QqOI4uy5LP7fn9Bx 723 | 533b+0zXiet7OC3NDxbbmv/DLRZnNi9fxaLhwzj5sWq4b0PsmCPZDsRxj9/PjUceQ6ufxsvlu3pGD/ta 724 | RqToL1vxuaAvl9wh5sWqmJoULZdMJLnXWDQI4xh9KsX6EgFETBwesBGJcWMY8c3Lafjg+zC+j1oLVlEb 725 | Dmyf2msPRl31NYL2TnoeexLZUaYDCl7SR1qbp+Rah34hmS/OOf6pp7jz2GM5/ZG37/G/qqUVtS6KYDUC 726 | Dfmf9hXb+yy3GjvIXdyxuejpx8hLKX7YenO9HXuN/qYOb/2Wl63rNtvbiLKKJBKk9t2b5OiRa5j6qGIi 727 | ixOEa35GhLCrm3DlKhJjRjHmR99myIc/iLgOGkXrVBoaRfjDWhlyxge37/muhVeTtNLW+qf8sJbP+MXS 728 | nFFLV/DXY96zScIfn2cSUQejBhcPV1Lb+xS3KlUFsJGc8ehDUGhHFZId3cUFRxz4Azui9TJvSMNis71G 729 | Q6skxo5i3E+uYq8bf4Y/anjswBuECSOcIFjjb2KE4uy5aBgx8soryE44uiL4G/46tRGJUSPIHHEI4hi2 730 | Zw90Afx0bVmGt/26b2TrZ91SeWEiCHl99AjO3CyzX9HYMj5SIbVDWHhbkWotwNtg0pLFTBw3msgakt19 731 | 9sTH7ntx5v7veNmDg6RYarXWbv6XvB2MYfiXLqX5oo9jamvW2bHIRBYThkSJ1b1ORAxd9z9Eaq+xtPzb 732 | uRv/fQqJMSNp+OD7Ed8n9/zLaBhuc8egEcGvz3bZYS1Xd49s+7bXV+gWhZwjnPbY5uX4v7emPr5GsWx0 733 | A/af+e5ten7bkqoF8DZ5/0P/4IMP3w1RyF9P/DA13X0PlEa0nWuGtfzdT6W2XTsPVUwyQc1+e4ONPfjr 734 | wroGE1lk0GhtSyVMKkXzxHPA2fAjIKoDr37cIQ0M++KnaTzzFDZ3jcW3i+s4eEOHzAlGtl06//D9/9fN 735 | 5XOuVabu43Pa41usus8C8wWCzd7TDk7VCbgJCMDUu5ly3Cm8etj+jJ05b3rf6OH/Vuv7l3ur2j8bdvfV 736 | Wd3K1kAldKdhtEYsx0QRKoJWpiXWcbCOg1MKCJNxW3MNQjJHH4nX2ryG4hAb+wtMGGEiu9rEF1BjsK5D 737 | mIidhCaVovG0k2j/yxS0XN4m19xNJtQMbXqo1Dzk6/v/a9q/fnBaC08c34QJlSAI4feb/z1fXzV/q5/L 738 | jkTVAtgMTp16FyNmL8I6Dm6+2LFs//HfkNbWiV5L0zTP97e6e9CWypTmLWCwBnBKAamuXsygfgbl2hTG 739 | KibqQaIlmEREcuww4tsvmDAk0Zcn0ZvDLQWoCEHSp1ybopSpoZSupVybIvT91asfW0uwYmUlaWjrWgFG 740 | BD9b18PIYdflRrZdkCiU/vWuX7+Pp8b6bY7lFIw4XmLHisruLFQtgM3kg0/cS+ONE+mocyAjmugaO+v/ 741 | bmu/8OBXUp/12zvODXr7au1WEhANQzruvI/GD52MU58FawmTPn6+SO2qLoJUEuu4RF4P6F9J9DyKaAfW 742 | GQkkCBPHYN3345aSRJ5HVJNCN9T3cNBbK6fcx6xrf0ZgLCTduH5AwVhFrGJUMbYyhYCBMsKBhYyRjWqu 743 | 5Pk+ZkjDtKCp8epVY0f8ZdzYMeUXLzyGVc/ckEjgfgl4TpRoJ2uluMNQvWybwKp8D04gWLEYEerTGRpv 744 | uRjgRODkzoNqr7j7f3IkFi48w+3ovMJ2dB0alkobnSLcv3aIDGpIsu4PK+K6tF76SYZddgkmXYO1ikQh 745 | id48bilAbBfW3IKa22Cgy0D/zlwi/3hK6S+jblvceGBjjg9hwesv8+0Hf8PCUheCYFRxIsUPLF5gSZZC 746 | UsWI2lxAJhdQ11umri8g01smnQuoKYQkShFuZDE2VgoqDFgYxjF4mXSPNjXeWhza8KPWSN4Y+otrqBk5 747 | vK4+U0fbrf9+aikKTlf0k4L0qQhd512/vR+NnY6qAtgEOntir3AtLn1GpfGW8zSRqK2rcf1bgJsU/vTH 748 | 36wis2wF3cNbRiXaOz9t2rsujnp626IwjsnHQq6Ixv9XAWuE0DWUPUMx6VBIuPHPpEsp4VDyHcq+ITJx 749 | kb6o4gSWGjW0nHA8e374w4wbNo60m0AQJCqS6P0OTvkekPUJd0SY/BCl9DdAkmxsJYMYww9eu5NfTr8H 750 | xMSjuQjWEPsgJP4Zn6tirOIFlkQ5ojYfku0p09hZonlVgdYVedpW5GlqL5DtDciIW/ay9U/RUP+jptq2 751 | u18d65ZP+PlPfbX2LOACIP1cx9xhc3MrflWKgmt+8sa9zPzYT7f3Y7FTUlUAb5N+4QcagSuAVldM+0lT 752 | r+l4pXvhGUbkNJSlv79hJTV1TZQ7VjDhqrvlxf888Qins/tS29V1aqlQaMh7Qm/Go70+yaohSVY0pVjV 753 | mKSzPkF3xidX61FIOpR9h9CNhV4N2LVDbtZiQktWfPYfMoZTRx3O+1oPZGgiC9F8kt2XYKKFrN/do6jU 754 | ENT+AJV3og5ErvOWoT3jOMx+8Tkmf/3L9JWKqFMpifYdrOcQJB2CpEup1qVY41FIe+TSPr1pj1zKpZh0 755 | Cdz4MyZSkqWIut4yzR0lhpTNqsXNNb97rc27S8JoTv7PNy7XP2hbd6n3MawdDYo4DoL8NJNOf767t4f6 756 | uuz2fjR2SqoK4G1SUQAJ4KvAN0RVEMPN8x7N/fD1u679zkFnfuPzz05a/QEDoVDTl3BaxnZEhxw8N/cZ 757 | KRTeuzjrSntjkp60RzHhYB0Tj5KhJVGKSBVCkvkQr1B5lUL8YoQTWUykSMVLXztmJOOPO45jxx3CXuk2 758 | 0m4CTxxEXNzSnSR6vklctLwhIoLUpwlTn0VFByIIG0KMoeu1Gdx79r9RWNWONYaIeJIxeD4uIhgBzwgJ 759 | 1+B7DkGtS2d9gpVDUqxoSrFieB1zRma62jOuVSGr4BhVUPKumIUZNzltfN3w+T87/BMXDzVmCAqRlwT0 760 | XoHTFQIRg41CGusbtvcjslOxUzkBa6+7kFK9hzohaQTHCiXro2FEcFCO4Ig/bLXv7urrJQoHwsLvAL5g 761 | IismtIQJw1mjjjJHDdnz/vuXTQOoBUYDB6Ec4SqH1heivTpTtDy4f62rkgbo8yLtGbOiVD9qQXvNkOV9 762 | NHYUSXWXcPoCTCFEyxEaWqTiWHMtOKq4kSWZSjHqI6ex7+nn07jXOIxxsKqsuXSGELcT2Rj6iIzEOf4b 763 | 47QUwbR3MqYnTxQoViyhxC3NAon7I5REKBmljFCwSr4UkSiGNHUUGDu3h5TrQjaztNAS3vnwIWbSL96b 764 | zZlI90Y4SJWDal3/gEv2fN8+Rw/dZ59CVMKUH8e396DqorUTse7+nmInesaZeskzv5/ZXuqlYdLFFLMz 765 | KJz2+FZ7FnYldgoF0HDzxeBZiASfiH7DRR2Lb0rgQmJGAiZPpNQ5h/ylj2zR7+/s7cJGEcY4gBowPkiE 766 | 7QTtRLSFUL3cdTPue8ftC59+v++4RwP7Ay2VXVhgGfC4UV5BdZrCG/V5u+QzD3bvN3Zux/l0dJ0wp5Br 767 | 6DBxUw8kvjm+hRqNu/EkVfEiS7KhntFf+SLN534EU4nLR29y4CnWjEVNPWI72LCx52CdfcivaKfc10N2 768 | 1AiMt+GwmlrLvIcfI+jLkRRBVVldGaUD/0bECiFvoNsReh3D4oSDTSeWjRvafGs5m/lD2DL8hbzfGThW 769 | UeF54NauR25wf3f546ce17LfLb7jp0zwOl73D5FoIaD45CnWXf1ekfQJHaW+e1cWez7RGxaXgJLs3ovU 770 | pL0ICOk9fxJV1s8OrwAaJk1c3QYH6oHDgAOB4ah4wCzgIVV9TURsonEPEjePpfOCG7fYMYiafq/dQSBf 771 | A7uXU34y5eV/jYkWEkZnEvkX1B/aOPb7T3fMSi4vdCMiS4AHgKdRngGmA0vEIdcvq46FgmtnBocceG/X 772 | K9PfvXJp6aue4+47HBlaky/6fhjhaZyTGq/JoZhMmlHf/BJN55wZJ/WsI/3YLQe4hRJBajSRPwG3+BfW 773 | n/VtUdOE9fYh1dSIDcuEuTx+/aA5dX+/ABFEYith4aNP8MLf7qTNyIDgr8tucFRxgTQOLYlUPp+pfWVm 774 | Kf/4yij6e+Y7lz+aveYXVtuX8b5VlnfOLnPpBUMA4aGvTQuPGbrPs7mwOJ9SMN4UX0aipcSPrMWEb+CW 775 | 2yXya/njgiff/2zHnClW9e/A34FXFEJXXRomTaTz/Bu24hO6c7PDKwBrBMcqqrwb4bvAu4nn4AHxyJoA 776 | lonIZJTrQBcgskVufHbyBTiRyy9nPsBXDj3T7+nrvdKqnCF2MX7f/2GimYDgFv9GffIU9+Jxx7v1Xs3L 777 | X3z+pqtFeQ5YgFAYHHmzVrn+3M9z0e+u5Xt/WElWXIpdi0oNtbUPlcPwhRFtbS3DXP9oty9/Crn8O20+ 778 | 32bLgYmiCIyh5VMX0vTxD68WykGItfi5AsZayqkkke9jnU8h0SKc4CliK2Dw/D4C0qhzAbAXxjHUjRi2 779 | RnqvhiFRsQSui0YR+VXtLHriSV747Y04S5aTYR2CrxrP/R0Hk/ADqa1ZqOnaR6JM7RQvW/fYn+67fflZ 780 | o/ej9se/J+cY0gjvn1op4Km0Gzi458f0hcUeYKl1zPjIy+IWHaBMrLRaUZPGKOSiUjnQ6B2OmEOA/wDu 781 | Rfkt8C/W23GxCuwETsCGSRMBRiL8nXjufQcwBZiLEiAcClwEHAI8g/JlY+QhW0lxLdFG/vz/fVvfmb11 782 | ImaQ36yze4l/8h4Tjrvm4HNuHFUztFWCuSR7PoXYZYDFuocQJn5I5Dchnvu3TDp9xvi/fJEVpe5YmARM 783 | e5aOz1+3zu/7btNownIZ1/cZPWw4Y8sRyw8an8osW7mP25c7zuQK76On98DUAePbxv76R57XPORNuf9O 784 | OcArlIh8lzCZGAjBgcGEC3FLd+CUHsBE84llwse6owhS5wAn4edDitk0dq3aAC2XWTj1Mab/dQq5FSvo 785 | W76C/LIVZMoBo0NI2v6WxIqIwXEdJOEXTE1qidbWPBfV1jwQpGseXbHnqDmjnpse9NXVElrLHmNGcced 786 | 9/C1zgXrvCaDoi3vBrldtK/Fy9+MU34G69QRpC6OrPcOR2D5y90LLj956jXqGecs4FhiS3EOyonArKoF 787 | sH52DgUgfAj4K3APytkIvQPDTjy6DkP4L+CzxBVc30Tl/4HGXjsb0nnhxs8FG2+8GI37eDcgvF+Vs33H 788 | Oe6nh01sOL1xfwLKOOVf4BZvR00D5fRXsM7RmCjsjnzvcoHfqULDKVl4bOPPdYQIvz32gxQ7luAOGY4f 789 | hjTNX8LcIw6oqevs2Xu/q77+49oD95uw9sjvFks4YUSQTGDdNU19JwhBhch3kWgBJpyFsXmcIE2pdj/U 790 | aQYg0dOHUUshm1nzoESw5YBZU+7hxauvJVy0lCyGxkjxK6O8eF4gCb+LVHKW1qResDXJx4Pamue6hzXP 791 | G/H89FJPUz2BYxgSwjxfmfD6S4xYvHiD12KQAvCAz4CcL2oPd4u9BMmkRZK3g90PmFVfW/fxI6d8pTir 792 | d3kSOBThTGLr9rvAqs7zbtgqz+auwM6hAOCjCLcBf3BUzrOiGpQtrmcQcVENAXERvRC4ijhGfx3KVQhd 793 | ghChdA96EF6dPp399t2Xnp4eXDeeCdXUxCW1DZMvBkiA/hz4N0AcMe0/PWzikhOH7revuJ6LFtQJX7Nq 794 | GhzrjIV4HPySwLUKVhUas5sem74p2UTTUe9ES2XGXPpJ9jn3rHRfru8Btfaowds5QYhEljDhvSl2b4IQ 795 | JwgJU/0WQZz7L6r4fXnK6eRAyE6spaazh1JtKi4aWgsxhq6pj7HoK98phyvacyQTqzThLyCZeM0m/Zei 796 | ZPLlUrpmzrQz3tf+nl/8wfZl01gjFB66C+/YD9Aw/w0mzH97hTaDlADABaLc5KoSOQareiGxj8VVaxc1 797 | ZOtpjO8bxouwgWf6HSSdF9zw5p0PHUrDL08lSoHTtdptKcSaY+VuojR2FgVwLMJ9wAsoJwE9GkLXxBuo 798 | /etJ+LlWANQIYvW9CD8mdhT+CeUKYH7/ijad599AV28PNorWamsVbxGWyux9/xWgJBD9ObFJeUdk7d0t 799 | yewJpww/5Iov73u6m3L8OYrzT7ATwbrArcDngFUADVswMaUiCFngH8Dhg98T1UHm/mpMGOGWygSpxJvj 800 | +qoke3OUamvQQSa/Wyzj5wsUGurWuU9E6H32xWdmXvXDr5eiaE6QzayYfOuPez9/2Bmaq88QeC4I5D8y 801 | gdpbH2Dcsj3Yd9avNvm8e3t7CW28uqgjpqkQlb83rWvBxTVO4rlDG8ecX4yCWRBHJBBh5J8vxU94A6sX 802 | 1YwpUlzm0/7RNR3C9TdfTBAZfDcOkTpOH+3zDqJ+1Jw1l2ESofPcXTu9eGdRACMQHgTaUE5HmAqgUYKu 803 | C389eLv+KcH+CD8BTgAeQ7kM4VkUPr3nCXx539P7z/xA4KPATFX9g4hEqHLEPV+nPegDIQPUQTzFsKof 804 | SbvJV29596WTD2sc+3xgo2eA/wSOAS4HXgQYfvlZJCe0QSXHfe2m+irxU9Y1/4Y4negt6OrpBlVRkR8B 805 | X3yr7U0U4RbLsS/AcegNCwQ2otFPD+QJJHpz8ZTBW9MPnOzuI/JdglRyPTs3K9zampMXTv7z83N+d1Ps 806 | Uiz1QiJNvnspH33hhTU2r/nlafj1LYiGg66BoFbRIYp0KV3n3rTB8+ns6eba1+/mweWvti3Ir3qkZMO/ 807 | Hlw/+or7Tvr6OpugrI/s78/GJFMVJyWoMhTh/cDxxGGSF1EeQZgOlPtnWl27sA9hJ1AAFyERoq78gFjY 808 | 7iF2+q1EFU24dH0sLgSvnzQRjagso81whGuA84BZKP/V83z5joOPHcHdE75sfMc9BPgxsfD2ADcCv1PV 809 | aXtOuSwWUssohE8AnwaGAn8Nrf3m1Pd9Y/romiYcMXFljJKKQvKOA+Pu/AIDEm8Ai8/qGJwAAUIQl8Up 810 | 6rl0nb3hQvaunp5+wR0F/BA4FVinhJowxC0FhEkf6zgYMbzYOa/XN25qv+xwt78y0c8VsI55k7lvwohE 811 | X55iNr1uKyDmCuD7CDRk1m3ppKdOwFs0dvUKogCKF18vicTRSAfnKIkixqXjnDdfi+7eXob/7TNE1tYm 812 | HPcBEZkfhfY8MWK7NyLcax74ONnlqXhwj29NGuFs4BLi6eJjQDuwLzAMeB24rsY1j+UCiwjsqn6EHV4B 813 | NE6e2O/z2rPiBzgYmIRyObDcVlbk6erz4dO/of7mi+KVe+MzyxKPsZcBvcD3Ohc8/fPC5589qhgFN4MZ 814 | 4ZQD1EjcOUfkb3XpzMcyky4c4hnnbGLB3xd4A/gRyi0IfabPQ2sDZn/outWhOIX3T/0es3uXA+KAHgac 815 | jHAEcWZg//XuAO5G+QvQacUgqnSdv35Tc0VfO54dGKnHA3cCe66xkSpuOcBUnIH9pr1AuLTYdVWNkzgj 816 | 66UOGqgDLAc4pYBSpuZN3xcrB4cw6a/vkK4EvgXrnuqkf3M2Xm0yXrMwVBFXDkP4GHAA8RQ7h7IQ4RXi 817 | cOmrQCkUwazlq+mnYfJEsBgMk4E9UN4H9HTO/Qt8o3c9R3klDXvNJbQ5XEkjRlGVg4GvA8cRTxF/KWJe 818 | VSILkqpc34uBDwDfcYxODiMht88zBEe8utnP847GDt8QpNgVcNJ5BoRZKF8gTvw5H+EG4GBHBQGG1IXU 819 | T5pI1wU3UpIBW7NblW8A/6WqGqm9Jj3i0N//a9WsSwVGSLQIE72BmhJGDEsKXekRf7zkEs84dxNbB0OA 820 | 76N8EOE3QB+AJiI6zr+BhkwdDXXZ+PXTE5jVuxxFHUQvQ7gX4b+Bg4hH7jHAXsBpwG8RbkU4whGLAvW3 821 | TFzvNWhODwEUVWuInZJrCL8JI7xCCYByTXKNeb3CGyNrhkzKeqnlg2MHkesiapF1JBKFCR8nXG/9QBfw 822 | MLDOJCQArzbVb+43iCffQriLuIovSRyDbEI4EbgG4X6EScAhHkoE1N98zpv2GXkBGCzwMnGa9QgjBv3v 823 | Hto7O960fd0tF9K41zxQwTUZgGGq8lVi5Xkgyn+o5XPAy4q1Nk6JKQAvWOGLwK+B/4kiOUgEaqcfuTmP 824 | 8Q7LDp8IlP/sZO6pmwiiGMwjil4M/AQ4CWEfRa8FbrHWtguxL8CqIdXqU1hWpGzDcu6Cm3/6zjv+e+UR 825 | Q/b41Z6Z1nMd8tbL/xan+HdE+0C+wLTyUfrlFycf0RcWTzAiPcQNpn5FJM9hVDWKzcdOLwfn3fbmA/Ur 826 | S4WrHE3sD7gb5SZic7K/Z5YPHFYJWX4AGK2WCwz6jLpvZYwJIjKa2GcR/8VqJcyncauuN/f3U+D6Uqk4 827 | 23he+xpvGCHyXNxyQLDWNMC6DmriXoJr5QXkgf8FHo2PaB384HLQVQBJhKuB84GbgJ+jMhPFIuoS+1ZG 828 | A8cjfBLhJoWzPXg1LkteEyfw+pXKUwg1gUZHfXzkkdM78z0YxxmIGDT86Foa9pyH6kBVRBr0o8RCPRb4 829 | M8r3MfK6VHIpijV9FM74Mw2TzwaSGMWiXI9wNsJpwDQrG1tTsXOxwysAgK4LbqB+8kVYLKLyGHAWwjeB 830 | s4HrgI+j3EzsJV9oJCoXlhdBYFx6KID74Hu/fnSkNu1IiNN3rXFzk4kz4QxiV5EPS1Lj+gkjcosqvxLL 831 | kziEmNhhV6pfSeG0Kes/yHHjoQQIhwOdKN/GylyMusSWRBOCh/IAypMIvwQ+hHBx0NP9jJup25hLkSYW 832 | HCCOAESusy7B7+ce4HrjeQrMW/vNMOHj54qIb98UKYg8d+1Mw/nAlQqTpFJh1LCuyrvOI6D1Hoinamej 833 | /BqVKxANxbEQGFFDgFIAliM8jXIfwh+Ar6NMBC2tvdsoEIyrAC9F1r7x3pb9L/3BIeftDywEHgFeAqKW 834 | fRZRtmAwqOrhCN8A3g88DZyryv0CgS1HiCN0DfIhdJ53a2XasACN3G5xy7OB8YSI45pdskP4Dj8F6Kfr 835 | vPhGOYELMBvlEuK52pPAuxF+hfDP2E8g3wM+A5w7L7fqrNPuv/rzHeW+88A4NpiJU7yT2BI1QAi2lyOG 836 | 7MHvj/x0+cWTrv7jh4Yf9pjrmBAFjaDz/Os3LPwAZlT//14EDMKfMHofwu0IP0E4HUgjWISlQH+5Wr2b 837 | zpqNdMfMJhZqAKxjUGe9D+ZLwJeJfQ4Ar7FW1q4aQ+S7uKU3N7+NPBfrOBD7P34BnKmqN0iltrh+fQpr 838 | /EBP/r2ILZ77EQ0R6tXKt9XRScAPED7KamX2IvA94nn5O9a1256J13P4kHF0nnf9qovGvmfql/Y99RBB 839 | /hO4FrgLmOiI4T1Dx4OSUPTfEf4GHAp8DeUMlLuAAIQoKKwh/P007jk3jhI4gU/sIMyrrG6FuKuxU1gA 840 | /XSddyP111+AxE71AnALygPE04EzgXcSz7FP7/+MI4ZlxS7yxRxDQ5fQ6U/1iE06lSyRfwRWIeMl65YU 841 | OifetuDJxzJ+qpPIIm48rTA4BKZMz7k3r/vgwng+rKpTReTjwJGAhzIHeAllSSUPByyHIJxV+eQMMViV 842 | DQ8wlfB0ntXhxn2J5+PnAa1rbf48cU78K4NikK8AncQP9erDTvh4hSImDLHuWo9D/NDfgXAFCsYYFGjY 843 | kLViC+DUwOrBpXJhGI3w+crf3yCu6ZhTOVZQHkYoAnsjPM2ZwO1r7vrPR3+B7t6ezHff8fFDnCAkshYn 844 | iohcpxWRfZOON8wRU2fR/zTIBcBUlK9jeI7+zksudJ6zboerd/NVqMzst3wOJi7nvlkMEO2aJQU7lQIA 845 | 6Lo4FsD6SRPpuryZhu+vWIlwM8ofgTEI+xGPPm1AXagR7xyyZ3NLTcOJZRFfZQ/K6f/CLT2A4mDd4zHR 846 | oViN6AzyXD39jtNcx7mrbMN7gH+ivGZ7yh1kfRzrxN7o1d2ysRX5kvJiEBARSxxPfnFgo5gaYH8sZyKc 847 | Qzz/fQFlMhBXGW/oRjmGKH4IlxOHAqmc53lrbXon8CXgDRGDri4TnkVckXjM2vsOkwmcUhk1Zl3NQOr6 848 | Wwm6Ykin0xu+QXNeh70Phdg0twj7odxPPAV5DDgBpQRMQxgLlBBqgVOAFLAMBT7GgAIoBQG5fL7/sidR 849 | bcXaSqdjJfKcEPRDhaj84S/uc3JiYb699oXOeT9IGO9agQ61cWOSzoKDfup36zxs8/0vkZaZ/Zq2tnIN 850 | FwL3AzvOWohbmJ1OAfTTdf4NcOWV2CDEy6aI8kEZmIEyo79Freaz9H3iJxRyhWzJBr9ROAsMYeLUKPTf 851 | bxAj4OEVi5go0odXvHb3XUteGOaIeSfwLoQrgNdN1n8OeIF45FpMPJLmgZDYYaTEESyX2NOdAeoRmom9 852 | /3sjHEKcp95IbH48gPI1YGZgXBKa3+D51tVm6NZuor41moR2Vo6pBVgC/Bb4KdCBDVHHo6Eu2+8g6yFW 853 | Dm9SACpC5PusNUPoZy6Vfn9vKfwATqJ/N68gzATOBf6IsBTlc8CngPdUnGvnEltyEEdYfkL/1GjQEoT5 854 | Qh4RcF1DEFpH4IXI8/Zzyu1I9CpOkHatO35PSy3j64bx6yM++aRv3Dv2mXJZh158G3WTLqT3/JvXe8jN 855 | fzqboLyy/1eXWPgnoHwCYaXUWDrO2HCy0s7KLjWzMS9/jOyTddgai9E4A+WSvU7ge0eeS1dvz03EoaiQ 856 | OMQzgTgu3QU8AyzsCQrfHP23zwYNicyxCCcDRxN7jvsD4iVioVtFnDiSr/wtIi5aSQMNlVdd5ffBwfSV 857 | wL8q1srdCF2EccF/5/lvr3/ByrATL2dQYQ/iUOMMsTJdzerVPBrqYlO9s7u7/07vAdwN7L2e3fZVjrmf 858 | pcQj8wuD9/dW1N98YWVpcf0k8DPgDyiXAV0SNw+pJZ627AG0IKwAXrMqC03F/h5cwVdRYCliv85FIK1i 859 | O5v8vmvELf8TMASpswlqLgWN+xXY2AdyCrB4Q2nZ9TdPxHEVG/ebSFYiNP8F/K9a/aGIWCKh86JdMyV4 860 | p7UA1oU98DY61/rbFT0/pqu3B2Ln2VjgQeAHxELzMeKR/c+KlEUkTHlJgD+rmtsF24ZwIHH+/UHAOOIH 861 | dyywH+t2ogbEiqEHWEBsMcxEeYVY0cxAKKJx6+swiOh+m8IP4BQMJhIiV2cTOwfRij8wU1M7UOAE4Ehc 862 | DFXZ7ofEkZPEOnZ7E7ESOJW4qvI6kBdBqc9k2FhEBtqK3YywN3AZgoNyhaLLgFzlWGav+blKivS8+C46 863 | j3+QzNxWQhvhO+6+VvWrYm2jqMEET+CW7iV2MVic0lQi7xxMVB83T034A+ZM3S2foufc365xjHV/uAA3 864 | 8lAs1grE6ebfBD4CfF+Vn1Smc7us8MMupgA2hKjeqiJ3iJCvhIifqLzi91HSXg0/PPw8vvbsH8FRi7KY 865 | WIDvxaqLSIbYiTaUOLSXRkih+MRWQC+xhdBe+dkN9GG0PLAqBsTLcBcD2jcjx7wxk93obevq6gZV1ukN 866 | IEOJnYn1a236qoj8QtX+EKQEOlCO93Zy7jv9HA1BLSgllG9VrI8vIoxEuVLhiTXW3RvkUwGlfnQ9TJoI 867 | cwEsv5/zEBNa9pd9alsiNwhBHcT2f1wGdmJdh8hPxCnW6IyGTHbpuNs+i2OD2HfTv71qpU7DokpK4ozN 868 | r1Xu7WWqTBaJvcSdM8ds8j3aGdilpgDr4phjjuHOu9+8VrzruARhiMYZdoTFMq2tazrT5bov0NDcjrWC 869 | WFPpwvM2D6DyvHXdewOZkyaSX1lPdNmPt/l1aGxsZPa8uf2/OsRToLOIw2Q+sYPuamDRQMxBDKAb9vqv 870 | h8wv34dbNyJOB4aECJcA/03sI7m/4hh8A1hBbHUUWd3lyRCb/A3ASIse1ZTInPaTwy46/Nih4yVSkGgR 871 | yZ7LMOGrIGmC1HmUa/8DcDFieKp9VufFT/7qt7mw+A9B3gA6BCkqYsG6CEOAo4CJxFO9qSjfRXix/x53 872 | zpoHV07d5vdqW7LLK4CtyjNngRPBfAfKCi8dDFd9bYe9qq+++irDRo4Y+F0QUbQOcATpVuLyHPET1CeT 873 | m/o1Azhf/TB1+9UD4Ge7KXdnjwA+hXAS0Ezsj8lVXnlih2BIbJnWESuANBCmHH/mpHd9duxhjWMbrOoq 874 | IGPCNxJu6XGs00aYOMEiiV5QMSIL/2/6nfN/PvP+/UUkS+znWUbsgymyOguxCZiG8mtgCkK+P+LROWsM 875 | XHnl9r5lW50d9FGtsjXp6utF7eruytCfLSA4xlC3Md7+jeW6k2lobBn4VVSMio4h7pq8B8JwYkHMEhdN 876 | +cSWQCewCJhlVV+a0LzvzJuO+sw5irYBU4HrwOztFcuECQ8VDYinNY8LsnSvKZetCmw4QpADEA4gjsYM 877 | IXbW9gAzgEdRnh3oMGVAc0rXp7ZcQ9kdnd3GB1BlNfXpjXfobTafv4dOIH39RDwfNF6AcE7lhaCEJQfj 878 | W1fAUYjbukAgRi1aqaG2EWUbXuc5DoSB4Hj/QKM9IHIUB5ACsZP1ORF4R8Nonm2fHX+PcofGGs5BRVSI 879 | jOigJRRCUJ/Oc//f9r4125yqBVBl26NKw6SzEa+eKCrHi6BKJVOPSosFAdTil0JMjeH1D/5sIKmxUurd 880 | CrxTVN+tsbf+deKuTKWBsN+fPkajTcdWfdxZerV7QxQp+wRjZ9A74eHtfUW2G1UFUGWnoruvD2tXV+YF 881 | mRrxenI6uB/ilmzHtqtTVQBVdkp6+/qIbLRGCz9Vpb4u+7ZCllWqVKlSpUqVKlWqVKlSpUqVKlWqVKlS 882 | pUqVKlWqVKlSpUqVKlWqVKlSpUqVKlWqVKlSpUqVKlWqVKlSpUqVKlWqVKlSpUqVKlWqVKlSpUqVKlWq 883 | VKlSpUqVKlWqVKlSpUqVKlWqVKlSpUqVKlWqVKlSpUqVKluO/w/6ieQtEc3p2QAAAABJRU5ErkJggg== 884 | 885 | 886 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace CPU_Scheduling_Algorithms 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new MainForm()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("CPU Scheduling Algorithms")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("CPU Scheduling Algorithms")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1f088284-c921-4395-be46-ee2effa6cf77")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace CPU_Scheduling_Algorithms.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CPU_Scheduling_Algorithms.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap _22_hinh_anh_tuyet_dep_den_tu_bom_tan_phim_hoat_hinh_your_name_1486799919_7 { 67 | get { 68 | object obj = ResourceManager.GetObject("22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// Looks up a localized resource of type System.Drawing.Bitmap. 75 | /// 76 | internal static System.Drawing.Bitmap _99f76b3de162688defe73255366828e2 { 77 | get { 78 | object obj = ResourceManager.GetObject("99f76b3de162688defe73255366828e2", resourceCulture); 79 | return ((System.Drawing.Bitmap)(obj)); 80 | } 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\99f76b3de162688defe73255366828e2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | 125 | ..\Resources\22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 126 | 127 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | 12 | namespace CPU_Scheduling_Algorithms.Properties 13 | { 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 17 | { 18 | 19 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 20 | 21 | public static Settings Default 22 | { 23 | get 24 | { 25 | return defaultInstance; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/QueueExtension.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace CPU_Scheduling_Algorithms 8 | { 9 | public static class Extensions 10 | { 11 | public static Queue SetFirstTo(this Queue q, T value) 12 | { 13 | T[] array = q.ToArray(); 14 | array[0] = value; 15 | return new Queue(array); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Resources/22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/CPU Scheduling Algorithms/Resources/22-hinh-anh-tuyet-dep-den-tu-bom-tan-phim-hoat-hinh-your-name-1486799919-7.png -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Resources/99f76b3de162688defe73255366828e2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/CPU Scheduling Algorithms/Resources/99f76b3de162688defe73255366828e2.jpg -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/Resources/commuist.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/CPU Scheduling Algorithms/Resources/commuist.ico -------------------------------------------------------------------------------- /CPU Scheduling Algorithms/TextBoxStreamWriter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using System.Windows.Forms; 7 | using System.IO; 8 | 9 | namespace CPU_Scheduling_Algorithms 10 | { 11 | public class TextBoxWriter : TextWriter 12 | { 13 | // The control where we will write text. 14 | private Control MyControl; 15 | public TextBoxWriter(Control control) 16 | { 17 | MyControl = control; 18 | } 19 | 20 | public override void Write(char value) 21 | { 22 | MyControl.Text += value; 23 | } 24 | 25 | public override void Write(string value) 26 | { 27 | MyControl.Text += value; 28 | } 29 | 30 | public override Encoding Encoding 31 | { 32 | get { return Encoding.Unicode; } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Vũ Đạt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Pics/FCFS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/FCFS.jpg -------------------------------------------------------------------------------- /Pics/Priority_nonPr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/Priority_nonPr.jpg -------------------------------------------------------------------------------- /Pics/Priority_pr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/Priority_pr.jpg -------------------------------------------------------------------------------- /Pics/RR.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/RR.jpg -------------------------------------------------------------------------------- /Pics/SJF_nonPr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/SJF_nonPr.jpg -------------------------------------------------------------------------------- /Pics/SJF_pr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat911zz/CPU-Scheduling-Algorithms/c51357b0800167aec665b5d94982267066b5a2aa/Pics/SJF_pr.jpg -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CPU-Scheduling-Algorithms 2 | *Chương trình minh họa các giải thuật định thời CPU*
3 | *CPU Scheduling Algorithms Visualization*
4 | Bao gồm các thuật toán sau: 5 | - FCFS 6 | - SJF 7 | - SRTF 8 | - Priority độc quyền (non-preemptive) 9 | - Priority không độc quyền (preemptive) 10 | - Round Robin 11 | 12 | 13 | ## Các hình ảnh minh họa cho chương trình 14 | 15 | ![image 1](https://github.com/dat911zz/CPU-Scheduling-Algorithms/blob/master/Pics/FCFS.jpg)
16 | ![image 2](https://github.com/dat911zz/CPU-Scheduling-Algorithms/blob/master/Pics/SJF_nonPr.jpg)
17 | ![image 3](https://github.com/dat911zz/CPU-Scheduling-Algorithms/blob/master/Pics/SJF_pr.jpg)
18 | ![image 4](https://github.com/dat911zz/CPU-Scheduling-Algorithms/blob/master/Pics/Priority_nonPr.jpg)
19 | ![image 5](https://github.com/dat911zz/CPU-Scheduling-Algorithms/blob/master/Pics/Priority_pr.jpg)
20 | ![image 6](https://github.com/dat911zz/CPU-Scheduling-Algorithms/blob/master/Pics/RR.jpg)
21 | 22 | ## Contributing 23 | - Mọi đóng góp để phát triển source code đều dc chào đón. Để thực hiện các thay đổi code, hãy tạo 1 Issue để thảo luận về điều bạn muốn thay đổi trong project này 24 | - Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. 25 | ## License 26 | [MIT](https://choosealicense.com/licenses/mit/) 27 | 28 | 29 | ---- 30 | ![Count](https://komarev.com/ghpvc/?username=dat911zz) 31 | --------------------------------------------------------------------------------