text:
#include <algorithm>
#include <cmath>

#include <rj_geometry/line.hpp>
#include <rj_constants/constants.hpp>
#include <rj_param_utils/param.hpp>
#include <rj_vision_filter/ball/ball_bounce.hpp>
#include <rj_vision_filter/params.hpp>

namespace vision_filter {
DEFINE_NS_FLOAT64(kVisionFilterParamModule, vision_filter::bounce, robot_body_lin_dampen, 0.9,
                  "Linear velocity dampen for bouncing off the circular shell. "
                  "1 means 100% of the velocity is kept after collision. 0 "
                  "means 0% of the velocity is kept after collision.")
DEFINE_NS_FLOAT64(kVisionFilterParamModule, vision_filter::bounce, robot_mouth_lin_dampen, 0.3,
                  "Linear velocity dampen for bouncing off the front mouth. "
                  "1 means 100% of the velocity is kept after collision. 0 "
                  "means 0% of the velocity is kept after collision.")
DEFINE_NS_FLOAT64(kVisionFilterParamModule, vision_filter::bounce, robot_body_angle_dampen, 0.0,
                  "Reflect angle dampen for bouncing off the circular shell. "
                  "1 means 100% of the velocity is kept after collision. 0 "
                  "means 0% of the velocity is kept after collision.")
DEFINE_NS_FLOAT64(kVisionFilterParamModule, vision_filter::bounce, robot_mouth_angle_dampen, 0.0,
                  "Reflect angle dampen for bouncing off the front mouth. "
                  "1 means 100% of the velocity is kept after collision. 0 "
                  "means 0% of the velocity is kept after collision.")
using vision_filter::bounce::PARAM_robot_body_angle_dampen;
using vision_filter::bounce::PARAM_robot_body_lin_dampen;
using vision_filter::bounce::PARAM_robot_mouth_angle_dampen;
using vision_filter::bounce::PARAM_robot_mouth_lin_dampen;

/**
 * Note 0 case returns -1 instead of 0
 * Forced to check with small epsilon since we actually care about 0 being
 * represented correctly as -1. It's ok if the 1.0e-10 doesn't return -1 or 1.
 *
 * This is mostly so the simple test case have the correct behavior
 * If it lands on the 1.0e-10 boundary the code reacts as if there was no hit
 */
int sign(double val) { return static_cast<int>(1.0e-10 < val) - static_cast<int>(val <= 1.0e-10); }

bool BallBounce::calc_ball_bounce(const KalmanBall& ball,
                                  const std::vector<WorldRobot>& yellow_robots,
                                  const std::vector<WorldRobot>& blue_robots,
                                  rj_geometry::Point& out_new_vel) {
    // Figures out if there is an intersection and what the resulting velocity
    // should be
    auto find_end_vel = [&ball, &out_new_vel](const std::vector<WorldRobot>& robots) {
        for (const WorldRobot& robot : robots) {
            if (!robot.get_is_valid()) {
                continue;
            }

            // Make sure ball is intersecting next frame
            if (!ball_in_robot(ball, robot)) {
                continue;
            }

            std::vector<rj_geometry::Point> intersect_pts =
                possible_ball_intersection_pts(ball, robot);

            // Doesn't intersect
            if (intersect_pts.empty()) {
                continue;
            }

            // Tangent to robot, assuming no interaction
            if (intersect_pts.size() == 1) {
                continue;
            }

            // intersect_pts.size() == 2

            //                        _____
            //                       /     \
            //                      | Robot |
            //                       \_____/
            //                          B
            //                         /|\
            //                        / | \
            //                       /  |  \
            //                      /   |   \
            //                     /    D    \
            //                    A           C
            // Ball moves from A->B
            // Bounces off the robot
            // Moves from B->C
            // Line B<->D is the line of reflection
            //
            //
            // Line B<->D goes from the center of the robot through the point of
            // intersection between the robot and the ball Since the robot is
            // round (with a flat mouth), any time it hits the robot, we can
            // assume that the it will reflect as if
            //   it hit a flat surface

            // We want to make sure that the ball is never inside the robot when
            // doing this math, so we go back in time This doesn't affect the
            // results since we are just doing vectors
            rj_geometry::Point ball_pos_safe_pt = ball.get_pos() - ball.get_vel().normalized();

            // Find the closest point
            // AKA: the first point the ball will hit off the robot
            // May actually be slightly off because we add the ball radius to
            // the calculation circle Does not account for the mouth just yet
            rj_geometry::Point closest_intersect_pt = intersect_pts.at(0);
            if ((ball_pos_safe_pt - closest_intersect_pt).magsq() >
                (ball_pos_safe_pt - intersect_pts.at(1)).magsq()) {
                closest_intersect_pt = intersect_pts.at(1);
            }

            // This is super easy, just check intersection with the mouth line
            // If the first point in the circle shell intersect is in the mouth
            // angle range Use the line intersect point instead If there is no
            // line intersect point (within that angle range) then the ball is
            // moving across the mouth of the robot Note: No intersection across
            // mouth is not accounted for
            rj_geometry::Line intersect_line =
                rj_geometry::Line(intersect_pts.at(0), intersect_pts.at(1));
            rj_geometry::Point mouth_half_unit_vec =
                rj_geometry::Point(0, 1).rotate(robot.get_theta());
            rj_geometry::Point mouth_center_pos =
                rj_geometry::Point(kRobotMouthRadius, 0).rotate(robot.get_theta()) + robot.get_pos();
            rj_geometry::Line mouth_line = rj_geometry::Line(mouth_center_pos + mouth_half_unit_vec,
                                                           mouth_center_pos - mouth_half_unit_vec);

            rj_geometry::Point mouth_intersect;
            bool intersects = intersect_line.intersects(mouth_line, &mouth_intersect);

            // The mouth is a chord across the circle.
            // We have the distance of the chord to the center of the circle
            // We also have the radius of the robot
            const double chord_half_length = pow(kRobotMouthWidth / 2.0, 2);
            bool did_hit_mouth = false;

            // If the line intersect is inside the mouth chord
            if (intersects && (mouth_intersect - mouth_center_pos).magsq() < chord_half_length) {
                closest_intersect_pt = mouth_intersect;
                did_hit_mouth = true;
            }

            //                          R
            //                        _____
            //                          B
            //                         /|\
            //                        / | \
            //                       /  |  \
            //                      /   |   \
            //                     /    |    \
            //                    A-----D-----C

            // B->A
            rj_geometry::Point intersect_pt_ball_vector = ball_pos_safe_pt - closest_intersect_pt;
            // B->D (Officially R->B, but B->D makes more sense visually)
            rj_geometry::Point robot_intersect_pt_vector = closest_intersect_pt - robot.get_pos();
            rj_geometry::Point robot_intersect_pt_unit_vector =
                robot_intersect_pt_vector.normalized();

            // If it hit the mouth, the reflection line is pointing straight out
            if (did_hit_mouth) {
                robot_intersect_pt_vector = rj_geometry::Point(1, 0).rotate(robot.get_theta());
                robot_intersect_pt_unit_vector = robot_intersect_pt_vector;
            }

            // Project B->A vector onto B->D
            // This is so we can get D->A and D->C later
            double projection_mag =
                intersect_pt_ball_vector.normalized().dot(robot_intersect_pt_unit_vector);
            rj_geometry::Point projection = projection_mag * robot_intersect_pt_unit_vector;

            // A->D, which is the same as D->C
            rj_geometry::Point projection_diff = projection - intersect_pt_ball_vector;

            rj_geometry::Point intersect_pt_reflection_vector = projection + projection_diff;
            rj_geometry::Point intersect_pt_reflection_unit_vector =
                intersect_pt_reflection_vector.normalized();

            // Scale magnitude of velocity by a percentage
            double dampen_lin_coeff = PARAM_robot_body_lin_dampen;
            double dampen_angle_coeff = PARAM_robot_body_angle_dampen;

            if (did_hit_mouth) {
                dampen_lin_coeff = PARAM_robot_mouth_lin_dampen;
                dampen_angle_coeff = PARAM_robot_mouth_angle_dampen;
            }

            //                   C------D
            //                    \     |
            //                F    \    |
            //                  \   \   |
            //                    \  \  |
            //                      \ \ |
            //                        \\|              | y+
            //                          B              |
            //                                         |____ x+
            //
            // Note: Letters correspond to ones above
            //
            // We are trying to increase the angle CBD more when angle CBD is
            // large When angle CBD is 0, we want to keep the same angle

            // We dont want any extra rotation when angle CBD is 0 degrees or 90
            // degrees Just to simplify implementation, I'm going to do a
            // triangle
            //
            // df*45  -              /  \
            //                    /        \
            //                 /              \
            //  0     -     /                    \
            //
            //             |          |           |
            //            0 deg    45 deg       90 deg
            //
            // df is angle dampen factor
            // y axis represents max angle dampen in terms of degrees
            // x axis is the angle CBD

            // Angle CBD
            double half_reflect_angle =
                intersect_pt_reflection_unit_vector.angle_between(robot_intersect_pt_unit_vector);
            double direction =
                robot_intersect_pt_unit_vector.cross(intersect_pt_reflection_unit_vector);
            double extra_rotation_angle = -sign(direction) * half_reflect_angle;
            extra_rotation_angle =
                std::min(extra_rotation_angle, M_PI_2 - extra_rotation_angle) * dampen_angle_coeff;

            intersect_pt_reflection_unit_vector =
                intersect_pt_reflection_unit_vector.rotate(extra_rotation_angle);

            out_new_vel = intersect_pt_reflection_unit_vector * ball.get_vel().mag();

            return true;
        }

        return false;
    };

    bool bounce_found = false;
    bounce_found |= find_end_vel(yellow_robots);
    bounce_found |= find_end_vel(blue_robots);

    return bounce_found;
}

bool BallBounce::ball_in_robot(const KalmanBall& ball, const WorldRobot& robot) {
    rj_geometry::Point next_pos = ball.get_pos() + ball.get_vel() * PARAM_vision_loop_dt;

    return (robot.get_pos() - next_pos).mag() < kRobotRadius + kBallRadius;
}

std::vector<rj_geometry::Point> BallBounce::possible_ball_intersection_pts(const KalmanBall& ball,
                                                                          const WorldRobot& robot) {
    // http://mathworld.wolfram.com/Circle-LineIntersection.html

    std::vector<rj_geometry::Point> out;

    // ball_pos is the ball pos in robot centered coordinates
    // ball_vel is the ball vel vector in robot centered coordinates
    // We really just want a line in the direction of ball vel motion
    rj_geometry::Point ball_pos = ball.get_pos() - robot.get_pos();
    rj_geometry::Point ball_vel = ball.get_pos() + ball.get_vel() - robot.get_pos();

    // Magnitude of the line
    rj_geometry::Point d = ball_vel - ball_pos;
    double dr = d.mag();
    // Determinant
    double det = ball_pos.x() * ball_vel.y() - ball_pos.y() * ball_vel.x();
    // Assume that two spheres intersection, is similar to the addition of their
    // radius and a point
    double r = kRobotRadius + kBallRadius;

    // If the ball really isn't moving, just assume no intersection
    // since the math will go to inf
    if (abs(dr) < 1e-5) {
        return out;
    }

    double x1 = det * d.y() + sign(d.y()) * d.x() * sqrt(r * r * dr * dr - det * det);
    x1 /= dr * dr;
    x1 += robot.get_pos().x();

    double y1 = -det * d.x() + abs(d.y()) * d.x() * sqrt(r * r * dr * dr - det * det);
    y1 /= dr * dr;
    y1 += robot.get_pos().y();

    double x2 = det * d.y() - sign(d.y()) * d.x() * sqrt(r * r * dr * dr - det * det);
    x2 /= dr * dr;
    x2 += robot.get_pos().x();

    double y2 = -det * d.x() - abs(d.y()) * sqrt(r * r * dr * dr - det * det);
    y2 /= dr * dr;
    y2 += robot.get_pos().y();

    rj_geometry::Point pt1 = rj_geometry::Point(x1, y1);
    rj_geometry::Point pt2 = rj_geometry::Point(x2, y2);

    double delta = r * r * dr * dr - det * det;

    // Add the actual intersection points to the list

    // Tagent
    if (delta == 0) {
        out.push_back(pt1);
    }
    // Two intersection points
    else {
        out.push_back(pt1);
        out.push_back(pt2);
    }

    return out;
}
}  // namespace vision_filter

redpajama_set_name: RedPajamaGithub


text:
[email protected]altourismacademy.co.uk
Sandy beaches, beautiful fishing hamlets, tiny pebbled coves, stunning moors and rural landscapes, it's little wonder this region is so popular.
Our South West region starts in South Devon just west of Exeter and runs around the coast to north of Bristol; encompassing Cornwall, North Devon and Somerset.
The South West region has been made popular by numerous films, TV programmes and books, drawn by the romantic landscapes and quaint fishing villages. You'll find plenty here to entice and explore on a coastal break.
If you're looking for activities, this is the perfect destination; its unique position and variety of landscapes make it an ideal place for outdoor pursuits, there's a huge range of sports and activities.
Walk the spectacular South West Coastal Path which hugs the coastline, perfect for walkers of all levels of fitness. Discover stunning views only visible on foot and take a break at one of the many walker-friendly tourism businesses, giving you the chance to taste the excellent local food and drink.
Surf-ready beaches pull in water sports enthusiasts but are equally suited to water sports novices. If you're looking for things to do on the South West Coast, why not try one of a number of water-based activities from paddle boarding, to coasteering, kite surfing, diving or sailing?
Sandy coves, leisurely coastal trails, mouth-watering fresh crab sandwiches, incredible estuaries and the sunny 'English Riviera' – you'll be captivated by Devon's coastline
With sandy bays, beautiful estuaries, rolling hills and great seafood, visitors to this region should make sure they take a scenic tour along South Devon's shores.
You'll find a rich array of coastal towns, like Teignmouth and Kingsbridge, which surprise and delight visitors with their local charm. Explore the wild landscape of Dartmoor National Park with its craggy moorland and pretty, wooded valleys, and don't miss the sunny coastal resorts of the English Riviera.
Popular for its great views and warm climate, The English Riviera is a collection of four towns, Torquay, Babbacombe, Paignton and Brixham each with their own distinct character. With miles of sandy beaches, a wide range of attractions and a year-round programme of events, there really is something here for every visitor.
Along from Brixham we find the historic town of Dartmouth. Emerging soon after the crusades, Dartmouth quickly became a bustling Port, with ships sailing for the the Crusades by the 12th Century, the arrival of the Mayflower and the Speedwell in 1620, through to being part of the WW2 preparations in the last century. It's also host to the annual Port of Dartmouth Royal Regatta, not to be missed! Take some time out and discover the community nestled around the River Dart.
The South Devon coast is also famous for its excellent, wide variety of seafood. Locally caught and landed at Brixham Harbour, visitors can sample freshly caught seafood, tailored for all budgets from beach-side cafés to celebrity-owned restaurants.
Journey along the relatively unknown and dramatic Exmoor and Somerset coast where moorland, wooded valleys and farmland dominate the horizon
The rural landscape of Exmoor National Park meets the coastline in spectacular fashion providing unique natural features, none more so than at the Valley of the Rocks.
This part of the coast is known for its "Dark Skies" status offering an incredible opportunity to enjoy the night sky in all its glory. On a clear night, you'll be amazed at the number of stars that can be seen, visible year-round.
With numerous walking trails and cycle routes there's plenty to keep you active and this area is particularly popular with horse-riders who can explore 300 miles of bridleways in the National Park.
Along this stretch of coastline you can also explore the towns of Lynton and Lynmouth connected by their unique water-powered cliff railway. The seaside town of Burnham-on-Sea and nearby Brean Down, Somerset, is a photographer's delight with the opportunity to capture superb sunsets alongside a unique Grade II listed lighthouse.
Staycation inspiration! Discover the highlights of the South West coast on this 6-day roadtrip
View Our Itinerary
Getting to the South West
Several trains per day to Exeter (3 hours), Newquay (5 hours) or Penzance (5 hours) from central London.
Many coaches leaving daily from central London to Exeter (4 1/2 hours) and onwards to Newquay (7 1/2 hours)
Available from airports and regionally. Collections from train stations can be arranged.
Englands_Coast_Map_Exhibition_Scale_2019_03 G u e r n s e y & J e r s e y S t M a l o S t M a l o & R o s c o ff C a e n L e H a v r e Z e b r ug g e H o o k o f H o l l a n d Ro t t e r d a m A m s t e r d a m D u n k i r k D i e p p e C a l a i s C h e r b o u r g S OUTH WE S T S OUTH E A S T Y OR K SHIRE NO R TH WE S T NO R THUMBER L AND DURHAM AND NORTH EAST S OUTH C O A S T E A S T C O A S T B o u r n e m o u t h S o u t h a m p t o n L i v e r po o l P o r ts m o u t h and Gosport B r i g h t o n N e w h a v e n D ov e r N o r wi c h L ee d s N e w c a s t l e Teesside International H u m b e r s i d e H u l l L i n c o l n K i n g ' s L y n n B la c k po o l S c a r b o r o u g h A l n wi c k H a r wi c h G a t wi c k S o u t h e n d B r i s t o l M a nc h e s t e r Doncaster Sheffield H e a t h r o w London E a s t M i d l a nd s P o o l e T o r q u a y E x e t e r N e w q u a y P l y m o u t h A i r p o r t P o r t T o w n
Top attractions in the region
South West Coast Path
Powderham Castle
Dartmouth Steam Railway and River Boat
Simply seafood with Mitch Tonks! Try Rockfish Restaurants on your next trip to the South West
EXPLORE THE SPECTACULAR GEMS OF THE SOUTH WEST – AMAZING BEACHES AND RURAL RETREATS
Seafood landed in the South West is varied and fantastically fresh
Two of England's biggest fish markets can be found in Brixham and Plymouth, and a huge variety of seafood is landed along the coast of Devon and Cornwall - you can sample over 40 species. Perfect ocean currents off the southwest coast produce some of the best seafood in the world. Local chefs along the coast create daily specials that honour the freshest of fish. You'll be spoilt for choice.

redpajama_set_name: RedPajamaCommonCrawl


The automobile industry is rapidly evolving and bringing new features for insurers to deal with. But apart from the improvements introduced by car manufacturers there are also many new technologies that can be purchased separately for the car. Some of them can be simply useful and entertaining such as MP3 and DVD players, while others can be more beneficial in terms of security and car insurance.
Now the latter is certainly more interesting since car owners these days are very eager to get their hands on cheap car insurance. And if there are any devices they can fit into their cars to get lower rates they will certainly do it. So which auto devices should you get in order to obtain cheap car insurance?
First and foremost, you should think about equipping your car with proper anti-theft devices, and the more the better. The modern market of security devices is abundant with various mechanisms ranging in construction, price and purpose. However, insurance companies usually prefer giving out generous discounts to those who get advanced devices rather than the cheapest models.
Think of more expensive alarm systems, electronic immobilizers, central locks and other more sophisticated features if you really want to get that discount. However, even the simplest mechanical immobilizers such as the steering wheel bar can be very effective when combined with other security measures. Just don't forget to contact the insurer after equipping your with all these devices to opt for a discount.
Vehicle tracking systems represent the latest thing in the world of vehicle security. The concept of these systems is simple – tracking down the vehicle in real-time via a satellite system such as GPS. Some of these devices can be linked to the car's on-board GPS module while other come as separate modules that the company installs into the car. While these systems are relatively new they have already shown an impressive 90% return rate of all the stolen vehicles equipped with such devices. Needless to say, the insurance company will automatically offer you a discount if you install one of those. However, even the cheapest of such devices costs over $1,000 so it may be not the cheapest thing to consider buying for your car.
The term "smartbox" comes from the British insurers who were among the first to offer the pay-as-you-drive insurance system. The main idea behind this system is somewhat similar to the security tracking system only that the main intent here is to monitor the driving patterns and overall distance driven by the customer in order to offer a personalized rate that reflects only the driving behavior and not any additional factors such as age, education and so on. The system is already being offered by several large insurance companies in the US and they will install one of such "smartboxes" for free if you sign up with a respective policy. Usually, this method offer very affordable car insurance to those who respect traffic rules and drive less than average.
While the majority of important safety features usually come from the factory, you can still take some measures to improve the safety of your vehicle if you feel that it's not as good as it has to be. Seatbelts are the easiest to change and there are many improved seatbelt designs that make the feature more comfortable and safer. Installing seats with head restraints will reduce the risk of neck injury in case of a rear and side collision, so make sure to think about it of that's an option. Also make sure that all the airbags are installed properly and ready to work when necessary. In general, you should look out for more safety features when buying the car if you want to get cheaper car insurance.


Course work is enhanced by the use of TlUA's computer labs and the Kaneko Learning Center. Specially designed computer learning software is available to supplement classroom work and textbook material, and students are offered opportunities to practice spoken English during the evening tutoring sessions.
American Studies Program (ASP) students also take elective courses from specific academic disciplines, accompanied by appropriate Applied English courses. The Applied English courses are closely coordinated with the elective courses. As a result of on-going consultation among content and language professors, students simultaneously improve their command of English and strengthen their understanding of subject matter.
The fall semester offers an opportunity for ASP students to enroll in regular WU courses. Students who have demonstrated sufficient proficiency in English take subject area WU courses for credit at the 100 and 200 level. All ASP students have the opportunity to take other WU courses, such as exercise science activity classes, some art and music classes and other special classes related to cultural studies. Some ASP students also have the chance to study in joint courses taught by both Willamette and TIUA faculty and composed of a mixture of students from TIU and Willamette.
In the ASP, students receive personal attention from highly qualified faculty members. This individualized approach enhances learning in an intellectually challenging atmosphere, while it increases cross-cultural understanding.
Credits earned during the American Studies Program are applied toward the students' degree programs at TIU (Japan). This important feature enables students to graduate within the normal four-year period, while they augment their university experience with a year of study abroad.
Because TIUA believes strongly in the development of both academic and personal skills, students are encouraged to seek new and rewarding educational experiences in their studies and outside the classroom. Cocurricular activities and the development of friendships are viewed as important elements of the university experience, both for their contribution to increased cross-cultural awareness and as opportunities for the practical application of academic skills.
ASP students necessarily spend a great deal of their time studying, but they are also encouraged to take active roles in many campus and community activities. The ASP provides opportunities to students to experience a broad spectrum of learning and living, and the university staff and administration continue to design and coordinate new programs and activities to make this possible.
Throughout their stay, ASP students are fully students of Willamette and, as such, they are provided maximum exposure to Willamette University faculty, students, facilities, and services. ASP students have ready access to WU's library, learning centers, physical education facilities, student health center, and many activity programs that enhance their study of English and other subjects.


text:
Teaching Note | HBS Case Collection | May 2017
The CRISPR-Cas9 Quarrel
by Richard G. Hamermesh and Matthew G. Preble
Teaching Note for HBS No. 817-020.
Language: English Format: Print 13 pages Purchase
Hamermesh, Richard G., and Matthew G. Preble. "The CRISPR-Cas9 Quarrel." Harvard Business School Teaching Note 817-124, May 2017.
Richard G. Hamermesh
Senior Fellow, MBA Class of 1961 Professor of Management Practice, Retired
Case | HBS Case Collection | December 2018 (Revised June 2019)
Wolfgang Puck: Setting the Table for the Future
Boris Groysberg and Matthew G. Preble
Chef Wolfgang Puck oversees a disparate business empire that includes fine dining restaurants, a catering business, and various licensed products that run from cookware, to soup, to fast-casual restaurants. His businesses activities are divided among three separate entities—Wolfgang Puck Fine Dining Group, Wolfgang Puck Catering, and Wolfgang Puck Worldwide—that share some formal and informal linkages. But the key person holding this all together is Wolfgang Puck himself. Now in his late 60s, Puck wonders what he needs to formalize—in terms of systems, processes, and management—to ensure that his different businesses will endure long after he is no longer involved in the day-to-day management of these three businesses.
Keywords: Brands and Branding; Growth and Development; Management Systems; Business Processes; Leadership; Transition; Food and Beverage Industry; Consumer Products Industry;
Groysberg, Boris, and Matthew G. Preble. "Wolfgang Puck: Setting the Table for the Future." Harvard Business School Case 419-001, December 2018. (Revised June 2019.) View Details
Case | HBS Case Collection | April 2019 (Revised June 2019)
Jeffrey F. Rayport, Susie L. Ma and Matthew G. Preble
In 2016 Niraj Shah and Steve Conine, founders of online home goods retailer Wayfair, are faced with a decision about how to improve user experience on their e-commerce sites. A key driver of consumer interest and conversion to purchase in the home category is visual imagery, which has traditionally been generated not by the retail channel rather than by manufacturers. Catalog retailers, in particular, are famous for visually romancing the category. As a comprehensive offering, Wayfair hosts over seven million SKUs on its site, so it must solve for the lack of visual assets from manufacturers by generating visual assets of its own. Initially, the company embarks on a plan to produce these images using traditional photography studios and professional staffs, but costs mount and throughput is too slow. Seeking a solution, Shah and Conine assess the likelihood of using technology – specifically, high-resolution 3D modeling from low-resolution 2D images – to address the challenge. Resolving this issue is especially pressing, given that Wayfair has just launched private label lines and a host of what it calls lifestyle brands, which require support from high-end visual merchandising. As a consequence, the question of how to provision visual assets becomes a question of how fast Wayfair can grow. This case presents the factors involved in deciding what direction to take – a reliable path using traditional methods or a risky path using bleeding-edge technologies.
Keywords: visual assets; Corporate Entrepreneurship; Decision Making; Business or Company Management; Growth Management; Innovation and Invention; Operations; Strategy; Technology; Retail Industry; Service Industry; United States; Massachusetts;
Rayport, Jeffrey F., Susie L. Ma, and Matthew G. Preble. "Wayfair." Harvard Business School Case 819-045, April 2019. (Revised June 2019.) View Details
Case | HBS Case Collection | December 2018 (Revised May 2019)
Tyson Foods, Inc.
José B. Alvarez, Damien McLoughlin and Matthew G. Preble
Alvarez, José B., Damien McLoughlin, and Matthew G. Preble. "Tyson Foods, Inc." Harvard Business School Case 519-003, December 2018. (Revised May 2019.) View Details


As a fairly new company, we are still in the process of growing and collecting reviews on Tripadvisor. We value every feedback, good or bad because it helps us to grow and to become a better partner for you! We are especially proud that our guests have been giving us an outstanding feedback!
Read what our guests have experienced on their trips with San Blas Frontera. Unless otherwise mentioned, guests did not receive any discounts for writing about us – we believe that voluntary reviews and articles are most valuable. The texts are written in different languages, we highly recommend translating them!
One thing that you will see is that every single one of our trips is different. Since we travel in small groups, we are flexible to adapt the tour to the dynamic of the group and make sure our guests leave us happy and full of unique experiences.
Antonio is a professional photographer who travels the world documenting his extraordinary tours on his blog "Italian Backpacker" and in his books. He travelled with us to Colombia and spend an additional night in a Kuna village close to the Colombian border. His article is full of sharp observations about our culture – if you don't speak Italian, don't forget to translate the text into your language!
Martin travels with his bicycle around the world. So far he has explored Europe, Asia andin July 2018 made his way with us from Panama to Colombia. Read about his experiences during this trip – and how easy it is to take your bike along on our boat trips! This article is also interesting if you plan on spending a few days on our island and returning to Panama City afterwards! A second article gives more tips on how to prepare your bike.
Anna Chris have quit their jobs to travel around the world. In August 2018, they joined our 3-day trip to Colombia. Together with a group of fellow travelers, they followed our invitation to join a Kuna ceremony which certainly was a once-in-a-lifetime experience for them.
You also wrote about us?


Live streaming is an extremely affordable way to reach existing and new audiences. It allows you to broadcast to the world directly from your phone. It takes seconds to set up and is quickly becoming a key part of online marketing.
So, what exactly is live streaming?
Live streaming refers to broadcasting video in real time as it happens through the internet. It has many benefits and can expand your audience and lift your brand credibility.
There is a wide variety of free streaming platforms. To make an impact, find the right one(s) for your target audience. For example, if you're a gaming company, you might benefit from streaming on Twitch and if you're a fashion brand, you might find YouTube and Instagram most beneficial. Some of the bigger events such as MWC or IBC can also offer their own social channels which can be a good way to increase your brand visibility at the show as well as encouraging the conversation with visitors.
Will live streaming damage face-to face attendance?
You could worry that live streaming will decrease the face-to-face interaction; but in fact statistics shows the opposite. You are more likely to increase the number of visitors on your stand.
People attend events for the face-to face communication and experiences. They want to be there in person to network, to learn, to develop valuable contacts and to fully experience the event with all their senses. Live streaming adds an extra dimension to your event marketing and helps your brand go from the traditional storytelling to story living.
Marketing campaigns and promotions, and any on-stand activities, including showcasing products, that you live stream can further encourage show attendees to visit your stand. It can somehow create a feeling of 'missing out' on the fun happening somewhere else, which will motivate people to visit the stand – ultimately giving the exhibitor increased opportunities to sell.
And while live streaming can be great at driving in-person visits to your stand, it can also help you generate a greater external audience by taking your event marketing beyond the walls of the venue. Live streaming allows you to broadcast your stand to people who aren't able to attend whether they are prospects, clients, partners or employees, streaming gives an opportunity to take a live tour of your exhibition stand and makes the audience feel like they are part of the exhibition. And did you know that people who watch your livestream are much more likely to visit you in-person the following year?
Tip: Use large screens to display your live stream. This is especially useful if your exhibition stand gets busy and it becomes more difficult for attendees to clearly see what is going on. Ask show organisers if there are any screens or digital billboards at the show you could use for streaming. This is often possible under the umbrella of Advertising which may involve some investment.
Take your audience on a live virtual tour of your exhibition stand. Make it even more engaging by using 360 video or VR for this!
Share all the fun activities. If you don't have any interactive technology, think outside the box. Do you have a bar on your exhibition stand? Show your audience step by step of how your delicious cocktails are prepared. Are you hosting a competition? Live stream the winners! Do you have speakers or presentations? Broadcast them!
'Follow me around' videos showing not only your exhibition stand but the entire show.
To increase the views, make sure your audience knows when and where the live stream is taking place. If you're streaming on social media platforms, use official show hashtags and location tagging to increase visibility. If you're streaming on your website, make sure you promote it early and often to create conversation and generate buzz around your event and your upcoming live stream.
What happens after my live stream?
Incorporate snippets of your live stream into your nurture campaigns. Send follow up emails to your attendees to remind them of their visit to your exhibition stand. After seeing potentially hundreds of other exhibitors, a video will make it easier for them to remember who you are and it will make your email far more engaging and fun, especially if there's a chance they can spot themselves in the video!


text:
Health & Fitness | October 9, 2020 9:19 am
Dad Grass CBD Joints Are Here to Help You Chill Like a Suburban Dad
They come with a cool stash box, man
Familiar packaging and unexpected contents with Dad Grass.
@dandealy for Dad Grass
By John A. Paradiso
Every morning I wake up to a text from my dad. Barring any significant family news, it begins with a terrible joke. Today's was "Why did the Viking buy an old boat? Because he couldn't a-fjord a new one."
It's this type of corny humor that Los Angeles-based cannabis brand Dad Grass channels in its pre-rolled hemp CBD joints.
Now, to my knowledge, I don't believe my dad consumed any cannabis in his youth. But Dad Grass co-founder Ben Starmer recalls a conversation with his own father, "I was driving to the college dorms with my dad," Starmer tells InsideHook. "He was giving me the 'have fun but not too much fun' talk in the car and as that wound down, he shared that he in fact used to smoke a lot of weed early in his high school days."
That moment of connection, and Starmer's father sharing "these nostalgic stories of 'grass' back in the day," ultimately led Starmer and his friend and fellow Dad Grass co-founder Joshua Katz to launch the CBD cannabis company, with a focus on humor, quality and positivity.
(@dandealy for Dad Grass)
The idea of a pre-rolled CBD joint isn't exactly revolutionary. As recreational marijuana has become legalized in more states across the country, and with the apparent ubiquity of CBD products, you've likely come across sunscreen, or coffee, or dog treats infused with CBD. CBD (or cannabidiol) is one of the many cannabinoids present in cannabis plants. But, unlike THC, the primary psychoactive element of cannabis, CBD doesn't produce a "high." Instead, it can offer a sense of calm as well as pain relief among other potential health benefits. Those are the qualities Katz and Starmer sought out with Dad Grass.
Joshua Katz and Ben Starmer met while working at Levi's in San Francisco and shared a passion for cannabis. But they agreed that "today's weed gets you too damn high," as Katz puts it.
"A friend turned us onto CBD hemp and to be honest I was really skeptical of it," says Starmer. "Hemp in my mind was for braiding necklaces with puka shells in 7th grade." But thanks to the passage of the 2018 Farm Bill, which legalized industrial hemp on the federal level, "a lot of growers began to focus on organic hemp, instead of trying to bolster the THC content," Starmer explains. "They put a lot of care and love into the rest of the cannabinoids, the primary one being CBD."
Katz and Starmer found a product they were actually excited about using. They could roll up joints of quality CBD hemp and indulge in a relaxing, high-less cannabis experience. And while they initially anticipated Dad Grass to be a product for folks in states that hadn't legalized recreational marijuana but where CBD was legal for consumption, they quickly realized that some consumers simply wanted a change of pace. "We've seen just as many people order Dad Grass in states like Illinois, California — places where cannabis is recreationally legal," says Katz. "It's not just necessarily a THC alternative."
Nor is it simply a wellness tool. CBD is often positioned through the lens of a medical treatment or a holistic cure to an ailment. But in the same way that kombucha, which is a fermented tea, provides a healthful dose of probiotics alongside a casual beverage, CBD products can be both curative and casual.
Why NFL Ironman Brett Favre Has Turned to CBD to Ease His Pain
Review: Dawn Is the CBD Pick-Me-Up That Will Turn You Into a Morning Person
Can You Take CBD With You When Traveling for the Holidays?
"Smoking any plant material certainly has its downsides," Katz is quick to point out. "And we're not going to deny that. But it is very evident that smoking is the best way to take the best advantage of the plant. Not to be too hippy dippy about it but it is plant medicine."
But Katz and Starmer wouldn't blame you for being skeptical of CBD as a cure-all.
"Part of the problem with the mainstream CBD world — and part of the hype — is that people have been putting CBD distillate into virtually everything without much concern for the bioavailability of CBD in a given form," Katz explains. "I think that has presented some challenges broadly for the conception of CBD by the wider audiences."
As a result, Dad Grass prioritizes R&R. "This is not just a pill you take with your daily vitamins," Starmer maintains. "It's an experience that enhances moments but also keeps you really clear, happy, and relaxed." And hopefully provides some laughs.
Part of Dad Grass's charm is the company's vintage suburban dad aesthetic. With tasteful merch and a line of tongue-in-cheek decoy stash boxes that mimic boxes of nails or cassette tapes, Katz and Starmer wanted to create a brand with humor. "The weed industry in some ways got so serious," Katz bemoaned. "It doesn't mean that we're not sincere but if you can't have fun when you have a weed brand, you're really hurting."
Plus, it's good marketing. Leading with a playful attitude that invites their customers in, Katz and Starmer have eschewed connoisseurship for accessibility. And they credit that to their experience in the service industry. "If you never meet the people who use your products, I don't think you can have the same empathy and understanding for the people you're serving," Katz explains. "When you come from a background in hospitality, whether you like it or not, you're interacting with those people every day."
That's not to say they don't create a quality product. Dad Grass works with sustainable, certified organic hemp farms growing top-notch CBD hemp. "We want to work with great people who have good practices and are working to ensure that quality," says Katz. All of their products are tested by third-party, independent labs and the results are available for review on their website. Additionally, because Dad Grass uses high-quality hemp in their products, the joints are rolled right before packaging in a heat-sealed wrapper for every pack and a glass "doob tube" for every Classic or Twoobie. "Unopened, the joints can sit for months without worry," shares Starmer. "Once open, we suggest consuming within four weeks for best results."
In addition to making a good product, Katz and Starmer wanted to use Dad Grass to do some good.
"There are so many people that have been unjustly affected by cannabis laws and obviously they are disproportionately people of color," Starmer adds. "And fathers, or people who never got to be fathers, because of this terribly unjust system. That's always been something that we wanted to and needed to address."
Dad Grass's cannabis equity has taken shape in both short-term campaigns like donating a portion of proceeds in a given month to a dedicated organization, and by incorporating a "roll up" program where online customers can round up their order (like you might at your local supermarket) with that money going directly to the Last Prisoner Project, a nonprofit that aims to bring holistic reform to cannabis laws and justice to the cannabis industry.
And while these are serious and significant issues facing the industry, Katz and Starmer are committed to taking the small steps to creating an equitable — and fun — cannabis community. And those steps can be as simple as smoking a little of dad's grass. As Starmer explains to us with a laugh, "Smoking joints does not have to be complicated."
Is This Mild THC Soda the Solution for the Reluctant Weed Smoker?
What California's Cannabis Dispensaries Will Look Like After Coronavirus
California Was Promised a Green Rush. Why Hasn't It Arrived?
Subscribe to Insidehook LA
Recommendations on where to go, what to do, who to see and what to wear throughout the Southland.


On this episode we cover Tournament Shortcuts! These are used in almost every single game, yet many players aren't even aware they are using them.
We additionally have special guest Paul Baranay (L2 judge and all around Harvard superstar) on to help us out!
The JudgeFellas take some time to get caught up on this episode, and L2 James Elliott comes along to join the party (And lend his special brand of Scottish flair).
We get caught up on e-mails, discuss the minor changes in the IPG and MTR, and for some reason make Doctor Who jokes that CJ just doesn't get.
On this episode of JudgeCast the JudgeBros have special guest L3 Ben McDole on to discuss anything and everything about the Tournament Errors section of the IPG! Listen as Ben cleverly ruins all of CJ's good segues (That word is spelled weird).
We also now have judgecast.com for those wanting a direct link to our podcasts without having to find them on mtgcast.com!


text:
const {
  concat,
  propEq,
} = require('ramda');
const path = require('path');
const getModel = require('./routes-ast');
const docsGenerators = require('./generators');
const apidocParser = require('./apidoc-parser');
const {
  printText,
} = require('./generators/tools');
const {
  requireWithMocking,
  loadMocksFile,
} = require('./mock-tools');

const CWD = process.cwd();
const DEFAULT_OUTPUT_FOLDER = path.resolve(CWD, './');

const descriptionText = `Params specification:

  <docs-format> - Output documentation format
  [routes...] - Route path. (example: /path/to/my.router.js)

  Supported docs format:
    apidoc - Simple inline docs for RESTful api
`;

const mergeRouteInfo = (route, routeInfo) => ({
  ...route,
  name: route.name || routeInfo.name,
  description: route.description || routeInfo.description,
  version: route.version || routeInfo.version,
  group: route.group || routeInfo.group,
});

const relateRoutesInfo = (routesInfo, ast) =>
  ast.map((item) => {
    const { method, path: routePath } = item;
    const routeInfo = routesInfo.find(propEq('id', `${method}${routePath}`.toLowerCase()));

    if (!routeInfo) {
      return item;
    }

    return mergeRouteInfo(item, routeInfo);
  });

module.exports = (cli) => {
  cli
    .command('build-docs <docs-format> [routes...]')
    .description(descriptionText)
    .option('-O, --outputPath <outputPath>', 'path to output docs files', DEFAULT_OUTPUT_FOLDER)
    .option('--mockFile <mockFilePath>')
    .option('--autoUpdateVersion', 'Auto update version')
    .option('--verbose', 'verbose mode')
    .action((docsFormat, routes, {
      outputPath,
      verbose,
      autoUpdateVersion,
      mockFile: mockFilePath = null,
    }) => {
      const absoluteOutputPath = path.resolve(CWD, outputPath);
      const absoluteRoutesPaths = routes.map(relativePath => path.resolve(CWD, relativePath));
      const mocks = mockFilePath !== null
        ? loadMocksFile(path.resolve(CWD, mockFilePath))
        : [];

      if (absoluteRoutesPaths.length === 0) {
        printText('No router files found');

        return;
      }

      if (verbose) {
        printText(absoluteRoutesPaths
          .map(line => `(found file) ${line}`)
          .join('\n'));
      }

      const routesInfo = absoluteRoutesPaths
        .map(apidocParser)
        .reduce(concat, []);

      const ast = relateRoutesInfo(routesInfo, absoluteRoutesPaths
        .map(requireWithMocking(mocks))
        .map(getModel)
        .reduce(concat, []));

      docsGenerators[docsFormat]({
        absoluteOutputPath,
        ast,
        autoUpdateVersion,
      });
    });
};


text:
Q: How to return filtered result set in Marklogic? Consider the following xml:-
<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications
      with XML.</description>
   </book>
</catalog>

Now I want to run a search query against this document and want to return a filtered result set (e.g. author name).
One way to do this is:-
xquery version "1.0-ml";
import module namespace search="http://marklogic.com/appservices/search"
at "/Marklogic/appservices/search/search.xqy";

declare variable $options:=
<options xmlns="http://marklogic.com/appservices/search">
<transform-results apply="raw"/>
</options>;

for $x in search:search("", $options)/search:result
return $x//author/text()

But search:search API is first caching the whole result in its cache and then we are finding our desired node with xpath.  I don't want this.  I want search:search API to return only the desired element so that whole result set is not cached in marklogic server. Can anybody tell me please how can I achieve this in Marklogic ?

A: The search:search function doesn't really have a cache of its own, as far as I am aware. You might be happier using search:parse and search:resolve-nodes instead, but the XQuery evaluator will still bring the XML into memory in order to extract the author text.
Getting further away from the search API, you could create a range index on author and use cts:element-values to get its values directly from the index.

A: Puneet, if you're using MarkLogic version 5.0, you can configure something called a "metadata snippet" to get just the elements you want instead of the default snippets.
Here's an example configuration:
<options xmlns="http://marklogic.com/appservices/search">
    <transform-results  apply="metadata-snippet">
        <preferred-elements>
            <element name='ordinal' ns='http://marklogic.com/ns'/>
        </preferred-elements>
    </transform-results>
</options>

And another:
<options xmlns="http://marklogic.com/appservices/search">
    <transform-results  apply="metadata-snippet">
        <preferred-elements>
            <element name='author' ns=''/>
            <element name='title' ns=''/>
        </preferred-elements>
    </transform-results>
</options>

A: Use Cts:search instead of search:search if you want very slim result.
xquery version "1.0-ml";
import module namespace search="http://marklogic.com/appservices/search"
 at "/Marklogic/appservices/search/search.xqy";

  declare variable $options:=
    <options xmlns="http://marklogic.com/appservices/search">
     <grammar xmlns="http://marklogic.com/appservices/search">
      <quotation>"</quotation>
       <implicit>
     <cts:and-query strength="20" xmlns:cts="http://marklogic.com/cts"/>
      </implicit>
     <starter strength="30" apply="grouping" delimiter=")">(</starter>
      <starter strength="40" apply="prefix" element="cts:not-query">- </starter>
  <joiner strength="10" apply="infix" element="cts:or-query"
  tokenize="word">OR</joiner>
 <joiner strength="20" apply="infix" element="cts:and-query"
  tokenize="word">AND</joiner>
 <joiner strength="30" apply="infix" element="cts:near-query"
  tokenize="word">NEAR</joiner>
 <joiner strength="30" apply="near2" element="cts:near-query">NEAR/</joiner>
 <joiner strength="50" apply="constraint">:</joiner>
 <joiner strength="50" apply="constraint" compare="LT"
  tokenize="word">LT</joiner>
 <joiner strength="50" apply="constraint" compare="LE"
  tokenize="word">LE</joiner>
 <joiner strength="50" apply="constraint" compare="GT"
  tokenize="word">GT</joiner>
 <joiner strength="50" apply="constraint" compare="GE"
  tokenize="word">GE</joiner>
 <joiner strength="50" apply="constraint" compare="NE"
  tokenize="word">NE</joiner>
       </grammar>
       <transform-results apply="raw"/>
    </options>;

 let $query := cts:query(cts:parse("in-depth look",$options))
  let $searchresult := cts:search(fn:doc()//book,$query)
  for $each in $searchresult
    return $each/author

This will give you a slim result than the Search:search one should avoid using search:search and go through this route. this give much more flexibility and also slim result set.

redpajama_set_name: RedPajamaStackExchange


450mm x 3400mm in Knitted Polyester.
Car Wash Bali flag is screen/digitally printed on a single side of knitted polyester material and the ink bleeds through the material so the design appears as a mirror image at the other side of the flag.
The flag is suitable for outdoor and indoor use. The product is flag only. Poles and bases are to be purchased separately. Please see below for its accessories.


uuid : 5f0b9153-646e-4325-ae3c-4a4517d171e3 templates_id: 119619 templates_uuid: "142687e4-9ba7-4d43-8707-46c5debe558c" title: "Subcontract Agreement - Create a Subcontractor Contract Online" display_name: "Subcontracting agreement" meta_keywords: "Subcontractor agreement, subcontractor contract, Sub-contracting agreement and Sub contracting contract" description: "
Make sure you do things right if you are the main service provider outsourcing work or when you are a subcontractor by using this legally binding sub-contract agreement. This subcontract agreement form sets out in clear and simple terms the process to be followed for the provision of services through other persons or companies.
What is a subcontracting agreement?
A subcontracting agreement is an agreement between a main contractor and a person or company (a subcontractor) delegating part of the main contractor\302\222s work or obligations. It sets out the subcontracted services, pricing and payment, change control, i.e. procedure for any changes in the services provided and the liability limit for defaulted or defective services.
Do I need a subcontracting agreement?
You need a subcontracting agreement when you want to subcontract all or some of your work and you want to ensure that you are protected if the subcontractor fails to perform or performs poorly. This agreement will help to ensure compliance with the terms of the main contract.
Who will be responsible for any default in the services or defective services?
If any default in the services or defective services appear, the main contractor remains liable to the customer under the main contract for non-performance by the subcontractor even where the customer consents to the subcontracted performance. In this agreement, the main contractor will need to be indemnified by the subcontractor for failure to perform or poor performance.
Will you be able to make changes to the services?
In this agreement, you will be able to make changes to the services such as price and payment, volume and specification of services. You will be able to specify them in the schedules attached to this agreement.
How is the main contractor\302\222s and subcontractor\302\222s liability limited?
The main contractor remains liable for the performance of the main contract, however, if the subcontractor fails to perform their obligations under this agreement, they will be required to compensate any losses incurred. The subcontractor\302\222s liability is limited if the main contractor or its customer fails to perform its obligations and it causes delay or prevents sub-contractor from performing their obligations.
How can you terminate a subcontracting agreement?
advice if there is pre-existing technology, IP etc.
This sub-contracting agreement is governed by the law of England and Wales.
" created_timestamp: "2018-10-09 06:33:20.0" modified_timestamp: "2018-10-09 06:33:20.0" active: true created_by: 236 modified_by: 236 dcm_id: 307 url_slug: "Subcontracting-agreement" meta_description: "Prepare\302\240a subcontracting agreement for the provision of services with simple guidance from Rocket Lawyer. If you are the main contractor and you wish to sub-contract all or a portion of your work, try this\302\240sub-contract agreement for free.\302\240\302\240" time_to_complete: "20 minutes"
A subcontracting agreement is an agreement between a main contractor and a person or company (a subcontractor) delegating part of the main contractor's work or obligations. It sets out the subcontracted services, pricing and payment, change control, i.e. procedure for any changes in the services provided and the liability limit for defaulted or defective services.
How is the main contractor's and subcontractor's liability limited?
The main contractor remains liable for the performance of the main contract, however, if the subcontractor fails to perform their obligations under this agreement, they will be required to compensate any losses incurred. The subcontractor's liability is limited if the main contractor or its customer fails to perform its obligations and it causes delay or prevents sub-contractor from performing their obligations.
More than just a Subcontracting agreement template, our step-by-step interview and guidance makes it easy to create your document.
Easily create online, download, print and sign your free Subcontracting agreement in minutes.
This document is also sometimes called: Subcontractor agreement, subcontractor contract, Sub-contracting agreement and Sub contracting contract.


Central Manufacturing Technology Institute, Bengaluru and National Institute of Technology Karnataka, Surathkal, have collaboratively launched a TWO year M.Tech programme on "Design & Precision Engineering" in August 2013.
The first and second semester of the course will be conducted at NITK, Surathkal, wherein CMTI scientists also deliver lectures as adjunct faculties.
The third and fourth semester of the course consists of individual project work, which will be carried out at CMTI under the guidance of scientists.
Central Manufacturing Technology Institute, Bengaluru and National Institute of Technology Warangal have collaboratively launched a TWO year M.Tech programme on "Additive Manufacturing Technology" in August 2014.
The first and second semester of the course will be conducted at NIT, Warangal, wherein CMTI scientists also deliver lectures as adjunct faculties.
M.Tech in "Advanced Manufacturing Technology"
Post Graduate Diploma in Advanced Manufacturing Technology (PGDAMT) is a one year (Two Semester) programme in collaboration with Karunya University, Coimbatore. Under this program, students will undergo one semester of theoretical & lab inputs at Karunya University and one semester at CMTI, where they will be trained on typical Manufacturing Industry processes, advanced technologies, Live applied R&D Projects and Industrial visits.
2012-13 batch has completed their course in May 2013 and the students are available for placements.