IE11 is no longer supported
We do not support Internet Explorer 11 and below. Please use a different web browser.

ID:

16399

Comments:

37

Date:

February 2nd 2018

Monthly Studio Report: January 2018

Monthly Studio Report: January 2018

Greetings Citizens!



Welcome to the Monthly Studio Report, where we collect updates from our various studios around the world to show you what they’ve been working on this past month. In the rush up to the holidays, the entire company was focused on accomplishing two major tasks: pushing Star Citizen 3.0 to the Live Servers and polishing up work on the Vertical Slice, which featured an hour of gameplay from Squadron 42. Afterwards, everybody broke for some much needed rest before coming back to hit the New Year running. With that said, let’s get to it.

CIG Los Angeles

CLOUD IMPERIUM: LOS ANGELES



SHIPS


The team kept forward momentum on a handful of vehicles throughout the month of January. After the Art Team completed art on the Anvil Terrapin and Tumbril Cyclone, they worked on adjustments with the Tech Design Team who are now implementing the tech set-up. The Consolidated Outland Mustang update is in Greybox with the Art Team, while the Tech Design Team is prepping it for a Whitebox review. The Anvil Hurricane is close to wrapping Greybox on the art side, which will then be passed over to the Tech Design Team for them to work their magic on the Greybox tech set-up. Lastly, the Tech Art Team focused on getting started with their Flight Prep passes on the Anvil Terrapin and MISC Razor.

As far as vehicle features are concerned, they completed another successful sprint in the month of January with a focus on making improvements to game performance by optimizing vehicles and vehicle gameplay. They also made great progress with this endeavor by converting the VehcileWeaponEMP and gimbals to the Item 2.0 versions, and are in the ongoing process with DataBank Component optimizations. They also reduced the time complexity when adding timers which where just removed, and made some components use time sliced updates instead of the entity timer, both of which make UpdateTimers more efficient and improve game performance. Lastly, the team filled out their workload by resolving a large assortment of vehicle tasks and bugs, including implementing some new and improved character animations into ship bunk-beds.


NARRATIVE


The Narrative Team spent the month looking to the new year and outlining potential needs for the quarterly PU releases. Part of this work included a breakdown of the proposed locations to understand what kind of NPC characters would be needed to not only make the areas feel populated, but also sell the particular story of that locale. In aid of this, they were able to meet with the Directors for a two-day summit in LA to review the characters in 3.0 and examine potential goals for the upcoming releases.


CHARACTERS


January got off to a great start with work completed on the various Legacy armor variants for the Marine and Outlaw characters. They also are working through visual development for different types of armor featured in Squadron 42 for enemies like the Shipjackers and the OMC, as well as Navy armor types. They also made progress on the Hurston and Olisar Clothing Collections, which will debut later this fall.

The new Gameplay Team, consisting of a mix of engineers, tech designers and QA, completed their first sprint in month of January. This sprint focused on the Character Customization. Some highlights of what they completed in January include: the implementation of basic character customization to select different heads, hair and eye color, setting up customization features to be selectable off a grid, and adding interaction highlights to the player character model.


TECH CONTENT


The Tech Content Team, which crosses over into many different global strike teams, continued to crank out improvements to tools, skin character costumes, and provide support on the weapon and ship pipelines. They also worked on tools for the Procedural Team, such as the Procedural City Editor and the Procedural Layout System. The team continued to work on the LiveLink Tool, Character Tool, Max/Maya 2018 upgrade, a skinning GUI, CGA Checker, CIG Tools Installer, Skeleton Alias health checks, and a Motionbuilder version of the Asset Browser.

Skinning continued on the Vanduul head, ship landing gear (such as the Sabre Raven and the Aegis Reclaimer), weapons and character costumes for Hurston and Levski. On the MoCap side, tracking and solving has continued through the vast amount of Player Data.

And as with all teams, the Tech Content Team handled their fair share of bug fixes this month, and they stand ready to tackle whatever ugly bugs come their way in the upcoming month.

CIG Austin

CLOUD IMPERIUM: AUSTIN



DESIGN


The Design Team identified a few fixes that were needed for the 3.0.1 patch. Beyond that, they fixed a few things that fell off the 3.0 table while the Directors worked on the schedule for Q1. The ATX Designers will soon begin work on the Service Beacon system, Economy updates, and Mission Givers.

With the Service Beacons, the aim is to have “Escort,” “Refueling,” and “Repair” live in the 3.2 patch. Once Service Beacons are implemented, players will be able to request assistance from other players in the system (and eventually NPCs). When Contracts are accepted, both players will need to hold up their end of the bargain or risk a hit to their reputation. Once the contract terms are fulfilled, payment and reputation gains (or losses) will be automatically paid out.

The team is working to fix Economy-related bugs now that 3.0 has provided a first iteration of dynamic pricing, including the identification and fixing of system exploits. There were some properties hard coded into the backend service that the team has exposed to design, enabling them to better predict and tune the economic experience.

Finally, the team found an analytics reporting bug that should be fixed in the 3.0.1 patch, and will give insight into data that will allow finer tuning and balancing throughout the entire game. Data on player transactions, wallet status, deaths, mission completion, and more will enable the team to balance items better, along with player/ship health, improving the overall gameplay experience.


ART


The Constellation Phoenix went into the Greybox phase (high-poly modeling stage) with the exterior and interior being fleshed out, the geo being refined, tweaks being made to the lighting, and incorporating features like fishtanks, a hot tub, wallscreens and a bar area. The Anvil F8 Lightning has made it through the Whitebox phase, with design ready to take over and start implementing the ship into the game.


BACKEND SERVICES


The Backend Team has been working on the refactor of the “Diffusion” services. The new architecture implements various patterns that allow the services to be easily scaled, reliable and available. All the current services will be replaced with pools of workers and backing services, that will provide short-term data caching.

The GIM (General Instance Manager) has been broken up into multiple services such as Instance Manager, Matchmaking Service, Lobby Service, and Entitlement Processor. The current Persistence service was also separated into the Item Cache, Account Cache, Player Variables Cache and now has multiple external memory caches, queues and workers. This will help distribute the load when moving player data through the system.

The new system is highly distributed, think of it in terms of a C++ program where you take almost every class and put them into their own process. If any single service fails, there are multiple instances already running to pick up the slack. Given that workers do not hold any state/data, players shouldn’t feel any disruption of game services.


ANIMATION


The Ship Animation Team worked on four new vehicles outlined for the 3.1 release: the MISC Razor, the Aegis Reclaimer, the Anvil Terrapin, and the Tumbril Cyclone. Each present their own unique challenges. The Aegis Reclaimer has a very sophisticated landing and VTOL system, requiring unique rigging and technical set up. The team is also in the planning stages of new features and ships to be released throughout 2018, including major updates planned for the cockpit experience across all ship types. In addition, they have been resolving bugs that appeared in the 3.0 release and refining the overall gameplay experience.

PU Animation finished all the initial work supporting the current usables in game. All usables assets related to Squadron 42 have been packaged up and handed off to the UK animations team to finish off. The ATX team is now focused on Mission Givers and NPC Secondary Sub-Activity (SSA) characters. An NPC SSA character is simply an NPC that you can approach and interact with, such as bartenders, shopkeepers, and their ilk.


OPERATIONS


The DevOps Team spent the month collecting stats from 3.0 live play sessions to help the performance teams with optimizations. They’re also expanding the capacity of the central build system to allow for more work-in-progress streams, which will help the various dev teams in their march toward quarterly releases.

The holidays were busy for ATX QA, as they provided live support and testing for any hotfixes that were needed on 3.0 over the break, but this is the time of year when the team gets a moment to take stock of what went well, what could have gone better, and what steps are needed to improve and adapt going forward. The Austin QA team worked with their international cohorts to line up plans for testing based on the new production schedules, and updated QA documentation. This also marked a full-time return to Game-Dev. The team completed a full system smoke of Game-Dev to evaluate the current state of the branch and began clearing out any backlogged bugs and regression from the 3.0 cycle and holiday season. They’re excited to start spending more time testing new mission debug and development tools. The Squadron 42 QA testers were happy that the community got to see a glimpse of the game just before the holiday season, but new content is pouring in every day from development, keeping them incredibly busy.

As 3.0 has been published, the Player Relations Team has been speeding right along with helping players with knock-on issues. The team was very proud to rotate out during the holidays to get everyone the help they needed, and are excited to continue work on projects such as a proper knowledge base and other mechanisms that enable players help themselves. The 3.0 testing cycle was a long yet amazing journey, and the QA team couldn’t have gotten it done without the stalwart efforts of Evocati and PTU testers. They would like to encourage everyone to continue using the Issue Council, while they turn their focus towards a quick 3.0.1 patch and the much anticipated 3.1 in late March to address fixes and performance issues.

Foundry 42 UK

FOUNDRY 42: UK



ENGINEERING


After the hectic run in to the holidays, this month allowed the team time to do some much needed housekeeping and organization. They spent a lot of effort working on performance optimizations to help improve the player’s experience. There isn’t one magic bullet to resolve this, rather lots of small improvements that will add up to a bigger improvement. Some of that is moving more code over from the old update functions, which run on the main thread, to the batched update model allowing them to use all the threads. Another improvement they made was reducing the work the animation system does by finding all the areas where a character’s skeleton is updated unnecessarily.

The team made progress on object container streaming, which allows large areas of the game like a planet or space station to load in the background as the player approaches it. This will help performance, decrease load times, and reduce the amount of memory required to run the game. One of the major challenges is making all the existing entity components able to initialize in a background thread safely. The process involves taking a lot of legacy code and converting it over, and there’s a lot of legacy components. It also means finally removing all Lua from the game and converting it into C++.

The Engineering Team has also been doing a pass on the usables, and especially how they get set up by the designers/artists/animators. After implementing a large number of them, they’ve targeted several areas where the implementation can be improved and easier to debug when things go wrong. It will also make them more modular. They can even take some of the functionality outside of the usable tech to use in other areas of the game.


GRAPHICS


This month, the Graphics Team worked through fixes for issues that came to light during the release of 3.0 and the Squadron 42 Vertical Slice. Many of these fixes related to the render-to-texture system, which is heavily used for the UI. These fixes should improve the resolution and anti-aliasing. The other major push was to improve render profiling and video memory tools to assist the Art and Graphics team to help optimize the game. Their main focus has been ensuring they can report a variety of statistics that are specific to each development team, for example, the number of polygons used for characters or the total texture memory used by the prop team. This helps the large and dispersed Art Teams understand how they’re affecting performance and therefore aid in improving it. They also did some optimization work, and made a big improvement to the ‘depth-pass’ algorithm. Now, each frame applies a heuristic to every mesh to determine which will make the best ‘occluders’ that can be rendered first to obscure any other meshes to reduce ‘overdraw’ (the process of re-rendering the same pixel multiple times).

In parallel to the UI fixes and optimization, the team has been doing R&D work on several new shaders, which they’re about to start full production on in February. These new shaders will help unify and simplify the art-workflow across various teams, allow more dynamic shaders that can correctly react to different environmental conditions (dirt, sand, mud), and apply wear/tear consistently between asset types with convincing visuals. These shaders will also enable several new features for the art team that should result in more interesting visuals on large man-made structures and more physically based blending of many materials on natural/organic assets.


UI


January allowed the UI Team time to step back and assess what was achieved at the end of last year. MFD/Visor displays are a feature that needs additional work to bring them to the quality level the game strives for. The UI Visual Team has been set up to work closely with the Graphics Team in order to polish this feature for 3.1.

The team is also heavily focused on the PMA/VMA apps. With the release of the two apps in 3.0, they have been able to gather both internal and external feedback in order to ensure they are heading in the correct direction. A sprint team has been set up with the initial focus on bugfxing the VMA to ensure its functionality before additional features are implemented.


SHIPS


The Ship team pushed forward on a number of ships that are slated to be in the 3.1 patch including the Reclaimer and Razor as well as ones slated for future releases like the Hammerhead, vicious Vanduul Blade fighter and Origin’s luxurious 600i. Artists worked to lock down the interior and exterior layouts and begin to work out the various materials needed to bring the ships to life. It’s not only new ships on the docket, some of the classics are in the process of being updated to the current ship spec, one of which, the Aegis Avenger, was prominently featured in last year’s Vertical Slice preview.


VFX


The Anvil Terrapin is the first ship of the year to get the VFX treatment, as they prepare it for flight ready status. They’re working on effects for thrusters, damage and a deathmask that’s using some new debris assets.

On the weapons front, the Gemini R97 ballistic shotgun had its VFX first Pass, including muzzle, tracer and impact effects. There’s also been a heavy focus on planning and schedules for the year ahead, and making sure the VFX tasks are aligned with everyone else’s.


ENVIRONMENT


The team continued developing the Utilitarian Hangar Common Elements. Now that they have established a robust set of metrics that will work in many different locations, the hangars went to the Concept team for visual refinement. The shape language and scale reads have matured significantly from the initial kickoff concepts, which means that the hangars are working as enormous, functional and impressive structures much better than expected. The next stage is Greybox, where they will dial in details, materials, and lighting reads.

Elsewhere, the team made significant leaps with the Procedural Layout tool functionality being worked on by our Tech Art Team. The tool has matured to where it’s being used by the whole team to generate many varied and interesting rest stop interior layouts. It’s providing a ‘tailored randomness’ that allows the team to both direct a layout’s flow from an art and design perspective but also introduce enough unpredictability that layouts can be truly varied and different every time. As the team works to build more of the assets needed, the potential variety in layouts only gets more and more diverse.


DERBY ANIMATION


Following some initial organization and documentation work, the fledgling Gameplay Story team got stuck into a couple of scenes that were chosen to act as a test bed. They enjoyed the technical & animation challenges involved and are looking forward to working more closely with Design to get these scenes working correctly in game. They also started work on scenes that are more critical to Squadron 42’s story and are looking to expand and develop the GP Story team going forward.


AUDIO


Ships: The Audio Department have been supporting the SFX requirements for the Anvil Terrapin and Aegis Reclaimer including thrusters, mechanical elements, ambience and UI.

Outposts / Rest Stops: The Audio Department completed a polish pass on outpost ambiences and SFX to ensure that audio responds to power level. They are currently prototyping audio responding to weather e.g. a storm outside an outpost could cause the structure to bow, bend and rattle. They supported the procedural tech used to build the rest stop stations actioning SFX passes on the rest stop building blocks to ensure any and all configurations meet the minimum quality bar. Future polish passes are planned.

Weapons: The Audio Department has had a big push to improve the audio response of weapons in different planetside locations by fleshing out weapon tails and reflections for both the 1st and 3rd person perspectives.

Music: They are also in the processes of drafting a composition request for a new Star Marine music suite, which will provide unique support for all game modes and dynamically react to gameplay.

Code: The Audio Code Team has been busy on an optimization pass to achieve better overall performance by improving audio bank loading and reducing the Wwise object and zone object count in the audio system. In addition, the team has been working on improvements to our audio dev tech.

Foundry 42 DE

FOUNDRY 42: DE



VFX


The VFX Team continued their work on the volumetric cosmic storm known as the Coil, depicted in the Squadron 42 Vertical Slice at the end of last year. More R&D went into how to create an interior series of pathways and spaces while keeping in line with the approved concepts and art direction of the overall Coil. They attempted this using a third-party program called Houdini, so a portion of their time was spent on developing, optimizing and integrating the new pipeline since the software is not natively supported in the engine.


AI


Over the past several months, the AI Team has been dividing their time between Squadron 42 and the Star Citizen PU. The Squadron 42 Vertical Slice unveiled the initial integration of FPS combat behaviors that allowed the player to combat several enemy NPCs while in the Gainey Base. To implement these behaviors, the team refactored all the cover movement transitions inside the movement system to include an improved path analysis by the AI, so that the system will be able to anticipate which type of animations should be played further in advance, allowing for a smoother transition from locomotion sets and the ability to call special transitional animations when needed.


LIGHTING


While continuing ongoing work for Squadron 42, the Lighting Team entered the new year by training a new team member who will help finalize our legacy lighting conversion process to the new volumetric fog technology and also build new content for the PU. Initially, this will involve building a lighting language for the upcoming Rest Stop station. Since the Rest Stops won’t always be hand-built, the team needs to build processes to automatically place lighting in an environment that feels believable, isn’t too taxing on performance, and bug free.


WEAPONS


The Weapons Team began the year by examining benchmarks that need to be hit and adjusting production accordingly. Work continued on the Torral Aggregate Kahix Missile Launcher, and needed adjustments made to the Gemini ballistic pistol after it was renamed the LH86. Time was also spent on two Klaus & Werner weapons; the initial rig was set up for the Demeco light energy machine gun and block out completed for the Raiden heavy machine gun. For ship weapons, block out work progressed on a Laser Beam from Trident Attack Systems and Distortion Repeater from Associated Science & Development.


CINEMATICS


In January, the Cinematics Team went back to work on on several sequences of Squadron 42, including a previs and mockup for an episode of a certain spectrum show that players will be able to catch in the game. Like many of the other departments, they kicked off 2018 by tackling production tasks to outline their goals for the year. Aside from general workflow, they prepped a list of tech requirements and detailed additions to the trackview system that would help incorporate Actor Actions.


TECH ART


The Tech Art team continued developing tools and system to increase developer efficiency and performance. They continued developing the Procedural tools to expedite processes like Procedural Layout and submitted a first release version of the Procedural Layout Editor while also figuring out a way to directly integrate the startup tool directly into the Sandbox interface. There was also a Tech Art review on the Anvil Terrapin which included a Flight Prep pass. Like a majority of the other teams, those first few weeks of the new year provided an opportunity to start outlining plans for future releases. The Tech Art team broke down the ships in the upcoming 3.1 release and continued working through the ship bug backlog.


ENGINE


With the existing memory tracking tools became too costly when recording and processing extended sessions of both the server and client, so the team started working on a new more lightweight memory tracking system that could support the most important features in order to track memory leaks and invalid allocations without generating gigabytes of logs to analyze. This new system has already been used to optimize memory usage on the server for 3.0 and to track leaks. They also implemented Python scripts to analyze the resulting log files as well as compute a difference for two separate log files to see how memory allocation behavior changed over time in various parts of the code base. This allows the team to find leaks as well as trim excessive memory usage.

The team fixed several issues related to how data is collected in the crash database Sentry, so they could see how many different clients are affected by a certain crash. They also fixed an issue that caused bugs to be categorized as GPU crashes incorrectly due to stale files being left on the client when previously submitting a real GPU crash.

One of the team’s newest engineers started working on an ambient occlusion solution which is a more accurate, horizon based SSDO. Previously, the shader only sampled the end of occlusion test rays across the surface hemisphere, but with the rework, it now also takes samples along each ray in order to better detect occlusion in-between, to prevent undersampling. The team’s in the final process of optimizing the shader since the first pass implementation is fairly expensive due to the number of samples required.


SYSTEM DESIGN


To kick off the new year, the System Design Team has been looking at priorities and goals for the upcoming quarterly releases ensuring that they have sprints scheduled to achieve their outlined goals. In addition, there has been a push to start clearing out the backlog of tasks and bugfixes remaining from 3.0. This includes things like fixing the transition between walking and entering a usable animation, missions autocompleting in the editor, and NPCs staring too long at points of interest. They were also able to fix hatches featured in Squadron 42’s Gainey base so that they properly close. While for the mission givers in the PU, the fixed bugs relating to certain lines not triggering after certain player choices.

Currently in progress are several improvements to NPC behaviours and usables, as well as additional tweaks to the Conversation System and a cleanup of the player’s HUD. Something else many players might appreciate is that the team is looking at making sure that airlocks will open automatically when approached from the direction they are currently pressurized for.


QA


Although most mission testing is primarily done out of the UK’s QA department, the DE team tackled their first taste of mission testing with both Eckhart and Ruto. They identified any issues that would hinder accessibility to these two mission givers and the system designers worked with QA to quickly shelf changes for these NPCs, so they could pull the shelved changes down from perforce and test to see how things were working before the changes were checked into a build. Any issues encountered were brought up, identified and addressed, and the process repeated. This approach allowed for a much more efficient iteration time without potentially jeopardizing the build’s integrity for other departments. QA additionally provided feedback on how these two mission givers would function when more than one player is involved.

The QA Team also focused on testing and regression for the most recent 3.0 build, continuing to provide support for Frankfurt development team as needed. The Subsumption Editor continues to be part of their everyday testing, as well as the Lumberyard Editor, and anything related to procedural planet tech.

As the team approached the holiday event last year, the DE QA Team was brought into the S42 testing loop to attend regular review meetings discussing the progress of S42. This ensured that the developers had QA members available to provide support for any specific feature at any time, which made the turnaround time for catching issues relevant to these features quicker. This approach enabled QA to quickly test changes, write up JIRA reports for issues if needed, and send them to the appropriate devs to be fixed until the team eventually got to a build that is in the best possible playable and visual state.

Turbulent

TURBULENT



WELCOME TO STAR CITIZEN


On January 25th, the team unveiled a new section of robertsspaceindustries.com designed specifically for new players. A considerable change from the the old “About the Game” experience, these pages are rich in media and informative information about the game and utilizes a new ‘three pillars’ navigation concept in the platform that can be leveraged to separate the three brands.

Leading up to the launch, the month was filled with major bug fixes, additional design tweaks and content changes. Turbulent will continue to introduce fixes to the platform, squash any new bugs reported by uses as well as revisit the color and contrast of text across the board while testing more diligently for readability.

The next round of additions to the site will include a more unified shopping experience and a better experience for account management.


ROADMAP


The Roadmap was published along with the introduction of the new Star Citizen site. This new production schedule provides the community with projections for the Persistent Universe’s quarterly release schedule, allowing the backers to see what the status of various features and where they fall in the timeline. Mobile views were introduced this month as well as a new expand / collapse all button. In the last four weeks, developers also created scrolling unique to the release (column), making the Roadmap board easier to use.

Most notably, the Roadmap is directly linked into CIG’s internal production software called JIRA. The number of tasks on a feature card is a direct reflection of the work allocated out to developers. A fetch of new data can be deployed within a few minutes. This new feature not only makes the project’s development more transparent to the community but also vastly reduces the time it would take for CIG producers to prepare the data, all around increasing efficiency.


SPECTRUM


The feature work on custom roles is now complete and has moved on to a bug testing phase with the hope of headlining the next spectrum release. Custom roles are extremely important to the community and give you much more flexibility in managing your organizations.

The feature work on custom emojis is almost complete, with only a few small tasks left. This will allow you to upload your own emoji sheets, giving you and your org the capability to communicate in your own unique way.

Front end work on the block / ignore feature began this month, and there is a solid, well-tested design for how this should work. Going beyond a simple block button, the plan is to create a full block / ignore manager to give users full control over the feature.

Community

Community



Last week saw the launch of the newly redesigned website, which is now organized into three sections providing easier navigation for veterans and rookies alike. The Star Citizen section, with information on the game and its lore, the Squadron 42 section with updates on the development of the cinematic single-player campaign, and the RSI section which hosts not only the community hub and Spectrum, but also the new Roadmap with insight into Star Citizen’s development process. The Roadmap feeds directly from CIG’s internal task managing tool, JIRA, and displays tasks, features and optimizations planned to rollout during the year. With this new level of transparency, the Roadmap should give everyone an idea of where the team wants to go with the next development milestones.

Check it out, if you haven’t already, and let the team know what you think in the feedback thread.

On the ATV front, January welcomed the return of Ship Shape, a deep-dive into ship design and development, while also shining a light on the magnificent people involved in the ship design process. Last week’s ATV focused on Squadron 42, taking a detailed look at the mysterious Coil and the challenges the developers overcame to bring this exciting monstrosity into the game. ATV will keep highlighting bits and pieces of the Squadron 42 development without spoiling the truly unique and cinematic storyline, so be in the know and enlist for the official newsletter here.

New to the show portfolio since the beginning of January is the weekly live show “Reverse the Verse” that recaps the events of the week and answering the questions submitted by our community. The stream has so far featured Global Head of Production for Star Citizen and Squadron 42 Erin Roberts, Composer for Squadron 42 Geoff Zanelli, and Game Director Chris Roberts. If you have a question you want to see answered in an upcoming show, head to Spectrum, track down the appropriate thread in the announcement section and let the team know.

While it is still only January, the Community team is knee-deep in planning this year’s event schedule. They can’t disclose a lot yet but … prepare your space suits, Austin! CitizenCon 2948 will be happening in Texas, and it is shaping up to be the biggest CitizenCon so far. Be sure to regularly check the events page for more info and news on where you can meet the team throughout the year!

Lastly, time to shine a light on what’s to come in the near future: Community is in the process of putting together a stellar FanKit which will allow you to share your love for Star Citizen across the internet. The fandom page will become a handy guide and resource for fans of Star Citizen, answering the most frequently asked questions related to fan creations regarding branding rights and permissions.

And with that, see you in the ’verse!

Conclusion

WE’LL SEE YOU NEXT MONTH



End Transmission

Part of

Monthly Reports

More in this series

Comments
037.0

Feedback

Loading Additional Feedback